2016-03-28 17 views
5

Dört videoyu bir kılavuza birleştirmek istiyorum. Şu anda satırları birleştirmek için vstack kullanıyorum ve daha sonra sesleri ek olarak iki çıkışı birleştirmek için hstack kullanıyorum.vstack ve hstack ile video ızgarası

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. Ancak dokümantasyon vstack ve hstack kullanarak daha hızlı olduğunu belirtmektedir. Bu iki filtre tek bir işlemle birleştirilebilir mi?

cevap

10

enter image description here

Sen hstack ve vstack filtreleri kullanarak bir komuta hepsini yapabilir.

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 
  • ses audio.mp4 den stream copied yerine gereksiz yeniden kodlanmış olan olacaktır.

Her girişten gelen sesin ayrı bir ses girişi sağlamak yerine birleştirilmesini istiyorsanız, amerge filtresini kullanın. Downmix'e stereo olarak -ac 2 eklenir; aksi takdirde çıktı, kümülatif sayıda ses kanalına sahip olacaktır.

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

Great! Ama bu filtre biraz kafa karıştırıcı görünüyor. Ses girişini çalışamıyorum. Hata mesajına bakın. – MeinAccount

+0

Düzenlenmiş komutu deneyin. – Mulvya

+0

Fevkalade çalışıyor. Teşekkür ederim! – MeinAccount

İlgili konular