因此,如果我有一个具有以下属性的音频文件:
英语语言
比特率: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的主要开发者。