オーディオとビデオを支える技術(3)-動画形式(mp4,mov,mkv...)とは、コーデックとの違い【コンテナ、フォーマット】

前回ビデオコーデックについての解説を行いました。
見てない人は、ここから閲覧していってください。

nakadasanda.hatenablog.jp

動画の仕組み

f:id:nakadasanda1:20200618222329p:plain
まず最初に「動画の仕組み」ご存じですか?
「動画の仕組み」というのは単純で、

  • 映像ファイル
  • 音声ファイル

の2つを、1つのファイルにまとめて、それを同時に再生して「動画だよ」としているだけなのです。
この時に「映像ファイル」と「音声ファイル」をまとめるときに使用するファイルフォーマット(mp4)とか(mov)みたいなものを「コンテナと呼びます。」


ファイルを「コンテナ」にまとめる事を

などと読んだりします。

コンテナの種類

コンテナの種類には、

  • 映像+音声の入るコンテナ
  • 音声の入るコンテナ
    • MP3
    • MP2
    • FLC
    • M4A
    • ...etc

などがあります。
例えば,mp3コンテナなら、ファイルの最後にmp3という拡張子がついています。
f:id:nakadasanda1:20200618222017p:plain

コンテナとコーデックの違い

「コンテナ」と「コーデック」を混同する人が多いですが、
↑で紹介した「MP4」などは、「コンテナ」で「コーデック」ではありません。
図で表すとこのようになります。
f:id:nakadasanda1:20200618223801p:plain

コーデックとは、

「コーデック」は「データを圧縮するアルゴリズム」のことを指します。
これだけでは、よくわからんのでかみ砕いて説明します。

まず最初に
「映像」の仕組みは、、複数の画像をパラパラ漫画みたいにめくって「映像」に見せかけているだけなのです。

最初の映画は、このおじさんみたいにフィルムに画像を記録して、高速に画像を回して、それっぽいように見せていることは、よく知っていると思います。
f:id:nakadasanda1:20200618224232p:plain

このフィルム一枚一枚の画像を全く圧縮せずに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
字幕対応 ×
ネット再生 ×
古い機種でも対応 ×
スキップ機能 ×

なので、
どの「コンテナ」に入れても同じというわけでは、ありません

まとめ

コンテナ :

コーデックで圧縮された「映像」「音声」ファイルを入れる入れ物、コンテナによって機能は、違う

コーデック :

「映像」や「音声」を圧縮するためのアルゴリズム

シリーズ一覧
nakadasanda.hatenablog.jp