iPhone developer: Přehrávání videa
Pokud potřebujete přehrávat video přímo ve vašem zařízení máte několik možností, buď natáhnout video například z youtube a vložít například pouze do UIWebView, nejlepší řešení je ovšem přehrávat video přímo nativně v aplikaci tak, abyste měli k dispozici všechny možnosti jako například ovládací prvky.
Jako první si musíme do projektu přidat MediaPlayer.framework (postup je stejný jako například zde při přidávání Location frameworku – vyberete MoviePlayer.framework). Framework v sobě obsahuje integrované vlastnisti pro práci s médii, začneme jej používat tím, že si framework includujeme do hlavičkového souboru:
1 |
#import <MediaPlayer/MediaPlayer.h> |
Tímto jsme získali možnosti MediaPlayeru a můžeme si vytvořit proměnnou:
1 |
MPMoviePlayerController *moviePlayer; |
Velmi jednoduše můžeme nyní přidat ovládací prvek do layoutu své aplikace:
1 2 3 4 5 6 7 8 9 10 |
//inicializace obsahuje promennou URL, kterou si //naimplementujeme zachvíli. moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; //pridame do aktualniho UIView [self.view addSubview:moviePlayer.view]; //video bude roztazene pres cely UIView ve kterém je vloženo moviePlayer.view.frame = CGRectMake( 0,0, self.view.width, self.view.height ); |
Ovládací prvek je sice vytvořen, ale my si musíme načíst do elementu video. Do projektu si musíme přidat video soubor, který musí být ve formátu .mov, .mp4, .mpv, nebo .3gp. Jiné formáty nejsou podporovány, V našem případě si vytvoříme proměnnou s názvem videa, například:
1 |
NSString *videoFile = @"video.mov"; |
Předpokládá se že v projektu je nalinkován soubor s názvem video.mov.
Nyní můžeme velmi jednoduše vytvořit proměnnou URL, kterou jsme použili při inicializaci a načíst do přehrávače:
1 2 3 |
NSString *urlStr = [[NSBundle mainBundle] pathForResource:videoFile ofType:nil]; NSURL *url = [NSURL fileURLWithPath:urlStr]; |
a video jednoduše spustíme, pozastavíme nebo zrušíme přehrávání příkazy:
1 2 3 |
[moviePlayer play]; [moviePlayer pause]; [moviePlayer stop]; |
Každý z techto příkazů můžeme volat libovolně, pokud existuje proměnná moviePlayer.
Události přehrávání
Samozřejmě existuje možnost, a určitě bude vyžadována, jak odchytit události, které přehrávač vyvolá. Možností moc není, ale nás bude především zajímat dokončení přehrávání aktuálního videa, abychom mohli například spustit video nadcházející:
1 2 3 4 |
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerFinishNotification:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; |
Vytvořili jsme si notifikaci, která nad daným MoviePlayerem hlídá DidFinis (dokončení přehrávání) a po jeho splnění volá funkci moviePlayerFinishNotification, kde si můžeme daný event ošetřit:
1 2 3 4 5 6 |
- (void) moviePlayerFinishNotification: (NSNotification*)notification { //opetovne spusteni videa [moviePlayer play]; } |