2

所有,
我在 Mac OS X 上有一个 shell 脚本,它使用mdls命令来获取所有媒体文件(mp3、mov、m4v 等)的总比特率元属性。我想将输出与设定的阈值 (XY Kbps) 进行比较,如果媒体文件的比特率超过 XY,则引发一个标志。问题是输出不表示它是 Kbps 还是比特每秒。例如,我在 2 个音频文件 test1.m4a 和 test2.mp3 上运行了 mdls 命令:

   mdls -name kMDItemTotalBitRate test1.m4a   
   Output -> kMDItemTotalBitRate = 249


   mdls -name kMDItemTotalBitRate test2.mp3   
   Output -> kMDItemTotalBitRate = 192000

在检查 iTunes 时,我看到前者的数字是 249 kbps,后者的数字是 192 kbps。如何强制mdls命令仅以比特/秒为单位输出 kMDItemTotalBitRate,以便所有文件的输出一致并消除混淆?

4

1 回答 1

3

正如Ken Thomases在他的评论中正确指出的那样,在使用 Spotlight 属性时,您将受到存储值的 Spotlight 导入器的支配。注意Apple 的 MDItem 文档kMDItemTotalBitRate省略了应该测量原始数值的单位的所有指示。人们可能在逻辑上期望这是 bps,因为 bps 是基本比特率单位,但如果导入器另有决定,则无法将存储的值标准化为 bps。

依赖 Spotlight 的替代方法是使用MediaInfo之类的实用程序(可以使用homebrew安装)分析文件。命令

mediainfo '--Inform=General;%BitRate%' "/path/to/your/media file"

将返回任何支持的媒体文件的比特率,可靠地以 bps 为单位。

于 2012-05-02T12:03:12.253 回答