将包含 opus 文件的目录转换为 CSV 或类似文件?

将包含 opus 文件的目录转换为 CSV 或类似文件?

我有一个包含作品声音文件的文件夹。我想将该文件夹列表转换为可以在电子表格中使用的内容。我希望结果包含文件名、声音长度和文件大小等内容。如何才能做到这一点?

答案1

我建议exiftool这样做,因为它可以从大多数类型的文件中提取元数据并将其格式化为 csv:

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

但至少我的版本exiftool似乎不支持从作品文件中提取持续时间。正如 @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无法一次从多个文件返回信息,因此我们需要为每个文件运行一次调用。

请注意,字段的顺序似乎是固定的。与您是否指定-show_entries format=filename,duration,size或 一样-show_entries format=size,filename,duration,字段始终按filename, duration,size顺序列出。

jq您还可以告诉它以 JSON 格式输出所有内容,并使用和重新设置您想要的字段和顺序的信息格式mlrmlr还可以帮助您将 由 返回的信息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命令中以将输出限制为您感兴趣的字段。

相关内容