MOVで書き出したh.264映像が汚い場合に確認すべきポイント

この記事では、MOV形式でh.264を書き出す際に覚えておきたいポイントを紹介しています。

はじめに

先日、納品物のひとつとして、h.264の動画ファイルを書き出すことになりました。

コンテナ(動画形式)はクライアントの指定で「MOV」形式。

私の環境では 普段 h.264で書き出す際のコンテナは「mp4」を用いることが多く、Media Encoderには「MP4&h.264」用の独自プリセット(テンプレート)も用意してあるのですが、MOVで書き出すのは久しぶりでした。

書き出した映像が汚い・・・

とはいえ、特に面倒な指示があるわけでもなかったので、あまり深くも考えず Adobeのメディアエンコーダで以下のような設定で書き出しました。

  1. 形式:MOV
  2. ビデオコーデック:H.264
  3. 品質:100
  4. ビットレート設定:2000kbsに制限

ビットレートの設定に関して、先方から具体的な数値の指定はなかったのですが 「動画ファイル全体の容量を20MB以内に抑えてほしい」という要望があったため、何度か試行錯誤することを前提に、とりあえず2000kbにしてみました。

そのようにして書き出したのが以下の画像。

赤いカーテンの前に紙ふぶきが降り注ぐ映像なのですが、圧縮ノイズ(モスキートノイズ)が激しくてとても見れたものではありません。

ビットレート設定の数値をあげれば、それなりに画質は向上するのですが、それだと、とんでもなく容量が増えてしまいます。

また、いつものMP4コンテナで書き出すh.264映像に比べると、明らかに圧縮率がよろしくない(画質も汚いしデータ量も多い)感じです。

しかし、MOVやMP4といった「コンテナ」は、その名のとおり あくまで「容器(いれもの)」に過ぎないはずで、その違いだけで画質や容量にそこまで差が出るとも思えません。

原因は「キーフレーム」の設定

そこであれこれ調べてみたところ、どうも「キーフレーム」の設定が鍵になっているらしいことがわかりました。

「キーフレームの間隔」に数値をいれてみた

最初は、詳細設定項目で「キーフレームの間隔:」にチェックを入れていなかったのですが、ここにチェックをいれて「キーフレームの間隔:5フレーム」にしたところ・・・

一気に画質が向上しました。

キーフレームに関して

キーフレームというと、PremiereやAfterEffectsで「タイムライン上に打ちこむ アニメーションの基点」のことを思い浮かべる方が多いと思いますが、ここで問題となっているのは、それとはまったく別のお話です。

H.264などのコーデックは「フレーム間圧縮」といって、動画を構成している各静止画の共通要素を間引くことによってデータ容量を軽減しています。

この場合、映像を構成する静止画は大きく以下の2つの種類に分けられます。

  1. 100%の情報を持ったベース画像(Iフレーム)

  2. そのベース画像同士の差分情報だけを持つ参照データ(P/Bフレーム)

このうち(1)が、ここで「キーフレーム」と呼ばれているものです(以下の「AviUtlの易しい使い方」さんの記事が分かりやすいです)。

キーフレームとは?Iフレーム・Pフレーム・Bフレームの違い【GOP】

動画の於ける「 キーフレーム 」の意味について紹介します。 ※動画をエンコードする際や、無劣化(再圧縮なし)で動画をカットしたい際などに役立つ知識です…

つまり「キーフレームの間隔」というのは、100%の情報を持ったベース画像同士の間に何枚の参照フレームをいれるか?・・・という意味なわけです。

Adobe Media Encoder CS4 * ビデオとオーディオのエンコードについて

ネイティブフレームレート(ビデオが最初に撮影されたときのフレームレート)では、ビデオが最適な状態で表示されるため、配信チャンネルと再生プラットフォームに余裕がある場会は、フレームレートを高いままにすることをお勧めします。

「キーフレームの間隔」に入れ込む数値と画質・データ容量との関係性は以下のような感じになります。

  • キーフレームの間隔の数値が「小さい」・・・高画質だがデータ容量は大きくなる

  • キーフレームの間隔の数値が「大きい」・・・低画質だがデータ容量は小さくなる

「キーフレームの間隔:」にチェックをいれない場合、メディアエンコーダ側で 自動的に「キーフレームの間隔」の数値が割り振られるはずなのですが、どうも その数値があまりよろしくないようです。

まとめ

ちなみに、コンテナをMP4にして書き出す際は「キーフレームの間隔」の設定をしなくても(自動設定であっても)高画質で書き出されます。

なので、MOV形式で「キーフレームの間隔」にチェックをいれない場合の「自動設定」の数値が、結構大きいもの(=画質が低いもの)になっているのかも知れません。

Mov形式でH.264を書き出す際に「映像が汚いな・・・」と感じた方は「キーフレームの間隔」の項目を調整してみましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です