2016-03-28 17 views
5

Tôi muốn kết hợp bốn video vào lưới. Hiện tại tôi đang sử dụng vstack để kết hợp các hàng và sau đó là hstack để kết hợp hai đầu ra, cũng như thêm âm thanh.Lưới video với vstack và hstack

ffmpeg -ss 0 -i 1.mp4 -ss 8 -i 3.mp4 -filter_complex vstack left.mp4 
ffmpeg -ss 0 -i 2.mp4 -ss 0 -i 4.mp4 -filter_complex vstack right.mp4 
ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack -i audio.mp4 output.mp4 

It seams possible to do this in one operation using overlay and pad. Tuy nhiên, các tài liệu nói rằng sử dụng vstackhstack là nhanh hơn. Hai bộ lọc này có thể được kết hợp với một hoạt động đơn lẻ không?

Trả lời

10

enter image description here

Bạn có thể làm tất cả trong một lệnh bằng cách sử dụng hstackvstack bộ lọc.

ffmpeg -i top_l.mp4 -i top_r.mp4 -i bottom_l.mp4 -i bottom_r.mp4 -i audio.mp4 \ 
-filter_complex "[0:v][1:v]hstack[t];[2:v][3:v]hstack[b];[t][b]vstack[v]" \ 
-map "[v]" -map 4:a -c:a copy -shortest output.mp4 
  • Âm thanh sẽ stream copied từ audio.mp4 thay vì được cách không cần thiết tái mã hóa.

Nếu bạn muốn âm thanh từ mỗi đầu vào được kết hợp thay vì cung cấp đầu vào âm thanh riêng biệt, hãy sử dụng bộ lọc amerge. -ac 2 được thêm vào downmix to stereo; nếu không, đầu ra sẽ có một số kênh âm thanh tích lũy.

ffmpeg -i top_l.mp4 -i top_r.mp4 -i bottom_l.mp4 -i bottom_r.mp4 -filter_complex \ 
"[0:v][1:v]hstack[t];[2:v][3:v]hstack[b];[t][b]vstack[v]; \ 
[0:a][1:a][2:a][3:a]amerge=inputs=4[a]" \ 
-map "[v]" -map "[a]" -ac 2 -shortest output.mp4 
+0

Tuyệt vời! Nhưng bộ lọc đó có vẻ hơi khó hiểu. Tôi không thể làm cho đầu vào âm thanh hoạt động. Xem câu hỏi cho thông báo lỗi. – MeinAccount

+0

Thử lệnh đã chỉnh sửa. – Mulvya

+0

Hoạt động tuyệt vời. Cảm ơn bạn! – MeinAccount

Các vấn đề liên quan