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.
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.
Yanıtlar:
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, -shortest
ffmpeg'in bir dosya bittiğinde kodlamayı durdurabilmesi için seçeneği ekleyebilirsiniz .
Çı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
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 map
seç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.
ffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
İ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
-shortest
sonunu kesmek için de kullanabilirsiniz .
-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ı)
-shortest
etiket çok şık. @ User136036'nın yanıtından çok daha basit.
Bu benim için çalıştı:
ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
Mencoder kullanmayı deneyin (Evet, ffmpeg tabanlıdır, ancak asla bilmiyorsunuz). Ben -audiofile
argü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ç.