動画作成 コーデック(codec)のお話

2013年04月04日

PCゲームなどを専用ツールで録画する場合、普通はcodecを使って圧縮します。
codecとは、簡単に言うと情報を符号化・復号化するプログラムです。
符号化(エンコード)は、圧縮。復号化(デーコード)は解凍と思えば理解しやすいかな?
圧縮するプログラムをエンコーダーと言い、プレイヤーで見るときにデコーダーで解凍(圧縮されているデータを表示できるようにする)する。

エンコーダーがなければ(無圧縮で録画すると)、30分のテレビ番組をフルハイビジョン(1920x1080)で録画すると約340GB位になります。
これではHDDがいくらあっても足りません。
そこでcodec(符号化・復号化プログラム)が必要になります。

※動画編集やコーデックのことについて、私はそれほど詳しいわけではありませんので、間違った情報が含まれている可能性が大きいかもしれません。ご了承ください。

可逆圧縮(ロスレス圧縮)と非可逆圧縮(不可逆圧縮)

可逆圧縮とは

可逆圧縮(かぎゃくあっしゅく)とは、圧縮前のデータと、圧縮・展開の処理を経たデータが完全に等しくなるデータ圧縮方法のこと。ロスレス圧縮とも呼ばれる。 Wikipediaより引用

非可逆圧縮とは

非可逆圧縮(ひかぎゃくあっしゅく)とは、圧縮前のデータと、圧縮・展開を経たデータとが完全には一致しないデータ圧縮方法のこと。不可逆圧縮(ふかぎゃくあっしゅく)とも呼ばれる Wikipediaより引用

簡単に言うと、可逆圧縮はzip圧縮のような、完全に元のデータに戻すことができる圧縮方法。
一方非可逆圧縮はmp3音声データのように、情報を省いて圧縮をするので、元には戻せない圧縮方法となります。

録画したデータをなるべく高画質に動画共有サイトにアップロードするならば、表示されている画像を劣化なしに録画し、そのデータを劣化なしに編集できなければ、編集を繰り返すたびに画質は劣化してしまいます。
そこで、録画から編集までは、可逆圧縮コーデックを使い劣化を防ぎ、最終出力のデータのみを非可逆圧縮コーデック(H.264/AVCやXvid MPEG-4など)によって圧縮し、出力することが推奨されています。
こうすれば、ノイズのほとんど無い状態で編集でき、なおかつ圧縮するときもノイズの影響を受けにくいのでクリアな画質を確保しやすくなります。(ノイズ:ブロックノイズやモスキートノイズ)

可逆圧縮(ロスレス圧縮)のメリット・デメリット

メリット

  • 無劣化での保存が可能
  • 比較的作動が軽い
  • 複数の編集ソフトで編集する場合でも、基本的に劣化なしで加工できる

デメリット

  • データー容量が大きい(撮りだめが困難)
  • USB1.0などの低速な外付けHDDだと、転送速度が足りない場合がある

データーが巨大になると言うことを除けば、ロスレスコーデックで録画するのが一番良い。
ただ、「データーが巨大になる」というのが曲者なんですよね。
最近は2TBのHDDもずいぶん安いので「そこまで気にする必要があるのか?」と思われるかもしれませんが。
動画共有サイトに1本動画を上げては編集データを消して、次を録画する。みたいな使い方をする方には、ロスレスコーデックのデメリットはほとんど無いでしょう。
こういう動画作成スタイルの方には、ロスレスコーデック以外えらぶ必要が全くありません。

問題は、普段から常に録画していて、無数の録画データの中から決定的瞬間映像をピックアップした物を投稿する方、所謂フラグムービーを作りたいと思っている方などは、ロスレスコーデックですと、本当にHDDが足りなくなるんですよね。

ゲームを1時間ほどプレイし、その録画データーを編集して1本(またはパート分け)の作品を作って、次のプレイを録画というスタイルの方は、迷わず可逆圧縮(ロスレス)コーデックを選びましょう。もちろんHDDの容量がないのなら選べませんが

とりあえずプレイ中は常に録画していて、珍プレイ好プレイができた物を編集でつなげて作品にしたいという方は、可逆圧縮のデメリット「容量が巨大になる」が一番の問題になりますので、そんなの気にしないという方以外は、非可逆圧縮コーデックを使いましょう。
ロスレスコーデックではビットレートの指定はできません。

非可逆圧縮(不可逆圧縮)のメリット・デメリット

メリット

  • 容量が小さい(撮りだめが容易)
  • HDDへの書き込み負荷が少ない(転送速度が低くても、コマ落ちしにくい)

デメリット

  • 画質が悪い(ロスレスに比べて)
  • CPU負荷が高い

H.264/MPEG-4 AVCなどに代表されるコーデックが非可逆圧縮になります。
元のデータに戻せないので、画質は悪くなりますが、其の分データー容量は劇的に小さくなります。
録画時のビットレートを上げれば画質は向上しますが、データーは大きくなります。
画質とデーター容量のバランスを自分でチェックして、最適だと思えるビットレート(または、クオリティー値)を探す必要があります。
ただし、ロスレスコーデックより圧縮にCPUをより多く使いますので、ゲーム自体が重く感じるPCですと、録画中はプレイに支障を来す場合があります。

 

