『MPEGの圧縮技術』

はじめに

コンピュータで扱う動画は、静止画を毎秒何枚とコマ送りのように表示するものですが、容量を節約するために通常はMPEGなどの圧縮技術を使います。

このページでは、MPEGを例にあげて簡単な圧縮の原理と、MPEGの設定項目等で目にする『I』、『P』、『B』などのフレームの種類についてお話ししようと思います。

圧縮とフレーム

MPEG1を例にとってちょっと細かく動画圧縮の原理を説明します。

× × × :1フレーム目
× × × × :2フレーム目
× × × × :3フレーム目
× × × × :4フレーム目
× × × :5フレーム目
× × × :6フレーム目

という動画があったとします。
これを前の画像から変化した分だけを記録すると

× × × :1フレーム目(キーフレーム)
× :2フレーム目
× :3フレーム目
× × × × :4フレーム目(キーフレーム)
:5フレーム目
× :6フレーム目

となって各フレームの記録するデータが大幅に減るワケです。実際にはさらに後ろの画像との差も考慮されるものもあります。

MPEG1のフレームには次の3種類のフレームがあります。

上から順にI-フレーム、P-フレーム、B-フレームと呼ばれています。 一般的なMPEG1のインターバルは I Frame 15 P Flame3でIBBPBBPBBPBBPBBIBBPBBPBB …のようになっているようです。ちなみに、Iから次のIまで IBBPBBPBBPBBPBBをGOP(Group of Pictureの略)と呼びます。

GOP単位の編集

編集ソフトによってはこのGOP単位での編集のみサポートしたソフトがあります。これはこの塊づつならば編集しても影響がでないためです。 ただし、そうとも言い切れないということは少し考えればわかります。というのはIBBPBBPBBPBBPBB の最後のBは次のIフレームとの差も考えてつくられています。ここで、次のIフレームが無くなったらこのBフレームは表示できなくなるのです。

そこで、より編集を楽にできるように、GOP内部で完全に完結するように最後のBをPのようにする方法があってClosed GOPと呼ばれます。この設定でMPEG1をエンコードすれば本当にGOP単位での編集が正しく可能となるのです。

フレーム単位の編集

日本の放送方式がNTSCで29.97であることを考えるとGOPは15フレームで約0.5秒となることになります。この0.5秒という時間は短いですが、人間の目に余裕で認識できる時間です。よって保存するものをしっかり編集したい場合はGOP単位ではなくフレーム単位で編集する必要があります。

ただし、上記のとおりGOPの途中のコマで切った場合にそのGOPは不良となってしまうので一旦デコードして再度エンコードすることになります。しかし再エンコードすることは著しい画質劣化を生むだけでなく、無駄に時間がかかるので避けたいものです。

そこで考えられたのは壊れてしまったGOPのみを展開して再エンコードする方法でスマートレンダリングと呼ばれる方法です。フリーソフトなどで対応したものはすくないですが、ちゃんとした編集ソフトであれば対応しているものが多く、きちんと編集するにはこの方法がベストでしょう。

ちなみに、理論的にはスマートレンダリングはたかだか一つのGOPを展開して再エンコードしているだけのはずなのに妙に時間がかかったりします。やはり下準備などがいろいろあるのでしょうか?