【AviUtl】RGB・YUV動画の色を劣化させないコーデックの設定

AviUtlで、RGB・YUVな動画を読み込んで、色を出来るだけ劣化させずに出力する設定方法とかについてのメモ書き。

「コーデックの設定」について迷ってる初心者な人の参考になれば幸い。

※私が思い込んでるだけな部分も(もしかしたら)あるかもしれないので、参考程度に。。

スポンサードリンク

AviUtlの読み込み時の変換(挙動)

AviUtlでAVIファイルを読み込む際には、メニューの「ファイル」→「環境設定」→「コーデック設定」の色空間設定に従って読み込む。(入力プラグインは「AVI/AVI2 File Reader」もしくは「AVI File Reader」)

コーデック設定1

  • YUY2で展開する:読み込んだ動画をYUY2で展開する。YUY2で展開出来ない時はRGBで展開する
  • YUY2で圧縮する:読み込んだ動画をYUY2で圧縮する。YUY2で圧縮出来ない時はRGBで圧縮する
  • 圧縮の設定を保持する:編集を終了しても圧縮の設定を保持する。(codecによっては保持すると動作がおかしくなるかも?)

「YUY2で展開する」にチェックを入れていても、RGB動画を読み込んだ場合はRGBとして展開される。

なので、RGB動画を読み込む場合にはチェックを気にする必要はない

内部のフロー

RGBソースな場合

RGB動画を読み込んで、無劣化で編集する場合の流れ以下の様な感じになる。

rgb_murekka

「YC48」というのはAviUtl内部で使用されている色空間のことで、YUY2・RGBとそれぞれ可逆変換できる。

「コーデックの設定」は、先述したようにRGB動画の場合は、チェックがどうであれRGBとして読み込まれるので関係ない。

「色変換(入力)」と「色変換(出力)」は、そもそもRGB→RGBで変換自体が行われないので関係ない。

AviUtlのプレビューウィンドウには、内部のフィルタ処理後のYC48が、Bt601を用いてYC圧縮される(らしい?)

YUVソースな場合

YUV動画を読み込む場合には以下の様な流れになる。

yuv_nagare

「コーデックの設定」で「YUY2で展開する」にチェックが入っていたらYUY2として展開する。※チェックが入ってなかったらRGBとして読み込んでしまうので、RGB→YUV→RGBみたいになるので色が劣化する。

また、YUY2として展開する際は、「色変換(入力)」の設定が用いられる。(Bt.601とか)

x264guiExの場合は、YUY2→YU12という変換が必ず入るので色が劣化する。

読み込む際の注意点

RGBソースな場合

先述したように、RGB動画の場合は、「コーデック設定」などAviUtlの設定に関わらず、どのような場合でもRGBとして読み込まれる。

ただ、RGBのままエンコードしたい場合(例えば「未圧縮」とか)には、「コーデック設定」の「YUY2で圧縮する」のチェックを外さないと内部データがYUY2に劣化してしまうので注意する。(RGB→YC48→YUY2→RGB)

RGBのまま無劣化編集したい際には、「YUY2で圧縮する」のチェックを外すの必須ということ。
2016-01-29_19h57_58

また、色を劣化させずに無劣化で編集したい場合には、フィルタ類は全てOFFにする必要がある。
2016-01-30_10h49_00

特にインターレース解除は「なし」以外に設定するのを忘れる事が多々あるので(私のことです)、気をつける。

YUVソースな場合

YUVな動画を読み込む場合には、RGBとは逆に、「コーデック設定」のYUY2関係のチェックを全て付ける必要がある。

つけていないと、YUY→RGB→YC48→RGBみたいに劣化してしまう。
コーデック設定1

今読み込んでる動画の色空間の確認方法

今読み込んでいる動画がどの色空間で読み込まれているかは、「その他」→「ファイル情報」から確認できる。

YUY2として読み込まれている場合 RGBとして読み込まれている場合
yuy2_f rgb_f

ここで「RGB」と書かれていたらRGBで読み込まれているということだし、YUY2と書かれていたらYUY2で読み込まれているということ。

※拡張編集から読み込んだ場合(拡張編集 File Reader)は、「YC48」と表示されてしまうので、「動画を読み込んだ際にどの色空間で展開されるか」が知りたい場合には、一旦AviUtl本体から動画を読み込めば確認できる。
yc48

UtVideoコーデックだけは特殊

UtVideoコーデックの場合は、RGB・YUVとそれぞれ色空間によってFourCCが分けられているので、「コーデックの設定」は意識する必要はない。

例えば、RGBA・RGBには「YUY2で展開する」にチェックが入っているけど、これらは元々、YUY2での出力(デコード)はできない仕様になってるので、チェックの有無は関係ない。(「YUY2で圧縮する」のチェックがグレーアウトしてるのは、 YUY2での入力ができない仕様だから)

なので、UtVideoソースな動画を使用して動画を出力する場合は、「コーデックの設定」については何も考えなくてOK。
2016-01-29_19h46_36
※UtVideoの色空間の入出力形式については作者のブログにてまとめられている(或るプログラマの一生 » [UtVideo] 対応入出力フォーマット

具体的にどれだけ色が劣化するかサンプル

2chの「映像可逆圧縮総合スレ Part3」にて、金の髭氏が「色を変換した際にどれだけ色が劣化するか」の分かり易いサンプル画像をアップされていたので、ここで転載。

RGB24からそれぞれUtVideoの「ULY2」「ULY0」にエンコしてどれだけ劣化したか示した画像
RGBをYUVでエンコードすると可逆じゃないよ (1)

上下の違いは「コーデックの設定」の「YUY2圧縮する」がON(上)かOFF(下)かという点。

  • 左上:「YUY2で圧縮する」ON、色空間 YUV422
    • RGB→YC48→YUY2ULY2(YUV422)
  • 左下:「YUY2で圧縮する」OFF、色空間 YUV422
    • RGB→YC48RGBULY2(YUV422)
  • 右上:「YUY2で圧縮する」ON、色空間 YUV420
    • RGB→YC48→YUY2ULY2(YUV420)
  • 右下:「YUY2で圧縮する」OFF、色空間 YUV420
    • RGB→YC48RGB→ULY2(YUV420)

※黄色部分で色が劣化する。

RGB→ULY2(YUV422)の変換なんかは特に色の劣化が激しいので、ダウンサンプリングフィルタなどを使用する事が色劣化をマシに出来る。