画質の劣化とは

画質が劣化する時とはいつか?
いろいろ考えられますが、まずはじめに画質の劣化が起こらない物とは、どういうコーデックか?

  • ロスレスコーデックであること
  • 色空間がRGBであること(PCは基本的にRGBな為)

この二つが絶対条件だと思います。

RGBAみたいな物もありますが、これはアルファチャンネル(透明色)を扱える物だと思います。
録画には必要ないと思われます(動画編集などでブルーバック背景を透明にして使いたい時などに、透明にした状態のデーター保存に使用すると思われる)

PS3などのゲーム機映像をキャプチャする場合のことはよくわかりませんが、PCゲームの録画の場合RGBで色を表現していますので、RGB以外の色空間ですとゲーム画面と、録画データーの色の見え方が変わってきます。
気づきやすい物として、赤の色が薄く見えるようになったり、ぼやけたように見えるようになります。
YUVやYV12などはRGBよりデータ(輝度)が間引かれてる?ため、見たままの映像を保存できません。
ですので、基本的にRGBで保存しなければ、データーは保存時に劣化していることになります。

(この段は嘘を書いている可能性が大きいので読み飛ばし推奨)
ここから先は、ちょっと自信が無いのですが、録画にYUVを使って録画した場合、元の画像はRGBで、録画にYUV、最終出力はH.264 x.264(mp4)などに保存する時にYV12(だったと思う)へ変換されますので、色空間の変換を2回することになるんじゃないかと思います。
色空間が違うと言うことは、表現できない色があると言うことだと思うので、それを複数回繰り返せば劣化が激しくなると思われます。よくわかってませんが、編集ツール内で、色空間の変更を勝手に行わないと仮定すれば、RGBで録画すれば、色空間の変換は最終出力の1回きりとなり、色の「にじみ」や「くすみ」が少なくなるのでは?と、思い込んでいます。(実際にPremiereなんかで編集すると、エフェクト欄にYUVと書いたアイコンが出てたりしますので、エフェクトをかける時に自動的に変換されていると思われます)
とりあえず、録画データーが元の画像に一番近いのがRGBであることだけは間違いありません。

ロスレスコーデックでも色空間がRGBでなければ、劣化(色のにじみやくすみ)するのは、たぶん間違いないと思います。複数の編集ツールを使う場合はなるべく同じコーデックで、なおかつ同じ色空間を使って出力しましょう

非可逆圧縮コーデックは、その名の通り元に戻せない圧縮方式なので、圧縮(エンコード)を繰り返せば繰り返すだけ劣化します。どうしても複数のツールで編集(カットや字幕はこのツール、リサイズはこっちのツールみたいな感じ)する必要がある場合は、ロスレスコーデックを使用しましょう。容量は必要ですが、編集中に無駄に劣化することを防げます

リサイズ(解像度の変更)は、あるはずのデータを間引いたり、無いデータを増やしたりしますので、劣化します。リサイズして出力したデータを、さらにリサイズすることはやめましょう。
高画質にリサイズできるアルゴリズムとしてLanczos3がよく使われますが、処理が重いとも言われています。
バイキュービック (BiCubic)でも十分高画質ですので、少しでも処理を軽くしたい場合はバイキュービックをおすすめします。

複数のアプリを使って編集する場合、最初にリサイズしてしまいましょう。

○最初にリサイズすることで動画容量を減らせる。
○解像度が下がればアプリの負荷も減らせる。
○字幕を入れる場合、リサイズされた物に等倍で文字が入れれるのでくっきりきれいに見える
×一度縮小した物をあとで拡大したくなった場合、綺麗にならない。

市販の編集ツールで編集する場合、リサイズアルゴリズムにLanczos3がない。リサイズはaviutl等でした方が良いのか?(どうしてもLanczos3を使いたい)

・バイキュービックでも十分綺麗です。無理にLanczos3を使う必要はないとおもわれます。
・字幕を入れている場合、字幕ごと縮小すると、文字が見えにくくなります。
 市販ツール側で解像度を落としましょう。その方が字幕文字が綺麗です。

 

32bitコーデックと64bitコーデック

最近は動画編集ツールの64bit化で、32bitコーデックを使って録画した動画データを64bit専用アプリで編集できない場合が出てきました。
例を挙げると、x264vfwコーデックで録画した物がPremierePro CS5 CS5.5 CS6等のネイティブ64bitアプリで編集できません。真っ黒な動画データに音声のみ聞こえるような状態になります。
これは64bitアプリが32bitのコーデックを呼び出せないので起こる現象です。
解決策は64bitコーデックを導入すればすむことなのですが、ほとんどの録画ツールは32bitプログラムです。
32bitのアプリは64bitコーデックを呼び出せません。困りました。

