ffmpeg có thể làm bất cứ điều gì: D
Giả sử cả hai video có cùng độ phân giải (input1.mp4 sẽ kết thúc ở bên trái, input2.mp4 ở bên phải, điều này sẽ lấy âm thanh từ input1.mp4):
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v]pad=iw*2:ih:0:0[left];[left][1:v]overlay=W/2:0[out]' \
-map [out] -map 0:a -c:a copy \
-c:v libx264 -crf 23 -preset veryfast output.mp4
Đầu tiên, bộ lọc pad lấy video từ input1.mp4 [0:v]
và nhân đôi chiều rộng của nó (thêm một tải màu đen bên phải), tạo ra một đầu ra được gọi [left]
. Sau đó, bộ lọc lớp phủ đặt video từ input2.mp4, [1:v]
qua vùng màu đen bên phải [left]
, tạo đầu ra được gọi [out]
. -map [out] -map 0:a
báo cho ffmpeg sử dụng [out] và âm thanh từ input1.mp4 trong mã hóa cuối cùng. Tất cả phần còn lại của nó là các tùy chọn mã hóa tiêu chuẩn.
Để đạt được hiệu ứng tương tự như hiệu ứng trong video được liên kết trong câu hỏi (vì vậy, một video nhỏ hơn ở bên trái ở góc trên cùng, video lớn hơn ở bên phải), bạn phải biết độ phân giải của video nhỏ hơn. Giả sử nó có chiều rộng 320:
ffmpeg -i input-large.mp4 -i input-small.mp4 -filter_complex \
'[0:v]pad=iw+320:ih:320:0[right];[right][1:v]overlay=0:0[out]' \
-map [out] -map 0:a -c:a copy \
-c:v libx264 -crf 23 -preset veryfast output.mp4