
Я хотел бы внести несколько изменений в видеофайлы одновременно.
Мне нужно добавить фрагменты видео вступление и окончание к входному видео. Это означает объединение 3 видео. Мне нужно добавить наложенное изображение к входному видео (второй сегмент) и только это. Как мне объединить их в одну строку?
Мне удалось сделать это в два этапа. Сначала наложение:
ffmpeg -i input.mkv -i image.png -filter_complex overlay=main_w-overlay_w-0:0 output_file.mkv
Затем слияние:
ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv
решение1
Мы можем использовать временное наименование [v1]
для выходных данных, а overlay=main_w-overlay_w-0:0
затем использовать их [v1]
в качестве входных данных для concat
фильтра:
ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -i image.png -filter_complex "[1:v][3:v]overlay=main_w-overlay_w-0:0[v1];[0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv
- Следующая часть применяет стадию наложения:
[1:v][3:v]overlay=main_w-overlay_w-0:0[v1]
наложенный вывод получает временное имя[v1]
. [0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat
использует[v1]
в качестве входных данныхconcat
(вместо[1:v:0]
).