オーディオとビデオを支える技術(3)-動画形式(mp4,mov,mkv...)とは、コーデックとの違い【コンテナ、フォーマット】
前回ビデオコーデックについての解説を行いました。
見てない人は、ここから閲覧していってください。
動画の仕組み
まず最初に「動画の仕組み」ご存じですか?
「動画の仕組み」というのは単純で、
- 映像ファイル
- 音声ファイル
の2つを、1つのファイルにまとめて、それを同時に再生して「動画だよ」としているだけなのです。
この時に「映像ファイル」と「音声ファイル」をまとめるときに使用するファイルフォーマット(mp4)とか(mov)みたいなものを「コンテナと呼びます。」
ファイルを「コンテナ」にまとめる事を
- 「多重化」
- 「カプセル化」
- 「コンテナ化」
などと読んだりします。
コンテナの種類
コンテナの種類には、
などがあります。
例えば,mp3コンテナなら、ファイルの最後にmp3という拡張子がついています。
コンテナとコーデックの違い
「コンテナ」と「コーデック」を混同する人が多いですが、
↑で紹介した「MP4」などは、「コンテナ」で「コーデック」ではありません。
図で表すとこのようになります。
コーデックとは、
「コーデック」は「データを圧縮するアルゴリズム」のことを指します。
これだけでは、よくわからんのでかみ砕いて説明します。
まず最初に
「映像」の仕組みは、、複数の画像をパラパラ漫画みたいにめくって「映像」に見せかけているだけなのです。
最初の映画は、このおじさんみたいにフィルムに画像を記録して、高速に画像を回して、それっぽいように見せていることは、よく知っていると思います。
このフィルム一枚一枚の画像を全く圧縮せずに1つの映像としてつなげてしまうと、膨大なサイズになってしまいます。
例えば私たちが普段見ている動画のほとんどが30fps(1秒間に30回画面が切り替わっている)ですが、
画像一枚のサイズが200kバイトだとすると
200k x 30 = 6000k →6Mバイトのデーターとなってしまいます。
この動画を10分間続けたとすると
3.6Gになってしまいます。
人によっては、スマホで視聴したら通信制限がかかってしまうかもしれませんね。
たった10分の動画を見ただけなのに。
そんなことが起きないように通常は、画像を圧縮していきます。
具体的には、
- 一枚一枚の画像を圧縮する。
- 前後でほとんど動かない画像なら似たような部分で圧縮する。(監視カメラで、周りの環境はほとんど動かないけど、動くものだけを後から合成する。みたいな感じ)
- ボールの移動のような規則的な移動をするものは、プログラムで後から作り出す。
といったような圧縮を、複雑なアルゴリズムを使って行います。
この時、圧縮するときに使われるアルゴリズムのことを「コーデック」と呼びます。
例えば、代表的な「映像」のコーデックだと「h.264」のようなものがあります。(ニコニコ動画や、youtubeが使っています。)
これは、「音声」でも同じです。
圧縮しない「音声」は大きなサイズになってしまうので、「音声」のコーデックを使って圧縮します。
それぞれのコンテナにすべてのコーデックは、入らない。
ややこしいのが
それぞれの「コンテナ」ですべての「コーデック」が使えるわけではないという点です。
例を挙げるとこのようになります。
「MP4」には、「h.264」コーデックはOK,「WMV9」コーデックはNG
「WMV」には、「WMV9」コーデックはOK,「h.264」コーデックはNG
どの「コンテナ」どのに「コーデック」を使用できるかは覚えるしかありません。
コンテナによる機能の違い
「mp4とAVI,で同じ映像と音声ならどっちに入れてもおなじなの?」
と思うかもしれませんが同じでは、ありません。
AVI | MP4 | |
字幕対応 | × | ○ |
ネット再生 | × | 〇 |
古い機種でも対応 | 〇 | × |
スキップ機能 | × | 〇 |
なので、
どの「コンテナ」に入れても同じというわけでは、ありません
まとめ
コンテナ :
コーデックで圧縮された「映像」「音声」ファイルを入れる入れ物、コンテナによって機能は、違う