エンコード用スクリプト x264オプション改善版

ZOOMEが8月31日をもって全サービスを終了するようです。

これまでZOOMEにアップロードすることを前提に動画を作成していましたが、それも意味がなくなったのでこの期にエンコード設定を見直すことにしました。

そもそもエンコーダに使用しているx264が日々改良されており、オプションのデフォルト値なども変わっていました。無意味な設定も多かったので見直しました。

対象のx264のバージョンは、「core:115 r1995 c1e60b9」です。
 

1.はじめに 

私の環境ではMeGUIで使用されているCUI(キャラクタベースユーザインターフェス)のプログラムを利用してバッチスクリプトを構成しています。
MeGUI自体はCUIプログラムの集合体でそれらのプログラムをGUI(グラフィッカルユーザインターフェース)で利用できるようにしたものです。

GUI:マウス操作で実行
CUI:コマンドを入力して実行

MeGUIを使うメリットは、
①関連プログラムの最新版管理が楽な点
②エンコードオプションやコマンドオプションをMeGUIのログメッセージなどを参考に作成できる
③DVDからの変換用ツールも揃っている

MeGUIに含まれないプログラム(外部プログラム)は別途入手して構成しています。

デジタル放送の番組録画に関しては、家庭ネットワーク内で共有するためにDLNAで行うのであればMPEG-2TS形式で作成するのが都合がよいのですが、動画はMPEG4(H264/AVC)で作成しています。
この点に関しては、映像および音声のコーデックにはそれぞれH264とMPEG4 AACを使用し入れ物を変えるだけでMPEG-2 TSに変換可能なので、このままでよいと判断しています。

※MP4BOXで映像音声をそれぞれ抽出⇒TSMUXERでMPEG-2 TSに合成(多重化)で可能
再圧縮(再エンコード)不要なので変換時間は数分です。
 

2.外部プログラム

MeGUI以外に以下のソフトウェアが必要になります。

  • AviSynth
  • AviSynthプラグイン
  • AVS2WAV(seraphy 氏の改造版) ※バッチで実行するため用。MeGUIからであれば標準出力を直接NeroAACにパイプできるので不要。
  • NeroAACエンコーダ

3.動画エンコード用バッチスクリプト 

以下のリンク先から変更後のファイルをダウンロード可能です。参考にどうぞ
※ダウンロード後はZIPで解凍してください。
encode_zoome.zip
※解説はこちらを参照してください。
 

入出力ファイル形式

項目
入力ファイル フォーマット AVI 2.0 (RIFF)
映像コーデック VFWコーデック
音声コーデック PCM
出力ファイル フォーマット MPEG-4 AVC
映像コーデック AVC/H264 High@Lv4.1
音声コーデック MPEG-4 AAC HEv2

出力ファイルの比較
※結果はMediaInfo V0.7.43(GUI版)の出力です。

※赤字は相違点
項目 変更前 変更後
General Format MPEG-4
Format profile Base Media
Codec ID isom
File size 35.5 MB 35.4 MB
Duration 3mn 20s
Overall bit rate 1485 Kbps 1481 Kbps
映像 ID 1
Format AVC
Format/Info Advanced Video Codec
Format profile High@L4.1
Format settings, CABAC Yes
Format settings, ReFrames 4 frames 6 frames
Codec ID avc1
Codec ID/Info Advanced Video Coding
Bit rate mode Variable
Bit rate 1450 Kbps
Maximum bit rate 2909 Kbps 2927 Kbps
Width x Height 640 x 512 1280 x 1024
Display aspect ratio 5:4
Frame rate mode Constant
Frame rate 15.000 fps 30.000 fps
Color space YUV
Chroma subsampling 4:2:0
Bit depth 8 bits
Scan type Progressive
Bits/(Pixel*Frame) 0.295 0.037
Stream size 34.7 MB (98%) 34.5 MB (98%)
Encoding settings cabac=1
ref=5
deblock=1:-2:-2
analyse=0x3:0x113
me=umh
subme=9
psy=1
psy_rd=0.50:0.00
mixed_ref=1
me_range=32
chroma_me=1
trellis=2
8x8dct=1
cqm=0
deadzone=21,11
fast_pskip=0
chroma_qp_offset=-2
threads=3
sliced_threads=0
nr=0
decimate=0
interlaced=0
bluray_compat=0
constrained_intra=0
bframes=3
b_pyramid=1
b_adapt=2
b_bias=0
direct=3
weightb=1
open_gop=0
weightp=2
keyint=300
keyint_min=1
scenecut=54
intra_refresh=0
rc_lookahead=40
rc=2pass
mbtree=1
bitrate=1450
ratetol=1.0
qcomp=0.60
qpmin=1
qpmax=51
qpstep=16
cplxblur=20.0
qblur=0.5
ip_ratio=1.40
aq=1:0.00
cabac=1
ref=6
deblock=1:0:0
analyse=0x3:0x113
me=umh
subme=9
psy=1
psy_rd=1.00:0.00
mixed_ref=1
me_range=24
chroma_me=1
trellis=2
8x8dct=1
cqm=0
deadzone=21,11
fast_pskip=1
chroma_qp_offset=-2
threads=3
sliced_threads=0
nr=0
decimate=1
interlaced=0
bluray_compat=0
constrained_intra=0
bframes=3
b_pyramid=2
b_adapt=2
b_bias=0
direct=3
weightb=1
open_gop=0
weightp=2
keyint=300
keyint_min=1
scenecut=40
intra_refresh=0
rc_lookahead=50
rc=2pass
mbtree=1
bitrate=1450
ratetol=1.0
qcomp=0.60
qpmin=0
qpmax=69
qpstep=4
cplxblur=20.0
qblur=0.5
ip_ratio=1.40
aq=1:1.00
音声 ID 2
Format AAC
Format/Info Advanced Audio Codec
Format profile HE-AACv2 / HE-AAC / LC
Codec ID 40
Bit rate mode Variable
Bit rate 32.0 Kbps
Maximum bit rate 35.7 Kbps 35.5 Kbps
Channel(s) 2 channels / 1 channel / 1 channel
Channel positions Front: L R / Front: C / Front: C
Sampling rate 44.1 KHz / 44.1 KHz / 22.05 KHz
Compression mode Lossy
Stream size 783 KB (2%)

