x264 エンコード実験 --bframes編

x264 r1724 で 1280x720p 3501frameエンコード実験
環境とか条件とか詳細->

基本となるオプション
--preset slower(-> --me umh --direct auto --partitions all --trellis 2 --rc-lookahead 60 --b-apapt 2) --crf 22 --ipratio 1.5 --qcomp 0.70 --qpstep 12 --ssim --psnr --scenecut 60 --min-keyint 4 --keyint 300 --no-dct-decimate --no-fast-pskip --no-mbtree --aq-strength 0

今回はとりあえず、--ref 5 --subme 5 の時、--bframes を変化させるとどうなるか。 --bframesは、最大連続Bフレームの設定で、
最大何枚の連続Bフレームを使えるかというもの。

今回の実験では、b-adapt は基本 2。

bframes 0 の時は bframesに関するもろもろのオプション
(b-adapt, weightb, b-pyramid等)がoffになる。
bframes 1 の時は b-pyramid none となる。

まず、実際に使用されたI,P,Bフレームの数
x264r1724_bframes_frames

--bframes 0 では当然Bフレームは 0。
--bframesを増やすとともに、Bフレームの枚数が増えていくが、だんだんあまり増えなくなっている。


次に、x264のログの consecutive B-frames からわかる、実際に使用された連続Bフレーム数は、
x264r1724_bframes_consecutive

たとえば、--bframes 6 と設定したとき、実際のエンコードでは連続したBフレームのパターンは
・Bフレームを入れない
・1枚Bフレームを入れる
・2枚連続Bフレームを入れる
・3枚連続Bフレームを入れる
・4枚連続Bフレームを入れる
・5枚連続Bフレームを入れる
・6枚連続Bフレームを入れる

の7通りが考えられるが、
今回は 「6枚連続Bフレームを入れる」が選択されたのは 4.6% だったということ。

--bframesを増やしても、必ずその枚数連続するわけではないとわかる。
そして、6枚連続はなかなか採用されないようだ。
もちろん、これはエンコードする動画にも大きく左右されるだろう。(たとえば、エンコードするものによっては、--bframes 6 としても6連続はおろか5連続、4連続もほとんど採用されないということもあるだろう。)
それに、--b-adapt 2 の時で、--b-adapt 1 の時はまた違った様子になるだろう(たぶん)。


左目盛りで
CPU使用率(%)、
エンコード速度(fps)、
(エンコード後の)容量 (MAX の時を100%としたもの)

右目盛りで
SSIM(db) (ようは画質)

x264r1724_r5b3submex
クリックで拡大

--bframesを上げるとともに、高圧縮になっていき、またそれに伴って画質も低下している。ただし、あまり--bframesをあげても、たいして圧縮率は上がらない。

また、--b-adapt 2 が登場したときに 「高い--bframesの設定と--b-adapt 2はマルチスレッド効率を下げる」とあったようなきがする(あんまよく覚えてないけど、たしかそんなこと書いてあった気がする)。その通り、--bframesを増やすとCPU使用率が大幅に低下し、そのためかエンコード速度も遅くなってしまっている。

実用的なのは、圧縮率がそれなりにあって、エンコード速度もあまり下がらない --bfrmaes 2,3 あたりだろうか? --bfrmaes 5とか6とかはただ遅くなるだけな気がする。
もちろんこれは--b-adapt 2 の時で、--b-adapt 1 の時はまた違うだろうけど(たぶん)。


--bfrmaes 0 よりも --bframes 1 のほうがエンコードが速いのがおもしろい。なぜかは知らんが。
スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clfilters 
- OpenCLベースの複数のGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

rkmppenc
- Rockchip系SoCのhwエンコーダ

x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR