私のディレクトリには多くのオーディオファイルがあり、いくつかは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