Raspberry Pi2: flv → m4a 変換パフォーマンス

昨日の続きの Raspberry 上の Raspbian ですが、録音できることが確認できたので、本日はタイマーによる自動録音と FLV to M4A 変換速度を試してみました。

テスト環境

昨日と同じく、Raspbian をでテスト中。
SDメモリには、400MB くらい空き容量がありますが、SDメモリの摩耗を考えると、このメモリ容量での運用は無理!

タイマー録音

タイマー録音は、cron によって起動して、終了時刻指定で録音停止。

< crontab >
# m h  dom mon dow   command
0    13    22    9    *    /home/pi/bin/radiko.sh TBS 15:30  # 9/22のたまむすびをワンショット録音

昨日短時間録音で成功していたので、あまり心配していませんでしたが、成功。USBラジオ録音では、最大連続録音時間が存在するものがあるので、過信は禁物。

FLV to M4A フォーマット変換

Radiko の flv ファイルは AACフォーマットをそのままFLVに包んだ形式なので、ffmpeg コマンドで flv 部分を削除してしまえば(-acodec copy オプション)、ほんの数秒で AAC形式に変換できるのですが、iTunes や iPad で再生しようとすると、タイムスタンプが 2倍というか 1/2 というか、になってしまうので、一旦停止した後、ポーズ解除すると再生位置がずれてしまいます。(PCで再生する分には問題ない。)

そのため私は面倒ですが、ffmpeg の変換モードで、再度タイムインデックスを付け直しています。また、iTunes で録音日時が読み取れるように、m4aファイル生成時刻を刻印するようにしています。

結果として、次のコマンドで変換しています。変数の所は、入力ファイル、出力ファイル名など。

ffmpeg -loglevel quiet -y -i ${radiko_flv} -timestamp now -ab 46k -ar 48k -strict experimental -acodec aac ${m4a_output}/${m4a_file}.m4a

2時間半番組の TBS たまむすび を変換してみたところ、約37分で完了。(ffmpeg version 0.8.17-6:0.8.17-1+rpi1)
変換以外に何もジョブが動いていないホストですからね。約4.5倍の変換効率なので悪くない。よーいどんでスタートした、Pentium III 1GHz の マシン(これも比較的負荷が低いホスト)での結果は、「今日の放送に関しては」30分ちょうどで変換終了(ffmpeg version 2.8 )。ffmpeg 2.7.4 では36〜37分掛かっていたんですけど、たまたま昨日 ver.2.8にアップデートして10%以上時間短縮。Pentium3 マシンに関しては、さらに MMX/SSE を有効にして再ビルドすると、26分でで変換完了。一応拡張命令の効果がある?
全くアーキテクチャが異なるCPUなのですが、周波数相応の差?

そして、このサーバー(Celeron 1.2GHz / ffmpeg ver. 2.7.4)は、バックグランドで様々なジョブが動いているためか 約54分掛かりました。周波数が低いPentium3 1GHzにも木っ端微塵の敗北。Celeronだから?というよりも他のジョブの影響だと思いますけどね。長いときは1時間20分くらいかかっています。

2015/09/23 追記:参考までに、 Athlon64 x2 3800+ 64bit FreeBSD 10.2 で変換すると、同じ2時間半のFLVファイルを6分で変換完了。低消費電力が特徴のRaspberry Pi2 との比較にAthlon64 を持ち出すとは、我ながら大人げない。

BRORDCOM CPUがどの程度発熱するかが一番気になりましたけど、ちょっと暑くなる程度で、これならヒートシンクは不要です。また、赤LEDが消灯する事もありませんでしたのでCPU を酷使したからといって電源容量が足りなくなる事は無さそう。電源容量に影響があるのは、USB ポートにデバイスを接続したときだけのようです。

コメントを残す