Многократные объекты AVPlayer iOS приводят к потере синхронизации аудио / видео - PullRequest
4 голосов
/ 15 февраля 2011

Я пытался использовать два разных AVQueuePlayer объекта в моем приложении.Первый игрок воспроизводит серию коротких видеоклипов, передаваемых по сети.Второй объект воспроизводит только одно видео, но его длина намного длиннее.Это также транслируется.Я убедился, что все клипы имеют правильную аудио / видео синхронизацию.

Что я заметил, так это то, что если я создаю один AVPlayer объект после предварительного создания другого, аудио / видео синхронизация во втором проигрывателепотерян.Звук воспроизводится между 800 мс - 1500 мс слишком рано.

Я пробовал несколько вещей, включая добавление задержки между очисткой первого игрока и выделением второго игрока, удаление всех вызовов на * 1007.* код и т. д. Ничто из этого не помогает.Очень редко звук будет синхронизирован, но на самом деле это происходит только примерно 1 раз в 30 раз.

Кто-нибудь еще видел такое же поведение?Кто-нибудь знает, как это исправить?

Спасибо всем, кто может помочь!

1 Ответ

3 голосов
/ 01 апреля 2011

Я сам столкнулся с той же проблемой.Я встретил некоторую информацию в документации AVPlayerLayer:

Во время воспроизведения AVPlayer может компенсировать временный сдвиг между своим визуальным выходом и его звуковым выходом на одно или несколько независимо синхронизированных устройств вывода звука, регулируя времясвязанных с ним слоев игрока.Эффекты этих корректировок обычно очень малы;однако клиенты, которые хотят остаться полностью незатронутыми такими настройками, могут пожелать поместить другие слои, для которых важно время, в независимо синхронизированные поддеревья их деревьев слоев.

Вы можете создать произвольное количество слоев игрока с помощью того же AVPlayerобъект.Только последний созданный слой плеера будет отображать видео контент на экране.

К сожалению, я не расшифровал это в реальном коде, но я подумал, что это может помочь вам указать правильное направление,Если вы придумали решение, пожалуйста, опубликуйте его здесь, и я сделаю то же самое.

...