MPMoviePlayerController воспроизводит видео второй раз - PullRequest
3 голосов
/ 11 января 2010

Мне нужно иметь возможность воспроизводить более одного видео в приложении.

К сожалению, при втором нажатии кнопки воспроизведения видео начинает мигать.

Я использую только этот код для воспроизведения видео

NSURL * url = [[[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource: @ "Movie" ofType: @ "m4v"]] autorelease];

MPMoviePlayerController * mp = [[MPMoviePlayerController alloc] initWithContentURL: url];

mp.movieControlMode = MPMovieControlModeDefault;

[mp play];

moviePlayer = mp;

[выпуск mp];

Может кто-нибудь сказать мне, где может быть проблема? Заранее спасибо!

ОБНОВЛЕНИЕ 1: Похоже, что пример Apple MoviePlayer имеет ту же проблему.

Ответы [ 4 ]

4 голосов
/ 29 января 2010

Вы также можете сделать это, установив начальное время воспроизведения на -1.0 перед вызовом функции воспроизведения

mp.initialPlaybackTime = -1.0;

Поместите этот код перед вызовом метода воспроизведения.

1 голос
/ 11 января 2010

У меня была эта проблема, и я решил ее, используя систему уведомлений для выполнения обратного вызова после завершения воспроизведения MPMoviePlayerController и освобождения там объекта player.

Добавить уведомление перед воспроизведением фильма:

NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease];

MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url];

mp.movieControlMode = MPMovieControlModeDefault;

//***Add this line***
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:mp];

[mp play];

Затем добавьте метод обратного вызова,

-(void)myMovieFinished:(NSNotification*)aNotification
{
    MPMoviePlayerController *moviePlayer = [aNotification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidFinishNotification object:moviePlayer];
    [moviePlayer release];
}
0 голосов
/ 08 апреля 2010

Я также нахожу, что запуск на OS 3.1 или более поздней версии симулятора может быть воспроизведен хорошо. Он не будет мигать. Но когда я добавлю

initialPlaybackTime = -1.0

также будет хорошо играть на OS 3.0.

0 голосов
/ 04 февраля 2010

Похоже, что единственное решение ... сделать приложение для 3.1

...