POPSuL
@POPSuL
Программист

Как синхронизировать стримы в FFmpeg?

Дано:
  • IP-камера JVC VN-H257;
  • Linux-based OS;
  • FFmpeg.


Задача:
Собрать аудио- и видео-поток в один файл, т.к. камера не муксирует аудио и видео сама, и раздает их по отдельности (по разным адресам).

Проблема:
FFmpeg по какой-то причине открывает input-стримы по очереди: открывает первый стрим, буферизирует, после этого открывает второй стрим, буферизирует, и только после этого начинает муксировать их, по этой причине получается рассинхронизация аудио/видео ряда в пределах 10-15 секунд.

Вопрос:
Как же заставить FFmpeg открывать все input-стримы одновременно, и только после этого начинать муксировать? Хотелось бы свести рассинхронизацию до минимума, ±1s.

Особенности:
Т.к. камера отдает аудио исключительно в своем проприетарном формате µ-Law с примесью различных данных, то аудио-стрим выдергивается с stdin (с помощью небольшой утилиты вырезаю лишнее, чтобы получить «нормальный» µ-Law) + при муксировании аудио кодируется с помощью libfaac. В связи с этим могут быть дополнительные накладные расходы, и это так же может увеличивать рассинхронизацию. Но этот момент можно опустить.
  • Вопрос задан
  • 503 просмотра
Пригласить эксперта
Ответы на вопрос 1
@monah_tuk
Попробуйте lzone.de/cheat-sheet/ffmpeg со слов "Correcting Time-Shift" ну и вообще по этой теме погуглить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы