ffmmpegのコマンドライン一覧を見ていてふと目にとまったコマンドラインがあったので試して見ました。
ffmpegのマルチスレッド対応コマンドライン「-threads」
-threadsは、マルチスレッド対応CPUで複数のスレッドを有効にするコマンドです。
シングルコアCPUでは、Pentium4でも殆ど恩恵は無いかもしれませんが、Core 2Duo、Athlon64X2などでは動画変換の速度アップが見込めます。
携帯動画変換君のffmpegコマンドライン一覧 にはこの「-threads」は記載されていないのですが、どうやら携帯動画変換君に搭載されているバージョンのffmpegでも有効なようです。
▲上記のように携帯動画変換君のffmpegコマンドラインの中に「 -threads 2」を挿入します。
動画変換の速度比較
以下、実際にどれくらいの速度アップが出来たか、比較してみました。
O使用PC:Athlon64X2:2.2Ghz
Offmpeg:携帯動画変換君に内包されたもの
Oh.264、Xvidで「 -threads 2」あり、なしの動画変換にかかった時間を比較
Oソース動画はMJPEG、無圧縮PCM、640X480、1分ほどの小さな動画
1.動画部分h.264、音声部分accに動画変換
まずは「 -threads 2」なし、通常の場合
▲CPU使用率48~52%推移、変換にかかった時間61秒
「 -threads 2」あり、マルチCPU対応にしてみた場合
▲CPU使用率58~69%で推移。変換にかかった時間49秒
もう少し効率よく変換してくれる気がしたのでやや残念ですが、それでも動画変換の速度はかなり速くなりました。20%程度の速度アップは期待して良いかと思います。
2.動画部分Xvid、音声mp3に動画変換
動画コーデックにXvid、音声部分にmp3を指定した場合、「 -threads 2」あり、なし共に殆ど変わらない結果に。
▲CPU使用率48~52%推移、変換にかかった時間32秒
CPUの使用率見る限り、携帯動画変換君に内包されたffmpegのXvidはマルチスレッド未対応。
参考リンク:
http://raketta.blogzine.jp/blog/2006/08/ffmpeg_svnr5994.html (リンク切れ)
らけった: FFmpeg SVN-r5994,5996,5998