ffmpeg를 사용하여 오디오 파일을 지정된 비트 전송률로 일괄 변환하지만 해당 비트 전송률보다 높은 경우에만 가능

ffmpeg를 사용하여 오디오 파일을 지정된 비트 전송률로 일괄 변환하지만 해당 비트 전송률보다 높은 경우에만 가능

내 디렉토리에 많은 오디오 파일이 있는데 일부는 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

관련 정보