« つかれた | Home | 待機中 »

2007年8月25日

最適エンコーディングパラメータの探り方

仕事柄いろんな映像をエンコードしたりするわけだが、そっちの方は当然のように内緒なので、自宅で見る映像のエンコード時に、各種パラメータをどうやって探るかというのを、ちらっとメモ書きしておく。

1. 全体の方針
格納するメディアの容量と、再生するデバイスの組み合わせで大まかに方針が決まってくる。例えばPSPなら格納する先はMSで容量が限られているし、再生できるフォーマットにも限界がある。だけど、PCを液晶TVに繋げている際などはほとんどその点に制限がない。まずはそこから、「考えうる最も高画質なエンコーディング方法」を検討する。
シリーズのドラマや、毎日録った上で残したいというようなものの場合、許容できる容量がどれだけなのかを計算し、そこから1本あたりの容量を決定する。

例えば:
10 回放送のシリーズ物を10GBに収めるなら、1本あたり1GB≒1073741824bytes
よって、オーディオ含み最大 2796.2kbps に決定。
再生は Xbox360 だから、H.264/AVC で、オーディオを160kbpsにすると、映像は2636.2kbps、よってLv 2.1以上でのエンコードが必須になる・・・という感じ。

特にフォーマットに制約がなく、高画質で保存したいなら、今ならH.264になるだろう。アニメ作品ならDivXも良いとされる。

2. 対象の性質を見極める
どのエンコーダにも、いろいろなオプションが用意されている。ここでは、特にエンコーディングオプションが多彩で取捨選択に困るであろう、ffmpeg での例を挙げていく。商用ソフトウェアなら、マニュアルにそのあたりの指針は十分記載されているだろうし、それを読まない人はそもそも画質などどうでも良いはず、ということで。

ひとつの設定でなんでもエンコードしたい、いつまでも時間を使って悩んでなどいられない、アニメしかエンコードしない、という向きには、(ほぼ間違いなく著作権法を侵しているものだが)Stage6から超高画質、超高解像度のアニメ作品の「オープニングテーマだけ」の映像を頂戴してきて、それを叩き台にする。私が今まで試した映像のなかで、一番エンコーダに優しくない映像は、「涼宮ハルヒの憂鬱」という作品のエンディング部分である。動きが早い上にベタ塗りも多く、限られたビットレートの中で高画質を出すのは至難である。んで、アニメをうまくエンコードできる設定なら、アニメ以外でもわりと満足のいくものになる。
アニメは特にベタ塗り部分のブロックノイズ、エッジのぼやけを見ながらオプションを見極めていく。具体的な部分は次に書くが、チェック時にはMacOSのマシンがあると良い。Ctrlキーを押したままマウスホイールを上下に操作すると、動画再生中だろうがなんだろうがズームが効く。
ベタ塗り部分を何かが一旦遮り、また表示されたところなどがブロック状になっていないかを見ていったり、単色のはずなのにチカチカしているところがあればそれをなくすような設定を追うとやりやすい。その辺りが気にならなくなると、全体として美しいものになっているはずである。

TVドラマやドキュメンタリーなど、非アニメ作品をメインにエンコードするなら、同じようにStage6から水族館の映像をうまいこと探して、特に高解像度のものを選んで頂戴してくる。見つからなければ、雲が大写しになっているような物でも良い。それだけではく、次はカーレースや自動車のレビュー番組、もし見つかればドリフトの競技会の映像から、やはり特に高解像度のものを選ぶ。ぶっちゃけ動きが速く煙が出るものなら何でも良いので、蒸気機関車が疾走するような映像でも良い。
これもアニメと同様にブロックノイズをメインにつぶしていくことになるが、動きの速いものはいきなり飛んだり、ぼやけて全然見えなくなったりすることがある。これはエッジ補正を掛けられるエンコーダならそれをONにするくらい、どうしてもそれを消したいならビットレートを上げるしかない。ソースが30fpsなら、同じように30fpsにすること。

マジでアニメしかエンコードしないんだけど!という向きは、24fps化とインターレース解除も試してみると良いかもしれない。私にはそのノウハウが無いので、できれば詳しい方の指南を受けていただきたい。

