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. 따라서 파일당 하나의 호출을 실행해야 합니다.

필드의 순서는 고정된 것으로 나타납니다. -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

관련 정보