3

すべて、
ユーザー提供のフォルダー内のすべてのメディア (オーディオ、ビデオ) ファイルを通過し、適切なテキスト ベースのメタデータ レポートを作成するシェル スクリプトがあります。私はMac OS Xを使用しており、Spotlight のmdlsコマンドを使用して関連するすべてのメタデータを取得しています。問題は、すべてのメディア ファイルのレポートに "null" の結果が表示されることがあるということです。スクリプトをもう一度実行すると、うまくいくようです。なぜこれが起こっているのか混乱しています。これは、メタデータ レポートを出力するスクリプトの一部です。

cd "path_to_folder"
while IFS= read -r -d $'\0' file; do
  duration=`mdls -name kMDItemDurationSeconds "$file" | cut -d "=" -f 2 `
  duration=`printf "%.2f" $duration;`
  pixel_height=`mdls -name kMDItemPixelHeight "$file" | cut -d "=" -f 2`
  pixel_width=`mdls -name kMDItemPixelWidth "$file" | cut -d "=" -f 2`
  codec=`mdls -name kMDItemCodecs "$file" | cut -d "=" -f 2`
  temp="$i) [$file]\n- Duration: $duration\n- Dimensions: $pixel_width X $pixel_height pixels\n- Codec: $codec\n"
  metaDataOutput=$metaDataOutput"\n"$temp
  i=$((i + 1))
done < <(find .  \( -iname \*.m4v -o -iname \*.mov -o -iname \*.mp3 -o -iname \*.m4r -o -iname \*.m4a \)  -print0 )

echo -e  "\n[Report]\n"$metaDataOutput  

予想される出力は次のようになります。

1) [./test1.mov]
- デュレーション: 22.03
- 寸法: 480 X 640 ピクセル
- コーデック: ( "H.264" )

2) [./test2.mov]
- デュレーション: 25.03
- 寸法: 480 X 640 ピクセル
- コーデック: ( "H.264" )

ただし、すべてのメディア ファイルの出力が null になる場合があります。

1) [./test1.mov]
- 期間: null
- 寸法: null X null ピクセル
- コーデック: ( null )

2) [./test2.mov]
- 期間: null
- 寸法: null X null ピクセル
- コーデック: ( null )

ここでトリックがありませんか?スクリプトが時々機能し、時々 null を出力するのはなぜですか?

4

1 に答える 1

3

問題は、Spotlight がファイルのインデックスを作成していないことでした。mdimport コマンドを使用して、Spotlight に強制的にフォルダーのインデックスを作成させると、問題は解決しました

于 2012-04-19T20:14:03.373 に答える