4.考察

 映像のエンコードオプションを変更したために、ファイルサイズの変化と画質の変化さらにはエンコード時間の変化が懸念点となります。

(1)ファイルサイズの変化

ビットレートが同じなのでファイルサイズの変化はほとんどないのは当たり前の話になります。
ただ、そのビットレートでも同じ品質になるようにという意図でオプションは選択しました。
ファイルサイズが増加する傾向にあるオプションもありますので、それがどの程度影響するのかを確認するために比較しました。

変更前:35.5 MB
変更後:34.5 MB

結果は誤差といえる範囲内であるため変更後で問題なしと判断しました。
 

(2)画質の変化

以下に変更前と変更後の動画を埋め込みました。
このプレイヤーサイズでは特に違いは感じません。
ただ、フルサイズにした場合は、変更前のほうはオリジナルサイズよりも高さ、幅ともに拡大されてしまいぼやけてしまいます。一方、変更後は1280×1024であるため、フルサイズでもそれほど拡大されることにはならないためクッキリとしています。ただし、ビットレートが低いと逆にブロックノイズが目立つ可能性があります。その点は可変ビットレートなので動きの速いシーンでは高ビットレートが割り振られるようにはなっていますが、それにも限界があるのは事実です。

変更前
 
変更後
 
特に問題となる点はなかったので変更後で問題なしと判断しました。
 

(3)エンコード時間の変化 

どちらも可変ビットレートで3パスエンコードを行っています。
使用したオプションが異なる点と画像フィルターを変更後は使用していますので、どの程度処理の時間に変化があるのかが気がかりです。

変更前:約50分30秒
変更後:約68分5秒

バッチで処理をすることから、この程度なら許容範囲内であると判断しました。
※これまでzoomeにアップロードすることを想定してそのビットレート制限以内におさめるため、3パスエンコードを行っていましたが、たとえばYouTubeにアップロードすることを想定した場合、ビットレート値を緩和しても問題ないため2パスエンコードに変更する予定です。また、PCのモニタが1280×1024から1600×1200に変わったため、映像ビットレート値を1450kbpsから2450kbps位に変更する予定です。そのことも考慮して今回は変更後のエンコードオプションを変更しています。 

補足

私の場合、レンタルサーバにアップロードしているため具体的な制限というものはありません。
強いて言うならば、契約関連事項となりますので以下の2点です。

(1)使用可能HDD容量(ファイルサイズ)

(2)共有タイプのレンタルサーバなので他の契約者に迷惑をかけないこと。

※リソースを占有しないように配慮しないといけない点です。

以上のように抽象的で漠然とした制限になります。
そこで、具体的にはZOOMEの制限を目安にしていました。

動画共有サイトのような専用ストリーミングサーバは構築はできるものの契約上は禁止されているので、HTTPによる擬似ストリーミング配信になります。
これもあまり目立ったことをすると制限されそうですので、ビットレートはできるだけ抑えるようにしています。※高ビットレートにしすぎるとネットワークI/Oを占有してしまう&HTTPサービスのレスポンスが悪くなるため。
さらには、高ビットレートにするとによりファイルサイズが大きくなるデメリットがあります。
これによりすぐに使用可能HDD容量の制限に達してしまうという事態になります。
結果、古いファイルのローテーションをするメンテナンスの手間が発生したり高価なサービスへ更新するなどして対処しなくてはならなくなり、自分の首をしめるだけだともいえます。

今回の更新は、x264のオプションの見直しのみです。
一応、動画編集ソフトにWindows ビデオメーカーを想定した処理をそのまま残してありますがWindows 7(Windows Liveから落としたバージョン)は使ったことがないので使えるかどうかは未確認です。Windows 7からは、H264やAACを標準サポートしたらしいので、Windows Media formatを使う必要はないのかとも思いますが、マイクロソフトだけにMPEG4であっても独自というのもありえる話で標準化されているものとは異なるかもしれません。※マイクロソフトMPEG4とか・・・ありそう

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大阪府門真市に生まれ、高校卒業まで京都府福知山市で育ち、大学は工学部電子工学科を卒業。半導体設計会社に勤務ののちインフラエンジニアとして監視基盤の運用設計業務に就く。現在は都内の施設に勤務。横浜在住。人の役に立てることができればいいなと日々思っています。

目次