TV録画サーバーにffmpeg+x264環境構築.(設定編?)

投稿者:arrumis

TSファイルをmp4に圧縮する準備が出来たので,圧縮するときのパラメータを考えてみる.
といっても,かなりの付け焼き刃なので,まだまだ考えることは沢山ありますが.
それでは逝ってみよう.
・このサイトの文章は当てになりませんので,動かなかったり,壊れたりしても,私は責任取りませんよ.
それでも良い方は続きをどうぞ.


では,さくっと設定したリストを出してみます.
コマンドラインは次のように.

ffmpeg -i ”${DATA}.ts” -programid $ID -f h264 -threads 0 -an -y -vcodec libx264 -fpre /usr/share/ffmpeg/libx264-slow-ts.ffpreset -deinterlace -s 1280×720 -aspect 16:9 -r 29.97 fullseg.264

libx264-slow-ts.ffpresetと命名したpresetは次のように.

level=41
coder=1
refs=6
me_method=umh
subq=9
me_range=16
trellis=2
bf=12
b_strategy=2
directpred=3
wpredp=2
g=300
keyint_min=25
sc_threshold=65
rc_lookahead=50
crf=20
qcomp=0.85
qmin=10
qmax=51
qdiff=32
i_qfactor=0.71
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
flags=+loop
flags2=+bpyramid+mixed_refs+wpred+dct8x8+fastpskip

ここに出ているものだけ,ちょっとした説明を書いておきます.他にも沢山の設定項目があるのですが,まだまだ分からないことだらけですので,分かる範囲で設定しました.
この設定で,3.8GのアニメTSファイルが,704×396ですと,270Mに.1280×720ですと,800Mに圧縮できました.画質に関しては個人の感性が物を言う部分が大きいため,当てになりませんが,良い方だと思います.
では多少の解説.
・-threads 0
    エンコードするときに使用するCPUの数.
 0にしておけば,勝手に解釈して設定してくれる.
・-deinterlace
 インターレース解除.数年前は解除しないとダメだったんですが,
  現在は解除しなくても再生するときにフォローできるとか
  小耳に挟みましたが,よく分からないので,de(解除)しておく.
・-s 1280×720
   解像度.もちろん好きなサイズにして良いと思います.が,縦横の
  比率を間違うと大変なことに.
・-aspect 16:9
  上記の解像度で間違った設定をしても,横サイズを優先して考え
    縦横の比率を考えた解像度にフォローしてくれる(?)
・-r 29.97
    フレームレート.これも勉強不足なのですが,アニメは24FPSが多いが
   中には30FPSを混ぜた(OPとかEDとか)物もあるとか.でも,TVは
   29.97FPSで放送なので~~~という,ごちゃごちゃした理由があるっぽい
    難しいので,29.97にしている.できれば120FPSとか60FPSとかにしてみたい.
次はプレセットの中
・level=41
    mp4の処理の負荷や使用メモリ量を表すレベルが定義されていて,
   この範囲を守っておけば,再生するときにエラーが出にくい?ってこと?
    以下はその一覧表    
  mp4の処理の負荷や使用メモリ量を表すレベル定義
・coder=1
 H264の概要をみてもらえば解るはず・・・・wwww
   というのはアレなんで,圧縮の方法の一つと覚えていればいいかも.
    直訳「CABACはデフォルトでx264が使っているエントロピーエンコーダ.デコードとエンコードの終わりが少し遅くなってしまうが,実写動画の圧縮を10-15%改善し,アニメ(特にビットレートの低い)においてはより高い向上を得ることができる.格子量子化を使う必要がある.CABACを使わない場合,特に高いビットレートの場合少しデコードの速度がよくなる.CABACはベースラインプロファイルでは使用できない.”-coder 1″(CABACを使う)を推奨.」
・refs=6
   P/Bフレームと参照フレームまでの最大距離。又は,動き補償の際に参照できるフレームの上限数
  と表現されている.おそらくであるが,Frameref=refsだと思われる.default=1
・me_method=umh
 フルピクセルの動き補償アルゴリズムを指定.4種類選べる.
       epzs(ダイヤモンドサーチ、半径 1 (デフォルト))
       hex(六角形サーチ、半径 2)
       umh(不等複数六角形サーチ)
       full(徹底サーチ (超低速、umhより全く良くなるところが無い))
