从具有多个音轨的 MKV 文件中获取语言代码的最优雅方法是什么?
What's the most elegant way to get the language codes from an MKV file with multiple audio tracks?
我需要一种方法来从具有多个音轨的 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
是否有工具或命令可以更好地 return 多条轨道的语言代码,或者可以让我指定轨道编号和 return 语言代码的工具只跟踪?
运行 这个 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
将仅显示第三个流,无论其类型如何。
我需要一种方法来从具有多个音轨的 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
是否有工具或命令可以更好地 return 多条轨道的语言代码,或者可以让我指定轨道编号和 return 语言代码的工具只跟踪?
运行 这个 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
将仅显示第三个流,无论其类型如何。