![ffmpeg를 사용하여 오디오 파일을 지정된 비트 전송률로 일괄 변환하지만 해당 비트 전송률보다 높은 경우에만 가능](https://linux55.com/image/134547/ffmpeg%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%98%A4%EB%94%94%EC%98%A4%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%A7%80%EC%A0%95%EB%90%9C%20%EB%B9%84%ED%8A%B8%20%EC%A0%84%EC%86%A1%EB%A5%A0%EB%A1%9C%20%EC%9D%BC%EA%B4%84%20%EB%B3%80%ED%99%98%ED%95%98%EC%A7%80%EB%A7%8C%20%ED%95%B4%EB%8B%B9%20%EB%B9%84%ED%8A%B8%20%EC%A0%84%EC%86%A1%EB%A5%A0%EB%B3%B4%EB%8B%A4%20%EB%86%92%EC%9D%80%20%EA%B2%BD%EC%9A%B0%EC%97%90%EB%A7%8C%20%EA%B0%80%EB%8A%A5.png)
내 디렉토리에 많은 오디오 파일이 있는데 일부는 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