Como colocar vídeos no iOS com MPMoviePlayer

No tutorial de hoje veremos como rodar um vídeo em um aplicativo para iOS. Para isso, utilizaremos o framework MoviePlayer. Não me preocuparei com compatibilidade para firmware menor que 3.0 pois não acredito que exista alguma pessoa (que ainda baixe aplicativos) que tem firmware menor que isso.

Por | @reprotector Programação

No tutorial de hoje veremos como rodar um vídeo em um aplicativo para iOS. Para isso, utilizaremos o framework MoviePlayer. Não me preocuparei com compatibilidade para firmware menor que 3.0 pois não acredito que exista alguma pessoa (que ainda baixe aplicativos) que tem firmware menor que isso. Além disso, hoje a Apple não deixa publicar na App Store código que não seja compilado em 4.0 .

Passo 1: Adicionar Framework ao projeto


Para adicionar um framework ao projeto iremos clicar com o botão direito na pasta Frameworks e selecionar Add>Existing Frameworks. Selecione MediaPlayer.framework e clique em Add.
Como colocar vídeos no iOS com MPMoviePlayer


Passo 2: Importar Media Player


Agora que o MediaPlayer framework está adicionado ao projeto podemos iniciar a utilizar os objetos presentes no framework. Para isso, devemos importas nas classes que utilizaremos o framework o cabeçalho de MediaPlayer:
#import 

Agora que incluímos o cabeçalho e o framework em nosso projeto, começaremos a utilizar os objetos.


Passo 3: Implementação


Dentro do framework Media Player existe o MPMoviePlayerController, que como o próprio nome já diz, é o player para tocar vídeos.

Portanto, vamos iniciar instanciando um objeto do tipo MPMovieController e colocando a URL ou endereço do vídeo a ser tocado. Vale lembrar que podemos colocar uma URL pois o iOS faz streaming de áudio e vídeo sem problemas.
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"NomeDoVideo" ofType:@"mp4"]];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];


No nosso exemplo acima imaginamos um vídeo que esteja dentro do Aplicativo, com o seguinte nome: NomeDoVideo.mp4 .

Precisamos saber o que fazer após o término da execução do vídeo, pois podemos ter que retirá-lo da tela, voltar para uma tela de seleção de vídeos, etc. Depende de qual será o aplicativo e qual será sua organização. Para isso, vamos utilizar NSNotifications para notificar o término do vídeo:
[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(moviePlayBackDidFinish:)
    name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];


Em addObjserver utilizamos self pois o método que é chamado está dentro do próprio objeto. Este método é chamado em selector:@selector(moviePlayBackDidFinish:), que é um método que nós iremos criar, ou seja, ele não existe de padrão. Em name está qual é o notification que deverá ser observado para gerar um Notification. Em object colocamos qual é o objeto que está sendo observado.

Estamos prontos para configurar o view que será colocado o vídeo. Precisamos decidir se o vídeo será em full screen ou se rodará em uma porção da tela.

Para configurar o tamanho do view que rodará o vídeo e qual sua posição, utilizaremos o mesmo atributo que utilizamos em vários elementos de UI:
moviePlayer.view.frame = CGRectMake(X, Y, WIDTH, HEIGHT);

X,Y,WIDTH e HEIGHT devem ser substituidos por inteiros.

Caso vá rodar o vídeo em Full Screen, não é necessário configurar o frame do vídeo, pois ele já ocupará a tela toda, partindo de (0,0). Isso será indicado na hora que dermos play no video:

Porém, antes disso temos mais algumas configurações a fazer:
moviePlayer.controlStyle = MPMovieControlStyleNone;
moviePlayer.shouldAutoplay = YES;
[self.view addSubview:moviePlayer.view];
[moviePlayer setFullscreen:NO animated:YES];


Não colocamos nenhum tipo de Controle no nosso Player, mas caso quiséssemos colocar os controler de play/pause, mudar o momento do vídeo, poderíamos utilizar o MPMovieControlStyleEmbedded.
Em ShouldAutoPlay escolhemos se o vídeo iniciará assim que colocarmos ele no view ou não. Caso tivéssemos escolhido NO , deveríamos dar um play manualmente com [moviePlayer play];
Assim como existe o método play dentro de MPMoviePlayerController , temos stop e pause.

Colocamos o view na tela com o AddSubview e selecionamos que ele não é FullScreen e que ele irá “entrar” na tela com uma animação de Fade in.

Agora temos nosso vídeo executando sem problemas :)

Código inteiro do bloco:
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"NomeDoVideo" ofType:@"mp4"]];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
 
// Register to receive a notification when the movie has finished playing.
[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(moviePlayBackDidFinish:)
    name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
 
moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
moviePlayer.shouldAutoplay = YES;
moviePlayer.view.frame = CGRectMake(0, 0, 160, 240);
[self.view addSubview:moviePlayer.view];
[moviePlayer setFullscreen:NO animated:YES];


Dúvidas, Críticas ou Sugestões nos comentários

Mais sobre: iphone, ios, apple
Share Tweet
DESTAQUESRecomendadoMais compartilhados
Comentários
AINDA NÃO SE INSCREVEU?

Vem ver os vídeos legais que
estamos produzindo no Youtube.