動画の差分圧縮について | 音響・映像・電気設備が好き

音響・映像・電気設備が好き

「ヒゲドライバー」「suguruka」というピコピコ・ミュージシャンが好きです。

近年、一般の方にも浸透している動画圧縮ですが、この基本となるのは時間軸方向への圧縮です。
今回、この時間軸圧縮について述べたいと思います。

イメージ 1

ここに12フレームで構成された動画があります。今回のお話はこの12フレームを基準として考えます。
※毎回、CAPCOMのロックマンを使用していますが、この手の説明ほどドット画が適しているのです。

イメージ 2

一般の方が想像できる圧縮方式として、全フレームをイントラ・ピクチャ(Intera Picture)として扱い時間軸方向に圧縮を行わない方法があります。
DV圧縮や、Motion JPEG、連番静止画保存がこれに当たります。圧縮率は一番低いものの、OSを超えたファイルの受け渡しや、形式によってはアルファチャンネルを持たせられるのでCG合成用中間ファイルに好都合です。また、差分の復元などを行わないのでシーク速度が一番早い事も特徴です。
※イントラ・ピクチャはIフレーム(I flame)やキー・フレームなどとも呼ばれている。
※また、圧縮する際にマシンパワーを必要としないメリットがあるので、HDキャプチャでは代表的な方式でした。
※アルファチャンネルを持てる動画コーデックは非常に少ない。代表格はcanopus HQ・Apple ProRes。

イメージ 3

時間軸(差分)圧縮の概念
時間軸圧縮を簡単に説明すると、次フレームから現在のフレームの差分のみを記録する方式です。
※GIF動画全盛期を通過したWebクリエータの方には説明はいらないはずですよね…
この差分データをPフレーム(Predictive Picture)と呼びます。
上図を見ていただければ概念が分かりやすいと思います。

それでは、全てのフレームがPフレームの場合はどうでしょうか?

イメージ 4
イメージ 5

差分データであるPフレームのみでは「早送り」や「巻き戻し」がし難く、冗長性に欠けるため適度にIフレームを打つ必要があります

以下は4フレームごとにIフレームを打つ場合の模式図です。
イメージ 6

この、Iフレームから次のIフレームまでの画像グループをGOP(Group of Picture)と呼びます。
大まかに説明すると、これが時間軸圧縮です。

この他に、IフレームとPフレームの差異(変化した量)から逆時間・順時間の双方向に予測圧縮されたフレームがあり、これはBフレーム(Bi-directionally Predictive Picture)と呼ばれます。
※ドット絵だとこれ以上は挿絵にしても分からなくなる(笑)
圧縮率を上げれば、当然、復元(デコード)に時間がかかり、シーク速度は低下していきます。
エンコードを行う側は「1フレームを復元するのに1フレーム掛かったのでは意味がない」という至極当然の結論を忘れず、デコードのパフォーマンスとのバランスをとらなければいけません
※しかし、高圧縮動画のシーク速度向上はThomson canopusが技術的に解消したようですね…もはや常識は通用しませんね。

GOPの記載方法として、最初に挙げた全フレームをIフレームとして扱う場合を、

IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

とし、

4フレームに一度Iフレームを打つ場合は、

IPPPIPPPIPPPIPPPIPPPIPPPIPPPIPPPIPPP

とします。
この場合、「IPPP」が「GOP」です。

アクロバティックな圧縮方法であるBフレームを取り入れると代表的なGOPは

IBBPBBPBBPBBPBBIBBPBBPBBPBBPBBI

となります。
これは15フレームごとにIフレームを1、Bフレームを2、Pフレーム距離を3としたMPEG圧縮です。
この場合、「IBBPBBPBBPBBPBBI」が「GOP」です。

イメージ 7

参考までに、ノンリニア編集ソフトのMPEG書き出し画面。
IフレームとBフレームを指定できる。※Pフレームは逆算で求める
高度なエンコーダだと、この画面にあるようにIフレームを任意の場所に指定できる

駆け足でしたが、以上で説明はおしまいです。
数日経ったら、精査して手直しをしますのでご了承ください。


この二つの業務用ネットワークプレーヤが扱える静止画はMPEG2のイントラ・ピクチャ(Intera Picture)のみなのですが、知識がないとなんとことだか分りませんよね…(笑)
仕事で、このプレーヤで読める静止画書き出しを行ったのですが設定を詰めるまで苦労しました。
※今では完璧にこなせます!