Katakanlah saya punya 3 file video dan 2 file audio: v1.mp4
, v2.mp4
, v3.mp4
, a2.mp3
, a1.mp3
.
Biasanya seseorang ingin "overlay" audio ke video.
Bagaimana jika seseorang benar-benar menginginkan yang berikut ini;
- Memainkan v1, tidak ada audio
- a1 memutar audio, tidak ada video
- Memainkan v2, tidak ada audio
- a2 memutar audio, tidak ada video
- v3 memutar video, tanpa audio
Semua digabungkan dalam satu mp4. Upaya saya gagal total, dengan menggabungkan audio ke video, video rusak, atau waktu penyandian yang lama.
Pada akhirnya saya ingin menyatukan aliran video ini bersama-sama dengan bagian "pengantara" yang kosong dan tidak memiliki video. saya telah mencoba
Filter kompleks dengan
color=black
potongan digabungkan. Bekerja tetapi reencodes dan sangat lambatffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex " color=black:s=1280x720:d=5[s1]; color=black:s=1280x720:d=10[s2]; color=black:s=1280x720:d=15[s3]; [0:v][s1][1:v][s2][2:v][s3]concat=n=6:v=1:a=0[aout]" -map [aout] -y output.mp4
Buat banyak
color=black
mp4 dari awal dan gunakan file gabungan. Video berubah hijau dan mengeluh kerangka waktu.ffmpeg -t 60 -s 640x480 -f rawvideo -pix_fmt rgb24 -r 25 -i /dev/zero empty.mpeg ffmpeg -f concat -i mylist.txt -c copy test.mp4
(daftar pada dasarnya 1.mp4
, empty.mp4
, 2.mp4
, empty.mp4
, 3.mp4
)
Buat sekelompok mp3 hanya dengan keheningan dan menggabungkannya.
ffmpeg -f concat -i mylist.txt -c copy test.mp4
(tetapi daftar saya berisi silence.mp3
file bukan empty.mp4
diantara masing-masing)
ffmpeg -i v1.mp4 -i v2.mp4 -i v3.mp4 -i a2.mp4 -i a1.mp3
Jawaban:
Perintah di bawah ini melakukannya. Ini menciptakan tiga audio hening dan dua stream video hitam dari awal dan kemudian menggabungkannya dengan stream lainnya dua
concat
filter. (dengan asumsi bahwa semua input Anda berdurasi 15 detik).ffmpeg -t 15 -f lavfi -i anullsrc -i a1.mp3 -t 15 -f lavfi -i anullsrc -i a2.mp3 -t 15 -f lavfi -i anullsrc -i v1.mp4 -f lavfi -i color=black:s=1280x720:r=25:d=15 -i v2.mp4 -f lavfi -i color=black:s=1280x720:r=25:d=15 -i v3.mp4 -filter_complex [0:a][1:a][2:a][3:a][4:a]concat=n=5:v=0:a=1[aud];[5:v][6:v][7:v][8:v][9:v]concat=n=5:v=1:a=0[vid] -c:v libx264 -c:a libmp3lame -map [vid] -map [aud] output.mp4
sumber