2017-01-30 6 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 

есть инструмент или команду, которая будет возвращать языковые коды для нескольких треков в более удобном случае, или инструмент, который позволил бы мне определить номер дорожки A 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' для третьего аудиопотока или' -select_streams 5' для 6-го потока (независимо от типа) – Mulvya

 Смежные вопросы

  • Нет связанных вопросов^_^