1

У меня есть javascript, который записывает видео с веб-камеры в виде webm и аудио с микрофона, как wav вместе. Я кодирую эти файлы webm и wave для создания файла mp4 с помощью ffmpeg/avconv. Но я заметил небольшую разницу в длине аудио и видео, что делает вывод несинхронным.

Я попробовал параметр async/asyncts, но я не заметил различий в выводе, все еще не синхронизирован

ffmpeg -async 1 -y -i audio.wav -i  video.webm -vcodec libx264 output.mp4

Я попытался с помощью фильтра области выборки с avconv дал мне ошибку

No such filter: 'areasample'
Error opening filters!

за

avconv -y -i audio.wav -i  video.webm -vcodec libx264 -filter "areasample=asyncts:compensate" output.mp4

Как я могу сделать видео в синхронизации?

Обновить:

У меня длина аудио меньше, чем у видео. Я использую команду ffmpeg -itsoffset -00:00:01 -y -i audio.wav -i video.webm -vcodec libx264 output.mp4 чтобы синхронизировать их. Но я не уверен, что всегда будет разница в 1 сек. Поэтому я ищу решение, которое могло бы управлять этим динамически (добавить смещение для отсутствующей длины звука).

1 ответ1

5

Опция -async помогает, только если у вас есть метки времени в ваших аудио и видео потоках. Я сомневаюсь, что у вас это есть. Вот почему вы не видите никакой разницы в выходе.

Поэтому, вероятно, ваша проблема в том, что видео и аудио имеют разную длительность и время начала. Если это так, вы должны обрезать свой аудио или видео поток (это зависит от того, больше ли аудио или видео).

Вы не указали, какая из них длиннее, а какая не синхронизирована в секундах. Итак, я привел пример. Давайте предположим, что у вас есть аудио рано на 0,5 сек. Тогда вы должны запустить:

ffmpeg -i audio.wav -af "atrim=start=0.5" -i video.webm -vcodec libx264 output.mp4

PS используйте ffmpeg из git или найдите последний пакет для вашей ОС.

Обновление: Ffmpeg не имеет никакой информации о том, какой аудиопакет должен отображаться одновременно с видеокадром. Вы должны использовать некоторый контейнер, который имеет временные метки в потоках, таких как mpegts, а не wav.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .