opusファイルを含むディレクトリをCSVまたは類似のファイルに変換しますか?

opusファイルを含むディレクトリをCSVまたは類似のファイルに変換しますか?

私の作品に使用するサウンドファイルを含むフォルダがあります。このフォルダのリストをスプレッドシートで利用できるものに変換したいと思います。結果にはファイル名、サウンドの長さ、ファイルサイズなどが含まれることを望みます。これはどのように達成できますか?

答え1

exiftoolほとんどのファイルタイプからメタデータを抽出してcsvにフォーマットできるので、この方法をお勧めします。

exiftool -csv -FileSize -Duration -- *.opus > list.csv

しかし、少なくとも私のバージョンはexiftoolopusファイルから期間抽出をサポートしていないようです。 @dodrgが述べたように、ffprobe出力をCSVにフォーマットすることもサポートされています。

{
  echo filename,duration,size
  for file in *.opus; do
  ffprobe -v warning \
          -of csv=p=0 \
          -show_entries format=filename,duration,size \
          -i "$file"
  done
} > list.csv

ただし、これは一度に複数のファイルの情報を返すことができるようには見えないため、はるかに遅くなりますffprobe。したがって、ファイルごとに1つの呼び出しを実行する必要があります。

フィールドの順序は固定されているように見えます。-show_entries format=filename,duration,sizeまたは指定されているかどうかにかかわらず、フィールドは常に、、順にリストさ-show_entries format=size,filename,durationれます。filenamedurationsize

jq必要なフィールドと順序の情報を使用して、すべてのものをJSON形式で出力し、形式を再指定するように指示することもできますmlr。また、mlrから返された情報をから返された情報にexiftoolリンクするのにも役立ちますffprobe

たとえば、

exiftool -csv -- *.opus |
  mlr --csv join --ijson -f <(
    for file in *.opus; do
      ffprobe -v warning -show_format -of json -i "$file"
    done | jq .format) -j SourceFile -l filename > list.csv

目的のフィールドに出力を制限するには、コマンドthen cut -f SourceFile,duration,size,Artistに...を追加します。mlr

関連情報