先日、UbuntuをインストールしているEPSON DIRECT Endeavor NP15に、radikoのラジオ録音ができるように設定しました。
数日使ってみましたが、録音した音声ファイルを指定した形式(128kbpsのmp3)に変換するのに時間がかかってしまうことが気になりました。
私が録音している番組は4時間番組や5時間番組のため、番組終了後から始まるffmpegによるファイル変換処理がとても長いのです。
平日13:00~17:00に放送しているGOGOMONZを録音した場合、放送終了後の30~40分でmp3へファイル変換していることがファイルのタイムスタンプから分かりました。
加えて、ファイルサイズは220MBくらいになっています。
HDDやSSDといったストレージが安くなってきたとはいえ、1ファイルが200MBを超えてくると『大きいなあ』と感じます。
音質の劣化をなるべく少なくして、ファイルサイズを小さくするにはどうしたらよいか調べてみました。
ちなみに結論を書いておくと、『変換しないのがベスト』ということになりました。
radikoの配信音質
そもそもradikoの配信音質ってどんな形式なのか調べました。
調べてみると、HE-AAC v2という形式でビットレート48Kbpsということが分かりました。
『分かりました』といっても他の方のブログ等に書かれていた情報ですが。。。
radiko公式にはそういった情報は見つけられなかったので、これらの情報を信じるほかありません。
録音スクリプトを見直しする
使用させていただいている録音スクリプトを見直しします。
スクリプトで行われている録音に関する処理の流れは次のようになっていました。
- /tmpに配信された番組の一時録音ファイルが作成される。ファイル形式は.m4a
- 番組が終了したら/tmpにある一時録音ファイルをffmpegで変換する。
- 変換処理が終了したら一時録音ファイルを削除する。
処理に時間がかかっているのは2の部分です。
一時録音ファイルの変換をしなければパソコンのCPUに負荷をかけることなく、早く録音ファイルを取得することができるはずです。
それにファイル変換をしないので、音質の劣化もありません。
ということで、ffmpegによるファイル変換をせずに、一時録音ファイルをマスタファイルとして保存するようにスクリプトを変更しました。
スクリプトの最後のあたりにある、”/tmp/${channel}_${date}.m4a”と記述されているコードの下にcp -p /tmp/${channel}_${date}.m4a ${outdir}/${PREFIX}_${title}_${date}.m4aを追記しました。
↓のような具合です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# # ffmpeg # ffmpeg \ -loglevel error \ -fflags +discardcorrupt \ -headers "X-Radiko-Authtoken: ${authtoken}" \ -i "${stream_url}" \ -acodec copy \ -vn \ -bsf:a aac_adtstoasc \ -y \ -t ${DURATION} \ "/tmp/${channel}_${date}.m4a" ---- ↓を追記した ---- cp -p /tmp/${channel}_${date}.m4a ${outdir}/${PREFIX}_${title}_${date}.m4a ---- rm -f "/tmp/${channel}_${date}.m4a" 以外はコメントアウトした ---- #ffmpeg -loglevel quiet -y -i "/tmp/${channel}_${date}.m4a" -acodec libmp3lame -ab 128k "${outdir}/${PREFIX}_${title}_${date}.mp3" #mv /tmp/${channel}_${date}.m4a "${outdir}/${PREFIX}_${date}.m4a" #if [ $? = 0 ]; then # cp -p /tmp/${channel}_${date}.m4a ${outdir}/${PREFIX}_${title}_${date}.m4a rm -f "/tmp/${channel}_${date}.m4a" #fi |
録音結果
まずは、音質です。
一時録音ファイルの.m4aはWindows10ならGrooveとかで開くことができます。
聞き比べをしてみると、ffmpegによるmp3変換したものとの音質の違いは分からなかったです。
すくなくともmp3に変換したほうが劣化はしているはず。論理的にはね。
次にファイルサイズの比較です。
一時録音ファイルとffmpegによるmp3変換で録音ファイルサイズがどれくらい違うのか確認してみました。
画像の通り、mp3に変換したもののほうがだいたい3倍ほどファイルサイズが大きくなっています。
一時録音ファイルの.m4aのほうは82MBで4時間番組がこのファイルサイズなら全然OKと思えるファイルサイズです。
ということで、音質、ファイルサイズ、CPU負荷を考えるとffmpegでファイル変換をしないのが個人的にベストです。
なので、このスクリプトで録音をしていこうとおもいます。
コメント