2017-01-30 70 views
1

我需要一種方法從具有多個音頻軌道的MKV文件中獲取語言代碼。從多個音軌的MKV文件中獲取語言代碼的最優雅方式是什麼?

ffmpeg產生輸出,然後我可以過濾使用正則表達式,但它似乎不是很優雅:

$ ffmpeg -i file.mkv 2>&1 | grep Audio 
Stream #0:1(eng): Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s (default) 
Stream #0:2(nar): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s (default) 

mediainfo已提取的語言信息,但在有多個音軌文件的能力,它加到代碼成一個字符串:

$ mediainfo file.mkv --inform="Audio;%Language%" 
ennar 

是否有工具或命令將返回一個更好的方式爲多個音軌語言代碼,或者一個工具,它可以讓我指定軌道號的nd只返回該曲目的語言代碼?

回答

0

運行此ffprobe命令

ffprobe in.mp4 -show_entries stream=index:stream_tags=language -select_streams a -v 0 -of compact=p=0:nk=1 

將產生此輸出

1|eng 
2|deu 
3|eng 
4|eng 
5|fre 

當第一字段是絕對流索引即計數所有類型的V/A/S和是0爲基礎的。

ffprobe in.mp4 -show_entries stream=index:stream_tags=language -select_streams a:2 -v 0 -of compact=p=0:nk=1 

只會顯示第三個音頻流。

ffprobe in.mp4 -show_entries stream=index:stream_tags=language -select_streams 2 -v 0 -of compact=p=0:nk=1 

將只顯示第三個流,無論它是哪種類型。

+0

謝謝!有沒有一種方法可以指定曲目編號並只接收該曲目的語言代碼? – WackGet

+0

剛剛看到上面的評論。是的,對於第三音頻流選擇「-select_streams a:2」,對於第六個流選擇「選擇流5」(無論是哪種類型) – Mulvya

相關問題