我的目录中有一堆音频文件,有些是 128Kbps,有些更高。
我想将比特率高于128Kbps的转换为128Kbps以节省空间。我尝试编写一个 shell 脚本来执行此操作:
#!/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