Реализация -async 1 в коде C для исправления несинхронизированного звука
Я построил сегментатор, который принимает в качестве входного видео h264 / AAC и сегментирует в соответствии со спецификацией HLS. Исходный код для этого можно увидеть здесь: https://gist.github.com/cpnielsen/f36729c371aac0fe535d
Он реализован как расширение Python, но интересные части находятся в process_video()
функция. Это использует libav
библиотека (альтернативно ffmpeg
) сделать тяжелую работу.
Это работает 95% времени, но мы столкнулись с некоторыми видео, где он производит сегменты с несинхронизированным звуком. Если бы я использовал инструмент командной строки, я мог бы просто добавить -async 1
чтобы исправить это, но как мне реализовать ту же функциональность в моем C-коде?
Я нашел фрагмент кода в avconv_filter.c
(за libav
, не уверен, что ffmpeg
эквивалентно), где они запускают фильтр, но без какой-либо документации трудно понять, как это сделать вне всей модульной установки.
Мне просто нужно:
- Инициируйте правильный фильтр
- Примените его к входу (или к выходу? Не уверен)
- Знайте о любых подводных камнях при использовании фильтра.
Любая помощь приветствуется; пример кода, объяснение фильтра и т. д.