iPhone: воспроизведение аудио и видео одновременно - PullRequest
1 голос
/ 15 июля 2011

Я создаю игровое приложение, в котором мне нужно проигрывать анимационные ролики и соответствующие им звуки (могут отличаться в зависимости от ситуации).У меня есть все видео и звуковые файлы, но я не могу воспроизвести их одновременно.Я использую MPMoviePlayer для видео и AVFoundation Framework для воспроизведения аудио.Есть ли способ запустить оба одновременно?

Для видео:

        MPMoviePlayerViewController *videoController = [[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:[cellDetails objectForKey:@"AVFile"]]] autorelease];
        [self presentMoviePlayerViewControllerAnimated:videoController];

Для звука:

 // Instantiates the AVAudioPlayer object, initializing it with the sound
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: nil];
self.appSoundPlayer = newPlayer;
[newPlayer release];

[appSoundPlayer prepareToPlay];

appSoundPlayer.numberOfLoops = -1;
[appSoundPlayer setVolume: self.soundLevel];
[appSoundPlayer setDelegate: self];
[appSoundPlayer play];

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 июля 2011

Я бы лично пошел по маршруту AVPlayer. Я знаю, что вы, вероятно, хотите использовать MPMoviePlayerViewController и AVAudioPlayer, но если вы просто потратите немного больше времени на AVMutableComposition с AVPlayer, вы можете сделать все, что вы пытаетесь, и даже больше. Это хорошо стоит инвестиций.

Короче говоря, вы настроите AVMutableComposition (который также считается «активом») с треками. Эти треки соответствуют аудио и видео трекам. Дорожки могут быть извлечены из всех или частей других файлов, или вы также можете вставлять пустые части аудио / видео дорожек по своему усмотрению. Вы поместите видео на видеодорожки и любое количество аудиофайлов на отдельные аудиодорожки. Затем вы создаете объект AVPlayer с помощью AVMutableComposition и вызываете сообщение «play». Он выполняет всю синхронизацию для вас очень точно.

Этот пост на самом деле имеет хороший пример кода, но я не уверен, что он все еще работает правильно.

0 голосов
/ 15 июля 2011

Вы можете попробовать использовать AVMutableVideoComposition.Попробуйте взглянуть на эту вещь и, если вам нужна помощь, дайте мне знать.Я бы с радостью помог.

...