내 작품에 사용할 사운드 파일이 포함된 폴더가 있습니다. 이 폴더 목록을 스프레드시트에서 사용할 수 있는 것으로 변환하고 싶습니다. 결과에 파일 이름, 사운드 길이, 파일 크기 등이 포함되기를 원합니다. 이것이 어떻게 달성될 수 있습니까?
답변1
exiftool
대부분의 파일 유형에서 메타데이터를 추출하고 이를 csv로 형식화할 수 있으므로 이 방법을 권장합니다 .
exiftool -csv -FileSize -Duration -- *.opus > list.csv
하지만 적어도 내 버전은 exiftool
opus 파일에서 기간 추출을 지원하지 않는 것 같습니다. @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 형식으로 모든 것을 출력하고 형식을 다시 지정하도록 지시할 수도 있습니다 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