4

Я хочу соединить два видео в одно. Давайте возьмем два видео с Youtube в качестве примера. Я хочу, чтобы мое окончательное видео имело высоту = высоту первого видео + высота второго видео и ширину = max(ширина первого видео, ширина второго видео). В верхней части воспроизводится первое видео, а в нижней - второе.

Знаете ли вы, как сделать это под Linux, наилучшая возможность при использовании mencoder, ffmpeg или любой другой командной строки?

3 ответа3

3

Это можно сделать с помощью ffmpeg. Если видео одинакового размера:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v]pad=iw:ih*2:0:0[intv];[intv][1:v]overlay=0:H/2[vid]' \
-map [vid] -c:v libx264 -crf 22 -preset veryfast output.mp4

Если они разных размеров (где input1.mp4 имеет более высокое разрешение):

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v]pad=iw:ih*2:0:0[intv];[intv][1:v]overlay=(W-w)/2:H/2[vid]'
-map [vid] -c:v libx264 -crf 22 -preset veryfast output.mp4

Если вы знаете разрешение видео, вы можете получить более хороший результат. Предполагая, что input1.mp4 больше (или, по крайней мере, того же разрешения), а input2.mp4 имеет высоту 360:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v]pad=iw:ih+360:0:0[intv];[intv][1:v]overlay=(W-w)/2:H-360[vid]'
-map [vid] -c:v libx264 -crf 22 -preset veryfast output.mp4
1

Если оба видео имеют одинаковую ширину, вы можете использовать hstack , который быстрее, чем pad + overlay:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v][1:v]hstack[vid]' \
-map [vid] -c:v libx264 -crf 22 -preset veryfast output.mp4
0

Я думаю, что нашел ответ здесь:https://stackoverflow.com/questions/575705/how-can-i-tile-videos-create-a-video-montage. Я подробнее рассмотрю решения, опубликованные в этой теме. ,

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