Ffmpeg'de ses ve video dosyası nasıl birleştirilir


161

Bir ses dosyasını (.wav veya .au formatı) bir video dosyasıyla (.mp4 formatı) birleştirmek istiyorum.

Lütfen bunu nasıl başaracağımı öner. Bu dosyayı yeni .mp4 video dosyasına birleştirmek istiyorum. Bir ffmpeg komutu çok iyi karşılanır.


Burada da yararlı olabilecek iyi bir makale var ... cfc.kizzx2.com/index.php/muxing-audio-and-video-with-ffmpeg
Simon East

Yanıtlar:


260

Ses kodlamasıyla video ve sesin birleştirilmesi

Bu blog girişinden alınmış, ancak yeni sözdizimi için güncellendi , bu örneğe bakın . Etkisi için bir şey olmalı:

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

Burada, video dosyasının henüz bir ses akışı içermediğini ve giriş formatıyla aynı çıktı biçimine (burada, MP4) sahip olmak istediğinizi varsayıyoruz.

Yukarıdaki komut, sesi dönüştürür, çünkü MP4'ler PCM ses akışlarını taşıyamaz. İsterseniz, istediğiniz diğer ses kodeğini kullanabilirsiniz. Daha fazla bilgi için AAC Kodlama Kılavuzuna bakın .

Ses veya video akışınız daha uzunsa, -shortestffmpeg'in bir dosya bittiğinde kodlamayı durdurabilmesi için seçeneği ekleyebilirsiniz .

Sesi yeniden kodlamadan kopyalama

Çıkış kabınız (neredeyse) MKV gibi herhangi bir codec'i işleyebiliyorsa, hem ses hem de video akışlarını kolayca kopyalayabilirsiniz:

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

Ses akışını değiştirme

Giriş videonuz zaten ses içeriyorsa ve değiştirmek istiyorsanız, ffmpeg'e hangi ses akışını alacağını söylemeniz gerekir:

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

Bu mapseçenek ffmpeg'i yalnızca ilk girişten gelen ilk video akışını ve çıkış dosyası için ikinci girişten gelen ilk ses akışını kullanmasını sağlar.


Denedim ama birleşme sırasında ffmpeg donuyor
Sandy

4
mp4 kaplarının wav ses akışlarına sahip olduğunu sanmıyorum. Deneyinffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Luke

1
Bunu kullanıyorum ve orijinal sesi giriş sesinden değiştiriyor. Giriş sesini giriş videosunun sesi ile birleştirmek istersem ne olur?
İkbal Malik

Çok tatlı komut satırları ...
Chandra Nakka 3:14

Harika, ffmpeg -i video.mp4 kullandım -i audio.wav \ -c: v copy -c: aac -sıkı deneysel output.mp4, MP3 dosyasını Wav dosyasıyla birleştirmek için ... => mp4 5 dakika, 30 saniye işlendi ..Teşekkürler
sonida

12

İtibarımla ilk cevaba yorum yazamadığım için, burada bir zeyilname, çünkü web kodlarını kodlarken bu sorunu yaşadım.
Ses akışınız örneğin video akışından daha uzunsa , kesmeniz gerekir, aksi takdirde son video karesini hareketsiz görüntü ve ses akışı olarak alırsınız.

Her iki akışı kesmek için, -i "file.ext" ifadelerinin her birinden önce -ss [hh: mm: ss] -t [ss] komutunu kullanabilirsiniz.
-ss [...] kesmek için başlangıç ​​noktasını tanımlar
-t [...] segmentin uzunluğunu saniye cinsinden tanımlar.

Örnek:

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

4
Sadece -shortestsonunu kesmek için de kullanabilirsiniz .
nyuszika7h

5

-ençli komut satırı (windows + r -> cmd-> enter)

-O zaman ses ve video dosyasının bulunduğu klasörün içine gidin.

bu cmd'yi uygula

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

Enter .... outPutFime.mp4 adlı yeni bir dosya alacak (birleştirilmiş bir ses ve video dosyası)


2
Buradaki komut satırının nasıl kullanılacağını tanımlamak gerçekten gerekli değil. Kullanıcıların bunu çözebileceklerini ima ediyorlar. Özellikle asker FFmpeg'i belirttiğinden beri. Aynı şekilde, -shortestetiket çok şık. @ User136036'nın yanıtından çok daha basit.
Kat

3
Bu her şeyi yeniden kodlayacaktır, ki bu muhtemelen istenen şey değildir.
mivk


'ffmpeg' iç veya dış komut olarak tanınmıyor
UniCoder



1

Mencoder kullanmayı deneyin (Evet, ffmpeg tabanlıdır, ancak asla bilmiyorsunuz). Ben -audiofileargümanı kullanırım . Genelde ffmpeg kullanıyorum, bu yüzden bir tutam tuzla bu tavsiyeye uyun.

Ve eğer Windows kullanıyorsanız, Mediacoder (ne yazık ki artık açık kaynak değil) çalışır ... temel olarak bir çok gnu kodlayıcı ve bir kaç özgür olmayan kod için ön uç.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.