Как избежать растущей задержки с помощью ffmpeg между звуком и необработанными видеоданными? - PullRequest
3 голосов
/ 12 ноября 2011

Привет всем и спасибо за чтение!

Вот моя проблема: у меня есть программа, передающая необработанные видеокадры на стандартный вывод. Эта программа использует OpenCV для захвата и обработки видео и вывода непосредственно обработанных кадров. Цикл синхронизируется с выбранной частотой кадров. Я использую ffmpeg для чтения со стандартного ввода, и все отлично работает для видео. Но теперь, когда я добавил звук, у меня есть большая проблема: растущая задержка происходит, и мне действительно нужно от нее избавиться. Итак, вот моя идея, но мне очень нужна ваша помощь:

Мне нужно найти способ включить информацию о временной метке в необработанное видео. Чтобы быть понятным для ffmpeg, он должен быть известным контейнером, совместимым с необработанным видео. И тогда мне нужно будет использовать API контейнера и передать его на стандартный вывод в моей программе. Я действительно не знаю, что использовать в джунглях видео форматов и кодеков, и я не знаю, как включить синхронизацию меток времени в ffmpeg ...

Если у кого-то есть идея, мне действительно интересно здесь. Для информации вот командная строка, которую я использую для передачи необработанного видео:

./myprogram | ffmpeg -y -f alsa -i pulse -ac 2  -f rawvideo -vcodec rawvideo -r 24 -s 640x480 -pix_fmt bgr24 -i - -vcodec libx264 -pix_fmt yuv420p -r 24 -f flv -ar 44100 out.flv;

Большое спасибо,

Roland

Ответы [ 2 ]

0 голосов
/ 14 ноября 2011

Самый простой выход - это обрабатывать аудио и видео файлы в сегментах, скажем, сокращать 30 минут видео и аудио.Поскольку потоки десинхронизированы, вы можете управлять им с помощью ffmpeg, см. Руководство здесь или здесь , приятно то, что вам не нужны два файла (потока), поскольку ffmpeg может работатьисточник из того же файла.

После того, как вы выяснили задержку, повторите для следующего сегмента и так далее.

Иногда звук может длиться более 30 минут, например, 33 минуты.Тогда я бы использовал ' Audacity ', чтобы сжать длину обратно до 30 минут до слияния.

0 голосов
/ 13 ноября 2011

Задержка между видео и аудио - старая проблема в мультимедийном пространстве. Не существует серебряной пули для ее решения, но вы можете попробовать использовать разные кодеки (особенно новые, а не от Microsoft). Вы можете найти более низкие задержки, и, для приличной продолжительности видео (1 час), ничего страшного.

...