そこで登場するのが、「Proxy Codec 64」と言うツールです。
このツールは、64bitアプリケーションから32bitコーデックを利用できるようにするツールで、上のような問題を解決できるかもしれないツールです。
しかし、万能ではなく、処理が重くなったり、編集ツールによってはうまく作動しない場合もあります。
結局は一つのCodecで、32bit64bit双方で使える物を探すのが重要な気がします。

32bitの編集ツールを使っている限り、気にする必要は無い問題ですが、64bitの編集ツールを使用している方、
または、近い将来64bitの編集ツールを購入予定の方は注意が必要です
OSが64bitでも編集ツールが32bitなら32bit Codecを使って問題ありません)

64bitアプリで使えるコーデック

※すべてのコーデックを確認していませんので、間違えている箇所、使えるのに書いていない物があると思います。
ご了承ください。

ロスレス圧縮コーデック(可逆圧縮コーデック)

  • Lagarith Lossless Video Codec 高圧縮 マルチスレッド 海外製 リンク
  • Ut Video Codec Suite 高圧縮 マルチスレッド 日本製 リンク

非可逆圧縮コーデック(不可逆圧縮コーデック)

  • gopro cineform codec ビットレート30M以上 海外製 リンク

ロスレスは日本製のUt Video Codec Suiteがおすすめです。ですが、Lagarith Lossless Video Codecの方が、圧縮率が高くなる傾向にありますので、どちらも入れておいて損はないと思います。重いのはLagarithの方が重いです。

非可逆圧縮コーデックは今のところgopro cineform codec位しか知りません。
GoPro CineForm Studio についてくるコーデック(無料)要メールアドレス
x264vfw よりかは大きくなるがビットレートが30Mbps以上あるので仕方ない
x264vfwはビットレート15Mbps前後でそこそこ綺麗なので、ビットレートだけで見ても倍

32bitの編集ツールを利用されている方で、少しでも録画容量を減らしたいと思っている方は、x264vfwが最適かと思われます。ビットレート(またはクオリティー値)を自分で設定できるので容量と画質のバランスをとることが可能です 。

CPUの処理能力などに不安がある場合は上記のロスレスかgopro cineform codecをお試しください。
HDDの転送量に余裕があれば、たぶんコマ落ちなしに録画が可能かもしれません。

gopro cineform codecの設定

難しいことは何もありません
GoPro CineForm Studio(GoProで録画したデータの専用編集ツールです。GoProはウェアラブルHDカメラです。GoProを持っている必要はありません。メールアドレスと名前の入力で無料で手に入れることが可能です)をインストールすれば自動的にコーデックもインストールされます。
あとはDxtory等のキャプチャーツールでコーデックにgopro cineform codecを指定するだけです。

コーデック設定画像

Use Video Systems RGB(default off)

Dec Enc 双方チェック無し 自分の環境だけかもしれないけど、RGBのエンコーダー側にチェックを入れると、色が変になるため、自分は使っていません。

Use ITU.Bt.709(HD) colorspace(default on)

Dec Enc 双方チェックあり。非可逆圧縮を使う場合、どのみち画質は劣化してしまうので、色空間については気にしなくてもいいと思います。

Encoding Quality欄

基本的にMediumHDでOK。画質に不満がある場合はHighHDにするとよいでしょう。
Encoding Quality欄は下に行くほど高画質、高容量になっていきます。たぶんバランスが良いのがMediumくらいです。

Video Format欄:オートでもいいと思われるが、プログレッシブなのがわかっているので、Progressive指定

Pixel Aspect Ratio欄:オートでもいいと思われるが、普通はSquare Pixels(1.0)でいいと思う。

FFベンチ最初の二分間の容量 (±1秒) 音声込みのため多少ばらつきがあると思われる

Medium HD    =容量:約533MB ビットレート:約35Mbps

High HD       =容量:約639MB ビットレート:約42Mbps

x.264vfw      =容量:約133MB ビットレート:約7.6Mbps(Quality:CFR 16)

Ut Video Codec RGB=容量:約2383MB ビットレート:約160Mbps(デコード速度優先)

x264vfwとut videoについては参考の為表記。x264は画質が同じくらいと思われる最低限の値です。

画像比較

正確な数値ではありませんが2分間での容量でみると、x264vfwがダントツに小さくなる(ビットレートも低い)うえ、画質もそこそこ良い。ビットレートを10M前後まであげれば、画質の面でもほとんどGoProコーデックと同じになると思います。
一方Ut Video Codec RGBの方は、ぶっちぎりの大容量です。2分で2GB超えてます。画質は言うまでも無く最高画質ですが、撮りだめするには容量が大きすぎますね。

32bitの編集ツールを使っている人で、少しでも容量を節約したい方はx264vfwが最適でしょう。
64bitアプリの方は(PremiereProCS6等)今のところ無料で手に入るCodecではgopro cineform codecが最適ではないかと思います。


【この記事へのリンクはこちら】 【▲このページの先頭へ
http://net55.orz.ne.jp/contents/move/move02.html