iPhone: автоматическое воспроизведение видео по очереди, одно за другим - PullRequest
2 голосов
/ 01 апреля 2012

Я создал очень простое приложение видеоплеера в Xcode 4.3.2 У меня есть 3 небольших видео и в моем главном меню у меня есть 3 кнопки. Одна кнопка для каждого видео мой код выглядит так .....

- (IBAction)playMoviePressed1:(id)sender 
{

NSString *path = [[NSBundle mainBundle]
                  pathForResource:@"HomeVideoOne" ofType:@"m4v"];

player = [[MPMoviePlayerViewController alloc]
          initWithContentURL:[NSURL fileURLWithPath:path]];

[self presentMoviePlayerViewControllerAnimated:player];
}

И это повторяется для видео 2 и 3. Я хотел бы иметь четвертую кнопку, которая воспроизводит все 3 видео по порядку, без остановки и необходимости выбора следующего. Это почти как играть главы в фильме по одному.

Вот кикер, я не хочу делать никаких дополнительных видеофайлов, чтобы добавить к размеру проекта. Другими словами, единственный способ достичь своей цели - отредактировать все 3 видео в один файл .m4v и импортировать его в проект. Но это не хорошо, потому что это удваивает размер моего проекта. Я бы хотел, чтобы существующие файлы воспроизводились один за другим без перерыва. Я надеюсь, что я не звучал скучно. Благодарю вас -ANthony

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

В этом случае вам нужно будет использовать более продвинутый API, например AVQueuePlayer вместо базового MPMoviePlayerController. Попробуйте сначала просмотреть документ здесь http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html

0 голосов
/ 01 апреля 2012

Вы всегда можете запустить другое видео, когда оно закончится. Одним из способов является установка пользовательских методов для вызова поведения при создании youMoviePlayerController:

[[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(aMoviePlaybackComplete:)
                   name:MPMoviePlayerPlaybackDidFinishNotification
                 object:youMoviePlayerController];

и затем:

- (void)aMoviePlaybackComplete:(NSNotification*)notification
{
  MPMoviePlayerController *moviePlayerController = [notification object];
  if(urlIndex < yourUrlArray.count){
     NSUrl* myUrl = [yourUrlArray objectAtIndex:urlIndex];
     [moviePlayerController setContentURL:myUrl];
     [moviePlayerController play];
     urlIndex++;
  }
  else{
     [[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:moviePlayerController];

     [moviePlayerController.view removeFromSuperview];
     [moviePlayerController release];
  }
}

Я предполагаю, что yourUrlArray - это предопределенный массив URL-адресов фильмов, которые вы хотите воспроизвести, а urlIndex ведет подсчет текущего воспроизводимого фильма. Конечно, вам придется настроить это под свои нужды.

РЕДАКТИРОВАТЬ- Для локальных файлов вы можете сформировать NSUrl, используя bundle:

NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"];
NSUrl* url = [NSURL fileURLWithPath:moviePath];
[yourUrlArray addObject:url];

и инициализируйте массив url (yourUrlArray), а затем продолжайте как отправлено ранее.

...