Дано:
- IP-камера JVC VN-H257;
- Linux-based OS;
- FFmpeg.
Задача:
Собрать аудио- и видео-поток в один файл, т.к. камера не муксирует аудио и видео сама, и раздает их по отдельности (по разным адресам).
Проблема:
FFmpeg по какой-то причине открывает input-стримы по очереди: открывает первый стрим, буферизирует, после этого открывает второй стрим, буферизирует, и только после этого начинает муксировать их, по этой причине получается рассинхронизация аудио/видео ряда в пределах 10-15 секунд.
Вопрос:
Как же заставить FFmpeg открывать все input-стримы одновременно, и только после этого начинать муксировать? Хотелось бы свести рассинхронизацию до минимума, ±1s.
Особенности:
Т.к. камера отдает аудио исключительно в своем проприетарном формате µ-Law с примесью различных данных, то аудио-стрим выдергивается с stdin (с помощью небольшой утилиты вырезаю лишнее, чтобы получить «нормальный» µ-Law) + при муксировании аудио кодируется с помощью libfaac. В связи с этим могут быть дополнительные накладные расходы, и это так же может увеличивать рассинхронизацию. Но этот момент можно опустить.