Belirli video ve ses parçalarını yalnızca ffmpeg ile dönüştürün


25

vidui.mkvİçinde 6 parça bulunan bir MKV dosyası ( ) var.

Track 1 - video - xvid - 1920x1080
Track 2 - video - xvid - 720x576
Track 3 - audio -  AAC - 1240kbps - English
Track 4 - audio -  AAC - 648kbps - Spanish
Track 5 - audio -  AAC - 648kbps - Commentary 1
Track 6 - audio -  AAC - 648kbps - Commentary 2

Yukarıdaki dosyayı bir h264 video ve bir AC3 ses ile bir mp4 formatına dönüştürmek istiyorum. Ayrıca parça 1'i (video) ve parça 5'i (ses) dönüştürmek istiyorum.

Kullanırsam

ffmpeg.exe -i vidui.mkv -f mp4 -vcodec libx264 -acodec ac3 -crf 20 -sn -n vidui.mp4

ilk video parçasını ve ilk ses parçasını dönüştürür, ancak yapmak istediğim şey, 1 ve 6 numaralı parçaları dönüştürmektir.

Yanıtlar:


42

Belirli girdi akışlarını seçmek ve bunları çıktınıza eşlemek için bu -mapseçeneği ( tam dokümantasyon ) kullanabilirsiniz.

mapKullanabileceğiniz en basit sözdizimi , girdi dosyası kimliği -map i:snerede ive sher ikisi de ile başlayan akış kimliğidir 0. Senin durumunda bu, parçayı seçtiğimiz anlamına geliyor 0ve 4:

ffmpeg -i vidui.mkv -c:v libx264 -c:a ac3 -crf 20 -map 0:0 -map 0:4 vidui.mp4

Özellikle video, ses veya altyazı parçaları seçmek istiyorsanız, akış belirtecilerini de kullanabilirsiniz :

ffmpeg -i vidui.mkv -c:v libx264 -c:a ac3 -crf 20 -map 0:v:0 -map 0:a:1 vidui.mp4

Burada, 0:v:0ilk video akışı ve 0:a:1ikinci ses akışı.


Bunu dinamik olarak yapmanın bir yolu var mı? Bunu sadece X dilinin ses parçalarına yapmak istediğimi ve ffmpeg'in bunu almasını istediğimi söyle?
Freedo

@Freedo Evet, lütfen belgelere bakın. Örneğin-map 0:m:language:eng
slhck
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.