誰がためにキーを打つ

問題解決記録集。

コンテナとコーデックの話

(2018.05.21 更新)

 

動画を作る場合、今だと基本的にコンピュータを使うので「データ」ということになりますが、データ自身は、コンテナ(Container)と呼ばれるもの中に圧縮(Codec)されたデータが入って、ひとつのファイルになっています。
例えば、「H.264コーデックのmov形式のファイル」と書いてあった場合は、「コンテナ」がmov、「コーデック」がH264、となります。

 

◉コンテナ(Container)とは

コンテナは「入れ物」と訳されるとおり、圧縮した映像や音声のデータを入れる箱のことをいいます。「コンテナフォーマット」、「ファイルフォーマット」とも呼ばれます。主な形式としては、Windowsだと「avi形式」Macintoshだと「mov形式」がよく利用されますが、Youtubeやvimeoなどの動画共有サービスだと「mp4形式」がよく使われています。

 

◉コーデック(Codec)とは

映像データは基本大きいです。なので、なるべくコンパクトにするために圧縮をします。ただ、圧縮しすぎると映像の品質が下がってしまうので、どのあたりのバランスをとるか、が重要になります。その圧縮形式のことを「コーデック」と呼んでいます。ただ、「wmv」のようにコンテナとコーデックが同じ名前の場合もあるので、注意が必要です。また、CGなどを作るときは、静止画の連番を使用することも結構あります。ちなみに、「コーデック」という言葉は、そもそもは、データのエンコードやデコードをするハードウェアやソフトウェアのことを指していたりもするので、少しややこしいかもしれません。

 

圧縮をしても品質が劣化しない、というものも存在します。「可逆圧縮」とは、圧縮した後でも圧縮前の状態に戻せる、つまり、圧縮してもデータが劣化しなものを指します。「アニメーション圧縮」が代表的な例になります。「非可逆圧縮」は、圧縮した後、劣化してしまい元の品質に戻せないですが、大体の形式は「非可逆圧縮」になります。「不可逆圧縮」と呼ぶこともあるようです。「H264コーデック」の場合、「Hi444PP」だけ可逆圧縮のようですが、一般的にはあまり使われてないようです。また、全く圧縮しないものを「非圧縮」「無圧縮」と呼びますが、両者に実は違いがある、という話もあります。

 

◉中間コーデックとは

Youtubeやvimeo向けだと、H264形式のmp4ファイルを作るのが一般的ですが、その他のメディア向けにもいろいろな形式でデータを作成する場合があります。AfterEffectsやPremiereなどのプロジェクトファイルから直接それぞれのデータを書き出してもいいのですが、時間がかかることが多いです。
解決方法として、品質が高い「中間コーデック」という最終保存向けのデータを書き出して、そのデータから、mp4などの各データに変換する、という方法がよく利用されています。
私の場合は、「中間コーデック」に「Proresコーデック」を利用した、MOV形式のファイルを最終保存に利用しています。「Proresコーデック」は、業務用でよく利用されていますが、「Proresコーデック」「ProresHQコーデック」「Prores4444」などいくつか種類があります。ただ、Winの場合「Proresコーデック」を公式にサポートしなくなったようなので、GoProが利用している「CineFormコーデック」も広く利用されてきています。

 

【具体例】
いろいろな組み合わせがありますが、代表的な例を。

  • 動画共有サービス向けだと「H264コーデックのmp4形式」が一般的。
  • 中間コーデックでは、Macの場合「ProresHQコーデックのmov形式」が多い。
  • 中間コーデックでは、Winの場合「CineFormコーデックのavi形式」が多い。
  • Winの場合「divxコーデックのmkv形式」のデータ作成は一般的。
  • 「アニメーション圧縮コーデックのmov形式」は、データが非常に大きい。
  • 「非圧縮コーデックのmov形式」は、品質も高いがデータも非常に大きい。
  • 「非圧縮コーデックのavi形式」は、品質が高いがデータも非常に大きい。