・subq=9
    サブピクセルの動き予測アルゴリズムを指定1~9が選べる.数字が
    大きくなればなるほど,速度が落ちる.速度と効果のバランスが良いのは
    3-5と言われる(default=5)
・me_range=16
 meで使う動き捜索範囲。default=16
  me=umh,me=esaを指定した場合のみ効果がある推奨値は24,32,64。
・trellis=2
  レート歪み最適化の量子化.
    trellis=1 最終エンコードでのみ使用
    trellis=2 全モード決定で使用。
                bitrateあたりの画質が僅かに向上する。(低速、要subq=6)
・bf=12
    直訳「B-frameはH.264の中核をなすもので,H.264において既存の形式よりも効率的である. いくつかの特定の対象(HD-DVD, Blu-Ray)においては,連続するB-frameの数は制限される.x264ではB-adaptが使われていれば自動的に最適な値が使われるので,最大値である16に設定しとけば問題ない.iPod等ではB-frameをサポートしていないので注意が必要.16を推奨.」
・b_strategy=2
 直訳
  B-frameの数の決定方法についての設定.
 x264はデフォルトで最適な値のB-frameを自動的に決定して使うので1を推奨.
    0:(エンコが)とても速いが推奨しない.pre-scenecutが働かない.b-adaptをoff
    1:速い.デフォルトの値.スピードと質をバランスよく考慮.
  2: とても遅い.しかし,B-frameの値をより正確に決める設定.
        ただしくfades(色あせ?)を検出し,一般的にかなりいい品質になる.
       高いB-frame値を指定した場合非常にスピードが遅くなるので,B-frameの
        値は比較的小さい値(3くらい)を指定したほうがいい.スレッドモードで
       実行するとき最初のパスは非常に遅くなる.
・directpred=3
  B フレームの直接予測のモード
       0:none
       1:spatial
        2:temporal
       3:auto
・wpredp=2
  重み付け予測モードPピクチャweightpと同じコマンド.変わったんだってさ.
    これ,0の方がいいよってHPが多いのだけれど,よく分からない・・・
・g=300
  GOP サイズを指定。デフォルト=12。
 素材の fps × 5 or 10 程度をきちんと指定した方がいいらしい.
(追記)300でやってたんですが,編集が難しいので,デフォルト値に変更した.
・keyint_min=25
 IDR フレームの最小間隔.デフォルト=25。
・sc_threshold=65
    シーンチェンジ検出の閾値.普通は40位を推奨らしいけど,アニメソースの
  場合は65くらいでいいそうな.
・rc_lookahead=50
   MB treeが先読みしpropagation解析を行う距離(訳注:フレーム数)
    をコントロールするためのオプション.デフォルトは40
    大きな値はより遅く、よりメモリを要求するがより精密な結果をもたらす。
・crf=20
    固定 ”品質” でのエンコードモード.
・qcomp=0.85
  quantizer(量子化)の圧縮。0~1
   低い数値にするとビットレートの変動幅が低くなる。=画質の変動幅が大きくなる。
   高い数値にするとquantizerの変動幅が低くなる。=画質の変動幅が小さくなる。
・qmin=10
・qmax=51
・qdiff=32
    quantizerの最大値,最小値,変動幅
・i_qfactor=0.71
   I-P フレーム間の q 値の比 (I フレームの q 値/P フレームの q 値).
・cmp=+chroma
  sad:sum of absolute differences, fast (default)
  sse:sum of squared errors
    satd:sum of absolute Hadamard transformed differences
    dct:sum of absolute DCT transformed differences
   bit:number of bits needed for the block
   rd:rate distortion optimal, slow※ x264 の場合 -subq 6 以上を
         指定で RDO 有効化なので、このオプションは多分効かない
 chroma:色情報を含めた動き予測をする
           ※ x264 の場合 -cmp chroma 指定 (かつ、subq が 5 以上) 
                   の場合 chroma me が ON になる
・partitions=+parti8x8+parti4x4+partp8x8+partb8x8
・flags=+loop
・flags2=+bpyramid+mixed_refs+wpred+dct8x8+fastpskip
 よくわかってないので,割愛w

Linux,PC関係|2012年1月19日|9:44 PM|TV録画サーバーにffmpeg+x264環境構築.(設定編?) はコメントを受け付けていません。			



コメントは受け付けていません。

« »