2

すべて、すべてのメディア ファイル (mp3、mov、m4v など) の合計ビットレート メタ属性を取得するコマンドを
使用する Mac OS X のシェル スクリプトがあります。mdls出力を設定されたしきい値 (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 で確認したところ、前者が 249kbps、後者が 192kbps でした。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 に答える