Воспроизведение аудио и видео файла mp4 отдельно с использованием AVFoundation Framework - PullRequest
0 голосов
/ 06 июня 2011

Я разработал медиаплеер, используя AVFoundation для iOS. Я использую AVPlayer для воспроизведения аудио-видео файлов (например, файл mp4). Кажется, довольно просто воспроизвести файл, используя AVPlayer, напрямую вызывая API play, pause.

Теперь я хочу разделить аудио и видео и воспроизводить их как отдельные объекты одновременно. Я хочу сделать это, потому что я могу внести некоторые изменения в аудио или видео дорожку, а затем воспроизвести файл.

Я могу разделить их, используя AVAssetTracks, но я не знаю, как воспроизводить треки. Кроме того, я хотел бы воспроизвести две дорожки одновременно, чтобы не возникало проблем с AVSync.

Пожалуйста, объясните мне, как достичь этой цели, то есть аудио и видео рендеринга без проблем AVSync.

спасибо ..

1 Ответ

0 голосов
/ 11 июня 2011

Самый простой способ достичь этого - иметь несколько предметов для игрока.Я хотел бы создать playerItem со всеми дорожками в их первоначальном виде (то есть файл mp4).Затем создайте другой актив, используя AVMutableComposition (подкласс AVAsset).Это позволяет вам помещать в композицию только определенные дорожки (т.е. только звуковую дорожку).Если вы хотите воспроизвести только аудио, запустите playerItem (AVPLayer setCurrentItem :), который имеет изменяемую композицию с дорожкой только аудио.Если вы хотите воспроизвести только видео, запустите playerItem, который имеет изменяемую композицию с дорожкой только для видео.Если вы хотите воспроизвести оба синхронно, запустите playerItem с исходным активом.

Я предполагаю, что вы хотите воспроизводить отредактированные версии синхронно.Для этого вам нужно будет создать еще одну AVMutableComposition и добавить все отредактированные треки.Затем вызовите setCurrentItem: с только что созданным AVMutableComposition.

Если все, что вы пытаетесь сделать, это редактировать различные дорожки, и вам никогда не придется их воспроизводить самостоятельно, вы можете сделать это с помощью одной AVMutableComposition.Просто добавьте аудио и видео AVMutableCompositionTrack и редактируйте до тех пор, пока ваше сердце не наполнится.Они всегда будут воспроизводиться синхронно, независимо от того, насколько вы редактируете их отдельно (при условии, что ваша логика редактирования правильная).Просто убедитесь, что вы не пытаетесь редактировать во время игры.Для этого вы должны создать копию и отредактировать копию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...