フルレンジYUVについて

これはやや使い道が限られて、絶対推奨とは言えない技術です。


通常のYUV形式というのは、内部的にはデータがTVスケール(16-235)で格納されていて、再生側で(コーデック・プレイヤー・ビデオカードなど場合によって変わる)あらためてPCスケール(0-255)に伸張されて表示されています。*1


ただし、こうした処理によって微妙なグラデーションが出せなかったりすることも。

■ソース

http://gyazo.com/53c828a3ed1ab4d529d41f5050e82573.png

■普通に変換してエンコードした場合

http://gyazo.com/b1dc41c6802721c8379d6827379a2c17.png
バンディング(縞)が発生しています。
色空間の輝度がRGB(0-255)→YUV(16-235)→RGB(0-255)と変換処理される上で情報が欠落する影響です。


これをフルレンジYUV(0-255のスケール)の形式でエンコードすると、
http://gyazo.com/b10d8db21d8dce1ffddb3e04aaf3c864.png
バンディングが発生せず、キレイ。

Aviutlでの実現方法

  • 「拡張色調補正」フィルタで「TV->PCスケール補正」をかける
  • x264GUIの「コマンド」タブに「--fullrange on」と入れる

Aviutl上のプレビューでは過剰に伸張された(コントラストが強い)状態になりますが、出力データは元の色調が維持されます。

なぜ推奨できないか

  • ローカルプレイヤー上で適切に表示できないケースがあるため


フルレンジYUVが対応しているプレイヤーと対応していないプレイヤーがある。

  • ニコ動等ブラウザ上のフラッシュプレイヤーは対応している
  • ffdshowは対応している。


ブラウザやローカルプレイヤーでffdshowを使う場合には大丈夫そうではある。しかし、他のプレイヤーやさらにはグラフィックボード等各種環境によっては過剰に伸張されて明部が飛び暗部が潰れてしまったりする。
ローカル保管用としては若干の問題を抱えているので、効果はあるものの若干オススメしづらい。

*1:どうしてそういうことに?というのを説明するのはややこしいので…。