내 디렉토리에 많은 오디오 파일이 있는데 일부는 128Kbps이고 일부는 더 높습니다.
공간을 절약하기 위해 128Kbps보다 높은 비트 전송률을 128Kbps로 변환하고 싶습니다. 이를 위해 쉘 스크립트를 작성해 보았습니다.
#!/bin/bash
FILES="*.mp3"
for F in $FILES
do
newname=`basename "$F" -smaller.mp3`
ffmpeg -i "$F" -acodec libmp3lame -ac 2 -ab 128k -ar 44100 "$newname.mp3"
done
하지만 이미 128Kbps인 파일도 변환하므로 완료하는 데 더 많은 시간이 걸립니다.
파일의 비트 전송률이 128Kbps보다 높은지 어떻게 확인하고 128Kbps보다 높은 경우에만 128Kbps로 변환할 수 있습니까?
답변1
사용ffprobe
#!/bin/bash
for file in *.mp3
do
brate=$(ffprobe "$file" |& grep -Eo 'bitrate: [0-9]+' | cut -d' ' -f2)
if [[ "$brate" -gt 128 ]]
then
newname=$(basename "$file" -smaller.mp3)
ffmpeg -i "$file" -acodec libmp3lame -ac 2 -ab 128k -ar 44100 "${newname}.mp3"
fi
done