кодирование видео для зацикливания? - PullRequest
4 голосов
/ 19 октября 2011

Это в некоторой степени связано с Зацикливание видео с AVFoundation AVPlayer , но на этот вопрос дан ответ. То, чего я пытаюсь достичь, это бесшовное зацикливание с использованием AVPlayer. Существует заметное заикание между циклами с использованием видео в кодировке h264 *, которое по какой-то причине ухудшилось с обновлением до iOS 5. Может ли это быть связано с тем, как кодируются видео, а не с AVPlayer? Цикл запускается уведомлением playerItemDidReachEnd, как описано в ссылке выше.

Спасибо.

* вот команда ffmpeg, которую мы используем для кодирования видео, если это поможет:

ffmpeg -i -y -sameq -vcodec libx264 -vpre hq -crf 20 -an

(да, у файлов нет звука (пока), поэтому -an является преднамеренным.)

1 Ответ

0 голосов
/ 24 января 2013

Как насчет того, чтобы установить количество опорных кадров в 1 и / или b в 0 и / или в профиле в базовую линию?

Одно правдоподобное объяснение:

По умолчанию для декодирования h.264 декодирует все виды видео, оно должно буферизовать некоторые кадры в начале видео. Так что, если вы зацикливаетесь (если перезагружается декодер), возможно, идет буферизация. Вы зацикливаетесь без перезапуска декодера? Декодер получает сброс из-за eos при чтении файла? Если да, можете ли вы предотвратить это, избегая чтения за последним кадром и вызывая условие eos?

Если у вас был более точный контроль (хотя вы и не уверены в этом), вы можете избежать этого одним способом, не передавая заголовок потока (sps / pps) при возврате в цикл?

...