Menggunakan FFMPEG dengan Audio dan Video berdampingan

0

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 lambat

    ffmpeg -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)

MJB
sumber
Video apa yang harus ditampilkan untuk input audio saja? Video hitam, semacam filter visualisasi, dll? Anda perlu menampilkan output konsol lengkap dari ffmpeg -i v1.mp4 -i v2.mp4 -i v3.mp4 -i a2.mp4 -i a1.mp3
llogan
diklarifikasi di atas
MJB
Saya masih tidak mengerti apa yang ingin Anda capai. Anda tidak dapat memiliki "tidak ada video" selama bagian audio saja; Anda membutuhkan semacam placeholder / pengisi video.
llogan

Jawaban:

1

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

Behroozfar
sumber
Anda dapat melewati beberapa anullsrc dan generator warna dan membuat satu saja. Bantalan input sumber dapat digunakan kembali.
Gyan
@Mulvya tetapi berasumsi bahwa durasinya mungkin berbeda, saya tidak dapat menghasilkan satu aliran untuk masing-masing
Behroozfar
memang, mereka bisa berbeda, terima kasih
MJB