20.2. 動画の符号化
コンピュータやインターネットの発展、さらには携帯電話などのビデオカメラ機能を搭載した機器の普及によって、コンピュータや携帯端末で動画を鑑賞することは日常茶飯事になりました。この節では、そういった動画がどのように符号化されているのかを説明します。
一般的に「動画」と言われるものは、多くの場合「(動きのある)視覚情報」と「聴覚情報(=音声)」の両方を含んでいます。音声の符号化は 14.5. 音の符号化 で説明していますので、以下では視覚情報部分の符号化およびこれを音声と一緒に記録すること(多重化といいます)に焦点を当てます。便宜上、この節では特に断らない限り「動画」という言葉で視覚情報部分のみを指します。
動画の符号化 #
コンピュータは動画をたくさんの静止画像(普通、ラスタ画像)の集合体として保存します。コンピュータが非常に短い間隔で画像を次々と表示すると、人間はそれが連続して動いているように知覚するのです。その表示される 1 つ 1 つの画像をフレームと呼びます。また、1 秒間に表示するフレームの数を fps (frame per second) という単位で表します。たとえば、2016 年現在の日本の地上デジタルテレビ放送 (ISDB-T) では、29.97 fps で動画を表示します。
動画の圧縮・復号とビデオコーデック #
動画のフレーム数は膨大なの組みで動画データを圧縮しておき、再生するときに復号してフレームを作り直すようにしています。このようなデータの圧縮と復号の方式を、一般にコーデックといいます。また、圧縮や復号に用いられるソフトウェア自体もコーデックと呼ばれることがあります。
動画のコーデック(ビデオコーデック)にはさまざまなものがあります。
先に述べたように、動画は画像を繋げているものですから、 14.4. 画像の符号化 で説明されているような画像の圧縮手法を用いて、各フレームを圧縮することができます。このように、フレームごとに圧縮する動画の符号化のことをイントラフレーム圧縮と呼びます。イントラフレーム圧縮は単純な静止画圧縮の応用なので、構造が単純で動作も軽快ですが、あまり効率が良い圧縮方法とはいえません。単純な構造を活かして、動画編集など処理の速度を求める分野では今なお使われていますが、十分な質を保つにはファイルサイズが大きくなりがちなので、保存や通信には向かないのです。
さらに動画の圧縮効率を上げるための技術の主なものに、フレーム間予測と呼ばれるものがあります。動画は多くのフレームからなっていますが、時間軸上で隣り合うフレームは非常に似たものになりがちです。たとえば人が歩く 30fps の動画の場合、各フレームには人間が描かれ、1 フレーム= 1/30 秒単位で少しずつ動いていきます。ですから 1 フレームあたりのずれは微々たるものです。このことを利用して、映像を符号化する際は一部のフレームだけを完全な画像として記録し、残りのフレームはわずかな情報(動きの方向など)だけを記録して前後のフレームから予測することができます。これがフレーム間予測と呼ばれる技術です。このフレーム間予測により、データサイズを大きく削減できるのです。今日の動画コーデックの多くはこのフレーム間予測を用いています。
フレーム間予測の方法は一通りではなく、その違いがコーデックの違いを生む一つの要因になっています。コーデックによっては、フレームを細かい区域に分けてフレーム間予測をすることで、予測精度を上げるなどの工夫がなされています。たとえば H.264|MPEG-4 AVC コーデックでは、フレーム間予測の区域の種類をそれまでのコーデックよりも増やし、圧縮効率を上げています。
フレーム間予測で、完全に保存されるフレームのことを I フレームあるいはキーフレーム、予測により再現されるフレームを P フレーム(時間軸上の前のフレームから予測するもの)または B フレーム(時間軸上の前のフレームや後のフレームから予測するもの)と呼びます。イントラフレーム圧縮は、フレーム間予測による圧縮ですべてのフレームを I フレームにしたものと考えることもできます。
主要なビデオコーデック #
イントラフレーム圧縮を用いるもの: Motion JPEG: 静止画のJPEG圧縮と同等の方式によりイントラフレーム圧縮を行うものです。
フレーム間予測を用いるもの: H.264|MPEG-4 AVC: MPEG-4 規格の中で、比較的後になって追加されたコーデックです。AVC は Advanced Video Coding の略です。2016 年現在、Blu-ray ディスクのビデオ作品、地上デジタルテレビ放送(ワンセグ)、デジタルビデオカメラ、スマートフォンの動画撮影機能など、幅広く利用されています。
H.265: H.264 の後継として開発されたコーデックで、HEVC (Hight Efficiency Video Coding) と呼ばれることもあります。2016 年現在では、ネット動画配信サービスや 4K 放送への導入が始まっているほか、将来的にはスーパーハイビジョンテレビ放送 (Ultra High Definition Television) への利用などが期待されています。
VP8、VP9: いずれも、Google が開発を主導するオープンソースなコーデックです。VP9 のほうがより新しく圧縮効率も向上しています。2016 年現在、Google Chrome や Mozilla Firefox などのウェブブラウザが標準で対応しており、Google の Youtube をはじめとするウェブ上での動画共有で利用が広がりつつあります。
MPEG-4 Visual: MPEG-4 規格の策定当初に作られたビデオコーデックです。携帯機器への利用が念頭に置かれています。
MPEG-2 Video: MPEG-2 規格の中のビデオコーデックです。2016 年現在では、日本のデジタルテレビ放送や DVD-Video などで利用されています。
Windows Media Video: 主に Microsoft Windows 上で動画を扱うためのコーデックです。WMV と略されることがあります。様々なバージョンがありますが、2016 年現在は主に WMV9 という規格が用いられます。また、WMV9 規格の一部を取り出した標準規格に VC-1 があり、Blu-ray ディスクのビデオ作品に用いられています。
視聴覚情報の多重化 #
節の冒頭で述べたとおり、多くの動画には一緒に音声が用意されています。動画と音声を同時に記録・再生するには、2つをどのような形式でまとめるかを決めなければなりません。このように、一連のデータの流れの中に複数のデータを格納することを一般に多重化といいます。そして、動画や音声の多重化の方法のことをコンテナといいます。
それぞれのコンテナには、動画や音声のデータの格納の仕方が決められています。例えば、コンテナにより使用できる動画・音声のコーデックが異なります(非圧縮の動画・音声を格納できるものもあります)。また、格納の仕方の違いによって、適する用途も変わってきます。テレビ放送やストリーミング再生(動画データをダウンロードしながら再生すること)に適するコンテナもあれば、ファイルとして保存することに適するコンテナもあるのです。さらに、コンテナによっては音声や動画に限らず様々な情報を格納できます。たとえば MP4 コンテナは、動画や音声に加え、字幕情報を格納することができます。動画を発信する際には、目的に合ったコンテナを選ぶことが大切です。
コンテナの種類は、多くの場合ファイルの拡張子を見て判別することができます。
主要なビデオコンテナ #
MP4 (MP4 ファイルフォーマット): 主に MPEG 規格の動画・音声を格納できるコンテナです。拡張子は普通 .mp4 を使います。後述する QuickTime ファイルフォーマットが元になっています。: QuickTime ファイルフォーマット: Apple の QuickTime で動画を扱うためのコンテナです。拡張子は .mov を使います。様々なコーデックの動画・音声を格納できます。
AVI: Audio Video Interleave の略で、Microsoft によって開発され、Microsoft Windows で長らく標準とされているコンテナです。拡張子は .avi を使います。新旧問わず非常に多岐にわたるコーデックの動画・音声を格納できる反面、これがコンテナからは再生に必要なコーデックが推測しづらいという欠点にもなっています。
ASF: Advanced Systems Format の略で、Microsoft によって AVI の後継として開発されたコンテナです。拡張子は、Windows Media Video コーデックの動画を含む場合 .wmv を、Windows Media コーデックを使わない場合は .asf を使います。AVI に比べるとストリーミングに適するなどの特徴があります。
MPEG-2 PS: MPEG-2 規格で定められたコンテナです。拡張子は普通 .mpg を使います。PS は Program Stream の略で、ファイルとして記憶装置上で取り扱うことを目的としています。DVD で用いられます。
MPEG-2 TS: MPEG-2 規格で定められたコンテナです。拡張子は .ts や .m2ts などを使います。TS は Transport Stream の略で、放送や通信での配信を主目的としています。2016 年現在の日本のデジタルテレビ放送や Blu-ray Disc、デジタルビデオカメラなど幅広く用いられています。例えば、デジタルテレビ放送で 1 つの放送局が複数の番組を同時に放送できるのは、MPEG-2 TS が複数プログラムの同時格納を可能にしているからです。
WebM: Google が開発を主導するオープンソースなコンテナです。拡張子は .webm を用います。Matroska というオープンソースコンテナから派生しました。2016 年現在、格納できる動画コーデックは VP8 または VP9、音声コーデックは Vorbis または Opus です。Google の Youtube をはじめウェブ上での普及を目指しています。
まとめ #
ここまでの内容をまとめると、音声付きの動画の符号化には
- 音声、動画それぞれの圧縮形式であるコーデック
- 音声、動画を格納の方法であるコンテナ
の 2 つが関わっているということになります。「MPEG-4 コーデック」と「MP4 コンテナ」など紛らわしい言葉も多いため、「動画の形式が……」という場合にどちらを指しているかよく考えるようにしてみてください。
同じ拡張子の動画ファイルを同じコンピュータで再生しようとしても、できるものとできないものが混在することがあります。これは、同じコンテナでも中の音声や動画に使われているコーデックが異なり、コーデックが用意されていないことを原因として起こります。