Bunu, ffmpeg (statik bir yapı indirme) ile çok kolay bir şekilde yapabilirsiniz:
ffmpeg -i input.mp4 -i input.avi -c copy -map 0:v:0 -map 1:a output.mp4
Bu olacak map çıktı dosyasına aşağıdaki akışları:
- ilk girişin ilk video kanalı (
0:v:0
)
- ikinci girişin ses kanalları (
1:a
) - yalnızca ilkini istiyorsanız, kullanın 1:a:0
, vb.
Video ve ses akışları kopyalandı, bu yüzden bu işlem hızlı.
Uyumsuz ses
AVI dosyasının ses akışları için MP3 kullanması durumunda, bir MP4 dosyasıyla eşleştirilemezler. Bu durumda, şunları kullanın:
ffmpeg -i input.mp4 -i input.avi -c:v copy -c:a aac -b:a 192k -map 0:v:0 -map 1:a output.mp4
Bu, 192 kBit / s'de AAC kullanarak ses akışlarını yeniden kodlar; bu, herhangi bir artifakı yeniden kodlamadan fark etmemeniz için yeterince yüksek kalitede olmalıdır.
Veya, MKV'yi hemen hemen tüm kodekleri destekleyen bir çıktı kabı olarak kullanabilirsiniz:
ffmpeg -i input.mp4 -i input.avi -c copy -map 0:v:0 -map 1:a output.mkv
Toplu olarak nasıl çalıştırılır
MP4 ve AVI dosyalarının aynı temel adlara sahip olduğunu ve yalnızca bir kez çalıştırdığınızı varsayarak, bu komutu tüm dosyalarda (örneğin, Bash ile Linux altında) çalıştırmak için, açık bir şekilde bir döngüde kullanabilirsiniz. çıktı dosyalarını da dönüştürmek için):
for f in *.mp4; do
aviFile="${f%%.mp4}.avi" # replace the extension
outputFile="${f%%.mp4}-output.mp4" # create output filename
ffmpeg -i "$f" -i "$aviFile" -c copy -map 0:v:0 -map 1:a "$outputFile"
done
Windows Batch dosya döngüsünde bir komutu nasıl çalıştıracağınıza dair pek çok örnek çevrimiçi olarak bulacaksınız.