MpmoviePlayerController Play видео во второй раз
-
19-09-2019 - |
Вопрос
Мне нужно иметь возможность воспроизвести более одного видео в приложении.
К сожалению, во второй раз, когда я нажимаю на игру, видео кажется мигающим.
Я использую только этот код для воспроизведения.
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 Release];
Кто -нибудь может сказать мне, где может быть проблема? Заранее спасибо!
Обновление 1: Кажется, что яблоко MoviePlayer Пример имеет ту же проблему.
Решение
Вы также можете сделать это, установив начальное время воспроизведения на -1.0, прежде чем вызовать функцию воспроизведения
mp.initialPlaybackTime = -1.0;
Поместите этот код до того, как ваш метод воспроизведения будет вызван.
Другие советы
У меня была эта проблема, и я решил ее, используя систему уведомлений для выполнения обратного вызова после того, как MpmoviePlayerController заканчивает игру и освобождает там объект игрока.
Добавьте уведомление, прежде чем играть в фильм:
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];
}
Это швы, что единственное решение - это ... сделать приложение для 3.1
Я также нахожу запуск на OS 3.1 или более поздней версии Simulator можно хорошо воспроизводить. Это не кажется мигающим. Но когда я добавляю
initialPlaybackTime = -1.0
Это также хорошо сыграет на OS 3.0.