新PCをCore i7で組んだ事で一番気になるのが動画エンコードの速度。
と言う事で手持ちの各種エンコーダーでエンコード速度を測定、比較してみました。
比較した旧マシンはAthlon64X2 3800+(OCして2.4Ghz)、新PCはCore i7920(OCして3.7Ghz)と、クロック数、コア数で単純計算しても約3倍の速度が出るはず。
しかし結果は遥かに速度アップしたエンコーダー及びエンコ条件、2倍弱の速度アップしかしなかったエンコーダーやエンコ条件、実に様々でした。
マルチスレッドを上手く生かせていない設定だと従来機に比較して、やはりエンコ速度のアップは見込めないようです。
が、Corei7はコア数、クロック数のアップだけでなく、メモリ周りも強力な進歩が見られているのでハマった時の実力は10倍近くに昇るかも!?
(10倍以上の差が出るのはSSE系統の処理に差が出ているだけかも)
テストマシン
CPU:Core i7 920 3.7Ghz(177X21)
MB:ASUS P6T Deluxe
MEM:DDR31066 1GB X 3
HT :OFF(下表で()内の数字がONにした場合)
GPU:NVIDIA 9600GT
旧マシン
CPU:Athlon64X2 3800+ 2.4Ghz(240X10)
MB:MSI NVIDIA nForce4 Ultra
MEM:DDR2-3200 1GB X 2
GPU:NVIDIA GeForce 6600GT 128MB GDDR3
旧PCは既に知人に譲っており、計測データは記録・記憶に残っている部分のみになります。
リサイズしないよ編
素材1:SD画質動画
サイズ:640X480
コーデック:MJPEG
時間:4分14秒
映像の中身:アナログTVキャプチャ素材、様々なTVCM
エンコーダー | 設定 | FPS | 時間 (sec) | CPU 使用率(%) | 2.4GHz 換算(fps) | 旧PC (fps) |
VDM+MJPEG | デフォルト | 150~330 | 30 | 15~25 | 164 | |
VDM+huff MT | YUY fast | 60~140 | 67 | 10~15 | 73 | |
VDM+Lagarith MT | YUY | 130~150 | 59 | 20~45 | 83 | |
VDM+Xvid | デフォルト | 140~180 | 48(57) | 47~55 | 102 | 40~55 |
VDM+DivX | デフォルト | 250~340 | 24(25) | 60~80 | 204 | 40~55 |
VDM+x264 | 色々OFF | 300~370 | 22(23) | 40~60 | 223 | |
VDM+x264 | partitionsのみ 有効、他全部無効 | 180~350 | 23(25) | 75~95 | 214 | |
VDM+x264 | defoからnocabac | 100~140 | 60(32) | 100 | 82 | |
Automen(x264) | 最適 | 131 | 71(66) | 50~66 | 84 | |
Automen(x264) | デフォ | 141 | 61(61) | 66~69 | 90 | 50 |
Automen(x264) | 最速 | 180 | 44(55) | 35~42 | 116 | |
FFMpeg(x264) | デフォ | 161 | 48(56) | 55~69 | 103 | 30 |
基本、HT OFF、4スレッドでのエンコード。
カッコ内の数字がHT ONの時。
(青字が変換が速くなった設定)
(赤字は変換が遅くなった設定)
- 注目すべきはDivX。Core i7で素エンコを考えた場合、画質とファイル容量・変換速度のバランスが一番高い。
- x264でCABACやデブロッキングをオフにした設定も凄まじく効率が良い。
Analysisの項目で各種partitionsのみ有効にしてその他の設定をOFF又は低い数値にするとかなり爆速。画質・容量とのバランスを考えながら詰めていくと面白そう。 - 久しぶりにDivXを使ってみたけど、凄まじくマルチスレッド対応しててビックリした。
DivX≒XivDという5~6年前の考えはもう捨てないとヤバイ。 - CPU使用率をみると、マルチスレッド対応と言いながらデュアルコアまでしか対応していないっぽい?モノもチラホラ。
- でも2.4Ghz換算してみるとAutomen(Mencorder)以外は旧PC(Athlon64X22.4Ghz)から3倍近く変換速度アップ。これがメモリ周りのアークテクチャが大幅に改善された効果だろうか。
- と云う事は比較した各コーデックは設計された通りに4コア分のスレッドを使っているのだけれど、まだまだcorei7には余力があると言う感じなのか?良く解んなくなって来た(笑)
(今までP3、Celeron、Athlon64X2、PenMと使用してきて素エンコでの変換速度はCPUの周波数Xコア数にほぼ比例していた(重いフィルタ使うとかなり変わるけど)ので、これは地味に凄いことかもしれない。) - 現状ではHT(ハイパースレッディング)を有効に使うには、何らかの工夫が必要っぽい。素直に各エンコーダーのバージョンアップを待つのも手。
素材2:HD画質動画
サイズ:1440x1080
コーデック:MPEG2
時間:51秒
映像の中身:地デジ素材、スポーツ中継
VDMへはDGIndex等使わず直に読み込み。
エンコーダー | 設定 | FPS | 時間 (sec) | CPU 使用率(%) | 2.4GHz 換算(fps) | 旧PC(fps) |
VDM+Xvid | デフォルト | 20~35 | 63(67) | 47~54 | 15.5 | 4~6 |
VDM+DivX | デフォルト | 60~75 | 23(22) | 80 | 43 | 4~6 |
VDM+x264 | 色々OFF | 70~77 | 20(23) | 48~60 | 48 | |
VDM+x264 | PのみON | 79~81 | 19(24) | 88 | 51 | |
VDM+x264 | defo+nocabac | 29~33 | 48(46) | 100 | 21 | |
Automen(x264) | 最適 | 47(42) | 38(44) | 92~96 | 26 | 12 |
Automen(x264) | normal | 73(67) | 29(32) | 63~73 | 34 | |
Automen(x264) | 最速 | 94(83) | 18(19) | 65~70 | 54 | 27 |
FFMpeg(x264) | デフォ | 67(67) | 24(24) | 80~100(40~55) | 41 | 3~4 |
- やっぱりDivXがXvidより2~3倍速い結果に。
Athlon64x2から比較しても大幅な速度アップ。PCの進歩は恐ろしい。 - x264系のエンコーダもベースライン相当の設定もしくはそれ以下にすればかなり高速でエンコードできる。
- 全体的に地デジ番組のHD録画ファイルを実時間の半分程度でエンコが可能になった。
- FFMpegはBonTsDeMuxなどでm2v形式にすると変換が遅い。3割強速度が落ちて。42fps位。一旦キチンとMPEG2-PS形式へ変換してからのエンコードがお勧め。
- FFMpeg、旧PCではAthlon最適化版、今回はCore2機最適化版を使用した。が、クロック数、コア数を差し引いても5倍以上の速度差。Athlon機への最適化はまだまだだったのかもしれません。
- やはりGeForce 9600GT+ badaboomはCore i7では役に立たないかも。。。
ビデオカードの選択間違えたかな(^_^;
リサイズするよ編
素材:
ソースサイズ:1440x1080
コーデック:MPEG2
時間:1分27秒
映像の中身:地デジ、複数のCM
672x384サイズの各形式に変換
VDMにはDGIndexで読み込み。Avisynthでリサイズ。
(縮小にLanczos使うとどれも75FPS辺りで頭打ちになるのでbicubic使用)
エンコーダー | 設定 | FPS | 時間 (sec) | CPU 使用率(%) | 2.4GHz 換算(fps) | 旧PC(fps) |
VDM+Xvid | デフォルト | 83~88 | 30(32) | 35~45 | 55 | 18~20 |
VDM+DivX | デフォルト | 75~80 | 34(35) | 95~99 | 50 | |
VDM+DivX | DivXでリサイズ | 90~92 | 27(28) | 80~99 | 58 | |
VDM+x264 | 色々OFF | 83~91 | 30(33) | 30~34 | 55 | |
VDM+x264 | PのみON | 83~91 | 30(33) | 30~41 | 55 | |
VDM+x264 | defoからnocaba | 86~91 | 30(33) | 45~75 | 55 | |
Automen(x264) | 最適 | 86 | 31(33) | 41(ほぼ1CPU) | 53 | 32 |
Automen(x264) | normal | 86 | 31(33) | 41(ほぼ1CPU) | 53 | 35 |
Automen(x264) | 最速 | 93 | 28(31) | 31(ほぼ1CPU) | 59 | 37 |
FFMpeg(x264) | デフォ | 93 | 27(31) | 55~59 | 59 |
- Avisynthでのリサイズを加えると、DivXの爆速ぶりが影を潜めてきた。
素エンコで速度が出るよう、徹底的にチューンナップされているのかもしれない。 - マルチスレッドを有効に活用できていないリサイズの部分が大きな律速に。
各種エンコーダーで差が出ないのは、リサイズ部分のアルゴリズムがほぼ同じ為ではないだろうか。
- FFMpeg、Mencoder、x264での変換速度に殆ど差はなし。
Avisynthをマルチスレッド化するプラグインという物も存在しており、今後試してみる予定。
映画を保存するよ編
素材:
ソースサイズ:1440x1080
コーデック:MPEG2
時間:4分30秒
映像の中身:地デジ、実写テレシネ素材アクションモノ
960x544サイズの各形式に変換
VDMにはDGIndexで読み込み。Avisynthでリサイズ。逆テレシネにIT使用。
エンコーダー | 設定 | FPS | 時間 (sec) | CPU 使用率(%) | 2.4GHz 換算(fps) | 旧PC(fps) |
VDM+Xvid | デフォルト | 38~45 | 144(152) | 40~70 | 36 | 12~15 |
VDM+Xvid | 注) | 40~55 | 130(128) | 55~70 | 40 | |
VDM+DivX | デフォルト | 27~52 | 150(144) | 90~100 | 34 | |
VDM+x264 | 色々OFF | 40~46 | 142(150) | 35~37 | 36 | |
VDM+x264 | PのみON | 40~43 | 145(150) | 34~48 | 36 | |
VDM+x264 | defoからnocabac | 26~44 | 150(155) | 41~79 | 34 | |
VDM+x264 | 注)960X540 | 17~46 | 212 | 43~60 | 24 | |
Automen(x264) | Quality slow | 53(53) | 160(157) | 70~100(40~94) | 32 | |
Automen(x264) | 最適 | 63(61) | 127(134) | 40~52 | 41 | 24 |
Automen(x264) | normal | 73(67) | 111(122) | 40~58 | 47 | 24 |
Automen(x264) | 最速 | 73(67) | 110(122) | 30~37 | 47 | 30 |
FFMpeg(x264) | デフォ | 41 | 153(157) | 50~80 | 34 | |
Badaboom | baseline | 35~38 | 161 |
後半にアクションシーンで爆発、画面中煙だらけとかアリ。
ここでCPU使用率が跳ね上がるがエンコ速度は落ちない。
各エンコーダーは余裕を残してエンコしてる。
明らかにテレシネとリサイズが律速。
注)VDM+Xvid、x264は、Avisynthでテレシネのみ、リサイズはVDMに任せると(RGBになってしまうが)処理が分散され、若干だけど速度アップ。DivXは速度変化なし。
FFMpegの逆テレシネの方法が解らないので、このテストだけAvisynth使用
ちなみに960X540とか16の倍数を無視するとx264は速度が落ちる。
ここでもDivXがまさかの失速。他のアプリにCPU使われると弱いっぱい。
h.263系を使う場合、素エンコならDivX、色々フィルタを掛けたかったらXvidで。
その他
AvisynthのGPU_25プラグインがかなり低速。9600GTと相性悪いかも?
・IT、LanczosはCPU比で10fsp程度遅いです。
・convolution3dは時々絵を出力しなくなります。
FFT3DGPUの方は相性良さそう。かなり速度出てます
この辺もそのうちじっくり調べてみます
いろいろ感じたこと
3~4年前のPCなので、速度アップしてるのは当たり前なのですが、、、、ここまで何台もPC使ってきて動画エンコ速度はCPUのクロック数、コア数にほぼ比例していました。(スーパーπなんかは2次キャッシュなんかの性能もかなり影響するけど)それを考えるとCore i7の高速っぷりにはかなり驚かされました。