Включить звук из оверлея FFmpeg в вывод - PullRequest
0 голосов
/ 07 января 2020

Я использую следующую команду, чтобы объединить два видеофайла вместе, наложив второй в определенный момент в первом файле. В результате получается то, что я хочу, за исключением отсутствия звука из наложенного файла.

ffmpeg.exe -y -hide_banner -ss 00:00:00.067 -i promo.mov -i tag.mov -filter_complex "[1:v]setpts=PTS+6.5/TB[a];[0:v][a]overlay=enable=gte(t\,6.5)[out]" -map [out] -map 0:a -map 1:a -c:v mpeg2video -c:a pcm_s16le -ar 48000 -af loudnorm=I=-20:print_format=summary -preset ultrafast -q:v 0 -t 10 complete.mxf

Без -map 0:a я вообще не получаю звука, но второй -map 1:a не дает не передавать звук из -i tag.mov

Я также пробовал amix, но он объединяет аудио из обоих клипов, начиная с самого начала, и я хочу, чтобы звук из второго файла начинался, когда этот файл начинает накладываться.

Было бы также полезно, чтобы я мог сделать звук из первого клипа ниже во время наложения.

1 Ответ

1 голос
/ 07 января 2020

amix не поддерживает ввод данных посередине, поэтому обходной путь - добавить ведущую тишину. Для этого можно использовать фильтр adelay.

сделать звук первого клипа ниже во время наложения

Это возможно при использовании компрессора боковой цепи, который принимает два входа и уменьшает громкость первого входа на основе громкости второго входа.

Так что используйте,

ffmpeg.exe -y -hide_banner -ss 00:00:00.067 -i promo.mov -i tag.mov -filter_complex "[1:v]setpts=PTS+6.5/TB[1v];[0:v][1v]overlay=enable=gte(t\,6.5)[vout];[1:a]adelay=6.5s,apad,asplit=2[1amix][1aref];[0:a][1aref]sidechaincompress[0asc];[0asc][1amix]amix=inputs=2:duration=first[aout]" -map [vout] -map [aout] -c:v mpeg2video -c:a pcm_s16le -ar 48000 -af loudnorm=I=-20:print_format=summary -preset ultrafast -q:v 0 -t 10 complete.mxf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...