Cara menggabungkan file audio dan video dalam ffmpeg

161

Saya ingin menggabungkan file audio (format .wav atau .au) dengan file video (format .mp4).

Tolong sarankan saya bagaimana mencapai ini. Saya ingin menggabungkan file ini ke file video .mp4 baru. Perintah ffmpeg akan sangat disambut.

Sandy
sumber
Ada artikel yang layak di sini yang mungkin bisa membantu juga ... cfc.kizzx2.com/index.php/muxing-audio-and-video-with-ffmpeg
Simon East

Jawaban:

260

Menggabungkan video dan audio, dengan pengodean ulang audio

Lihat contoh ini, diambil dari entri blog ini tetapi diperbarui untuk sintaksis yang lebih baru. Itu harus menjadi sesuatu dengan efek:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

Di sini, kami mengasumsikan bahwa file video belum mengandung aliran audio apa pun, dan Anda ingin memiliki format output yang sama (di sini, MP4) sebagai format input.

Perintah di atas mentranskode audio, karena MP4 tidak dapat membawa stream audio PCM. Anda dapat menggunakan codec audio lain yang diinginkan jika diinginkan. Lihat Panduan Pengkodean AAC untuk info lebih lanjut.

Jika aliran audio atau video Anda lebih lama, Anda dapat menambahkan -shortestopsi sehingga ffmpeg akan berhenti melakukan pengkodean setelah satu file berakhir.

Menyalin audio tanpa pengodean ulang

Jika wadah keluaran Anda dapat menangani (hampir) codec apa pun - seperti MKV - maka Anda cukup menyalin streaming audio dan video:

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

Mengganti aliran audio

Jika video input Anda sudah mengandung audio, dan Anda ingin menggantinya, Anda harus memberi tahu ffmpeg aliran audio mana yang akan diambil:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental \
-map 0:v:0 -map 1:a:0 output.mp4

The mappilihan membuat ffmpeg hanya menggunakan aliran video pertama dari input pertama dan stream audio pertama dari input kedua untuk file output.

Patrick Georgi
sumber
Saya mencobanya tetapi ffmpeg membeku saat penggabungan
Sandy
4
Saya tidak berpikir wadah mp4 dapat memiliki aliran audio wav. Cobaffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Luke
1
Saya menggunakan ini dan itu mengganti audio asli dari audio input. Bagaimana jika saya ingin menggabungkan audio input dengan audio input video?
Iqbal Malik
Baris perintah yang sangat manis ...
Chandra Nakka
Hebat, saya menggunakan ffmpeg -i video.mp4 -i audio.wav \ -c: v copy -c: aac-output eksperimental yang ketat.mp4 untuk menggabungkan MP3 dengan file Wav ... => mp4 5 menit, dihasilkan 30 detik ..Terima kasih
sonida
12

Karena saya tidak diperbolehkan menulis komentar pada jawaban pertama dengan reputasi saya, sebuah tambahan di sini, karena saya mempunyai masalah ini ketika menyandikan webms.
Jika aliran audio Anda misalnya lebih panjang dari aliran video , Anda harus memotongnya atau Anda akan memiliki bingkai video terakhir sebagai gambar diam dan audio berjalan.

Untuk memotong aliran mana pun, Anda dapat menggunakan -ss [hh: mm: ss] -t [ss] sebelum masing-masing dari -i "file.ext".
-ss [...] akan menentukan titik awal untuk memotong
-t [...] akan menentukan panjang segmen dalam detik

Contoh:

ffmpeg.exe -ss 00:00:10  -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4
pengguna136036
sumber
4
Anda juga bisa menggunakannya -shortestuntuk memotong bagian akhirnya.
nyuszika7h
5

-buka perintah promt (windows + r -> cmd-> enter)

-Kemudian pergi ke dalam folder di mana Anda memiliki file audio dan video

terapkan cmd ini

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

Masukkan .... Anda akan mendapatkan file baru bernama outPutFime.mp4 (file gabungan audio dan video)

UniCoder
sumber
2
Ini benar-benar tidak perlu untuk menggambarkan cara menggunakan baris perintah di sini. Ini cukup banyak tersirat bahwa pengguna akan dapat mengetahuinya. Terutama karena penanya ditentukan FFmpeg. Semua sama, -shortesttag ini sangat bagus. Jauh lebih sederhana dari pada jawaban @ user136036.
Kat
3
Ini akan menyandikan ulang semuanya, yang mungkin bukan yang diinginkan.
mivk
'ffmpeg' tidak dikenali sebagai perintah internal atau eksternal,
UniCoder
Anda harus menambahkan ffmpeg ke PATH wikihow.com/Install-FFmpeg-on-Windows
Arete
5

Ini bekerja untuk saya:

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
Ronald
sumber
1
sebagian berfungsi untuk saya, tidak bekerja untuk semua input, beberapa video input yang dihasilkan tetap sama dalam output
Narendra Singh
1

Coba gunakan mencoder (Ya itu berbasis ffmpeg, tetapi Anda tidak pernah tahu). Saya menggunakan -audiofileargumen. Saya biasanya menggunakan ffmpeg, jadi ikuti saran ini dengan sedikit garam.

Dan, jika Anda menggunakan Windows, Mediacoder (bukan open source lagi sayangnya) berfungsi ... itu pada dasarnya sebuah frontend untuk banyak encoders gnu dan beberapa yang tidak bebas.

Wyatt8740
sumber