3. 具体的な部分
どのシチュエーションでも効くような部分だけ紹介しておく。あとは各自で煮詰めてほしい。
非アニメ動画:

-flags (この辺をうまく取捨選択)
-cmp 3
-subcmp 3
-precmp 3
-g 300

アニメ動画:

-flags +trell+aic
-cmp 2
-subcmp 2
-precmp 2
-g 300

qpelとか-mbd 2 も試してみるといいかも。

共通:
2passエンコードは必須。他が適当でも、2passにすればかなり違って見える。
last_predとかmv0あたりが設定できても、そこはスルーで。あんま効果ない割に、確実にエンコードに掛かる時間は増える。
ビットレートはソースがHD映像なら下限4Mbps、上限は限りないが15Mから上あたりは趣味の世界である。一般の人なら下限で問題ない。15Mと4Mの差は、凝視すれば確かに差が確認できるが、遠目でそれが出来るかといわれると否である。15Mbpsで1分あたり大体100MBになる。遅いマシンでは再生が追いつかないことすらあり、あまり高すぎるビットレートは再考の余地があると思って問題ない。

4. 忘れがちな部分
上でオプション類を並べてみたが、基本的に高画質オプションを増やせば増やすほど、エンコーディングに掛かる時間が増え、ファイルサイズは上下する。特にMPEG4は、1時間番組のエンコードに3時間掛かるなんてのも、珍しくない。その時間は当然ながらPCが使えなくなったりするわけで、そのあたりは睡眠時間を使う等してやりくりしていただきたい。On/Offするオプションの取捨選択や、パラメータ調整は「寝る前にセット、起きて確認」を数ヶ月繰り返しながらやっていけば、実生活に影響なく最適なものが見つかるでしょう:-)

5. もう面倒だから手っ取り早くどうにかしたい
ファイルサイズからビットレートだけ計算して、高画質オプションを全部指定した上で2passに設定。寝る直前に開始して、朝起きてチェックせずストレージに放り込む。納得いかなくても我慢。もしくは脳内補正。大丈夫、どうせ録り貯めたものなんて見ないからw

トラックバック(0)

トラックバックURL: http://blog.unnamed.jp/cms/mt-tb.cgi/510

コメント(2)

H264デバイスが増えてきましたが、ウチはまだまだDivXメインですねぇ。納得のいく品質でエンコするとファイルサイズが倍くらい違ってきちゃいます。

ちなみに手っ取り早さなら1pass QBがオヌヌメですよ。レート上限を指定できないことが多いので、必要になるとレートがハネあがるので、組み込み系での再生には向かないですが。

あと編集はTMPGEncが一番楽です。お金払うだけの価値はあると思います。エンコは最速ではないですが、人間が携わる部分の効率は上がるので、さっさとバッチに入れて寝てしまえばOK。

>古田さん
DivXって、意外とハンドリングが良いんですよね。主要なツールはほぼ対応してますし。
現在の動画再生を取り巻く環境で、納得のいく画質を求めるには、どうしてもコストが掛かってきてしまいますよね。結局は「どこで妥協するか」というところで葛藤がある訳ですが、多くは金銭的な都合からファイルサイズを絞っていくことになると思います:-p
上記より、QBは一時期使ってはいたんですが、どうもサイズが読みにくくて苦労していました。ストレージが限られているんで、結局H.264のABRに落ち着いております。
編集をするとなると、現状TMPGEnc以外に選択肢はないですね。安いですしw ただ、私は録りっぱなしでそのままエンコードしてしまうので、その辺りは全然だったりします。どうしても編集したくなったら、H.264なんで iMovie にでも食わせてさっくりと。

この辺りを完全に自動でやってくれるソリューションがあればいいんですけどねぇ。地デジを見られる画質で取り込んで、4Mbpsくらいまで絞ってくれるだけでいいんですけど。そもそも取り込む時点でいろいろ制約があるので、暫くは非効率的な方法で頑張るしかないかと諦めております。

コメントする

この記事について

このページは、sakura2kが2007年8月25日 02:20に書いた記事です。

ひとつ前の記事は「つかれた」です。

次の記事は「待機中」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。