FFmpeg ресэмплирует звук во время декодирования

У меня есть задача построить декодер, который генерирует ровно 1 необработанный аудиокадр для 1 необработанного видеокадра из закодированного сетевого потока mpegts, чтобы пользователи могли использовать API, вызывая getFrames (), и получать именно эти два кадра.

В настоящее время я читаю с av_read_frame в потоке, декодирую по мере поступления пакетов, аудио или видео; собирать, пока видео пакет не будет достигнут. Проблема, как правило, в том, что перед просмотром видео принимается несколько аудиопакетов.

av_read_frame блокирует, возвращает, когда определенное количество аудиоданных собрано (1152 выборок для mp2); и декодирование этого пакета дает необработанный AVFrame, имеющий длительность T (зависит от частоты дискретизации); в то время как видеокадр обычно имеет длительность больше T (зависит от fps), поэтому перед ним принимается несколько аудиокадров.

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

Какой самый плавный способ синхронизации видео и аудио таким образом?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]