使用 MediaInfo 获取音频信息

使用 MediaInfo 获取音频信息

因此,如果我有一个具有以下属性的音频文件:

英语语言

比特率:1509 kb/s

采样率:48.0 kHz

位深度:24 位

通道:6

格式:DTS

我写了下面的内容来提取这些信息:

MediaInfo "--Output=Audio;%Language/String%, $if(%BitRate%, %BitRate%/1000 kb/s), $if(%SamplingRate%, %SamplingRate% kHz), $if(%BitDepth%, %BitDepth% bits), $if(%"Channel(s)"%, %"Channel(s)"% channels), %Format%" File.mkv

这是我得到的输出:

English,  1509000/1000 kb/s,  48000 kHz,  24 bits, %, 6 channels), DTS

所以我发现这里有 3 个主要问题。它以比特而不是千比特显示。我怎样才能让它除以 1000?问题 2:同样,kHz 也需要除以 1000。第三个问题是,在比特深度之后,我剩下了一个随机的 % 和 ),我认为这与已经包括括号的“通道”有关。

如果有人能帮我解决这个问题,我将不胜感激。这是我第一次使用 CLI 工具,所以我不太擅长。

答案1

MediaInfo 模板功能是一个“概念验证”,用于检查是否有人对此感兴趣,并且它有几个缺陷,包括模板解析器中的错误,即输出中的额外“)”不应该存在。
您还可以使用 MediaInfo 中集成的一些格式,例如在相关时使用 Kb/s 或 Mb/s。

MediaInfo.exe "--Output=Audio;[%Language/String%, ][%BitRate/String%, ][%SamplingRate/String%, ][%BitDepth/String%, ][%"Channel(s)/String"%, ]%Format%" --Language="  Config_Text_ThousandsSeparator;" File.mkv

结果示例:

French, 2185 kb/s, 48.0 kHz, 16 bits, 6 channels, DTS

如果您需要更高级的格式化功能,则需要使用例如 XML 输出,然后使用外部格式化工具(例如 XSLT)对其进行处理。

Jérôme,MediaInfo的主要开发者。

相关内容