ise2 AVC Team

動画再生マスターへの道 ( Page 1 2 3 ) <基礎知識>

 

コーデック(CODEC)とは、COmpresser DECompressor の略で、データを圧縮・伸張するソフトウェアのことです。(ファイルの種類拡張子とはまったく違うレベルのもの!) 前ページで見てきたように様々な種類があり、あるコーデックで圧縮された動画像を再生するには、該当するコーデックがインストールされている必要があります。

コーデックの基本

コーデックには、オーディオ(音声)コーデックと、ビデオ(映像)コーデックの2種類があり、ハードウェアと同様にWindowsでは「デバイス」として登録されています。
WindowsXPでは、「マイコンピュータ」を右クリック→「管理」→ウィンドウ左側の「デバイスマネージャ」から確認できます。


登録されているコーデックの詳細は「ビデオ(またはオーディオ)CODEC」をダブルクリックし、「プロパティ」タブをクリックします。
下の例(ビデオコーデック)では、Windowsにデフォルトで登録されているコーデック以外に、DivX、ffdshow、x264、XviDが追加インストールされていることがわかります。


では、実際に映像および音声(メディアファイル)に使用されているコーデックを調べてみましょう。コーデックチェッカーにも色々なものがありますが、管理人が使用しているのは
MMname2です。→(Download は作者サイトへ)
圧縮に関する詳細情報を得られると同時に、ファイル名にコーデック名を付加(リネーム)することができます。

再生の原理

DirectShow

コーデックでは、符号化(エンコード)と復号化(デコード)がワンセットになっていますが、動画の再生時(たとえば、Windows Media Playerにとって)は、DirectShowフィルタとして扱われています。
Windows 標準で対応しているメディア形式(映像・音声ファイル形式)はDirectShowと考えて差し支えないと思います。
DirectShow形式のメディアファイルが再生される際には、映像・音声それぞれにデコーダが伸張したビットストリームをVideo RendererDirectSound Deviceに渡すことで、もとのアナログ信号に戻しているのです。

Splitter

実際には動画ファイルでは映像本体と音声が合体(Mux)されています。これをそれぞれ対応するフィルターに渡すためには、分離する必要があります。この分離器をSplitterといいます。映像だけ・音声だけの場合も同様ですが、メディアファイルのビットストリームを適切なフィルターに渡すための機構です。
なお、無圧縮wavではParser、MPEG-2ではDemultiplexerなどといったものがこれにあたります。
DirectShowフィルタは、具体的にはSplitter ・ Decoder ・ Rendererのことであり、これらのステップを経てメディアファイルが再生される仕組みのすべてといえます。

DirectShowフィルタの例1
(映像がDivX、音声がMP3、コンテナがAVI(*.avi)の場合)

Windows 非標準の動画形式

上では*.mpeg[mpg]、*.mp2、*.mp3(MPEG系)や、*.avi、*.wav(Windowsビデオ/オーディオファイル)などのWindows標準形式の再生原理を説明しましたが、実はDirectShowフィルタの仕組みは非標準のメディア形式についても利用できます。つまり、SplitterとDecoder(コーデック)さえ用意すれば、(基本的に)その形式専用の再生ソフトを使わずして再生できるということです。
導入法の詳細については次ページの実践編で説明します。

その他のメディア形式/コンテナの例
  • RealMedia (*.rm、*.ram、*.rmvb、*.rpm)
      RealNetworksが提供するメディア形式。通常は、悪名高き(スパイウェア?)RealPlayerを使用して再生する。
      だが、コーデックとしてのRealVideoは再生負荷こそ高いものの、低ビットレートに強く高画質。
  • QuickTime (*.mov、*.qt)
      Appleが提供するメディア形式。これもQuickTime Playerが必要。QuickTime7ではコーデックに最新のH.264/AVCが使用されるものもある。
  • Ogg Media (*.ogm、*.ogg)
      音声にMP3よりも高圧縮・高音質なOgg Vorbisおよび、VBR(可変ビットレート)の音声を格納できるコンテナ。シーク速度が速い、音声ストリームを複数(多重音声)格納できるなどの機能が充実。
  • Matroska (*.mkv、*.mka)
      まだ発展途上の最新コンテナ。基本的にOgg Mediaでできることは大体カバーしている。上のRealVideoコーデックの映像を格納できる。オーバーヘッドが少ない、Ogg Mediaよりも格納できる字幕の制限がないなど、さらに使い勝手の向上を図った。
  • いろいろ出てきてややこしいのですが、コンテナとは文字通り"容器"のことで、映像・音声コーデックだけでなく、字幕や副音声等の"中身"をそのメディア形式にすべて格納してしまえるものです。(*.avi、*.ogm、*.mkv など)
    これに対し、MPEG、Windows Media、RealMediaなどはコーデックとメディア形式が一対一に対応します。"対応コーデックの広い動画形式=コンテナ"と捉えてもよいと思います。
    <注> OGGは音声コーデックではなく、"コンテナ"です! 勘違いされることが多いようですので、
         音声コーデックであるOgg Vorbisを略すときは、"Vorbis"といいましょう。

    DirectShowフィルタの例2
    (映像がRealVideo、音声がAAC、副音声がMP3、コンテナがMatroska(*.mkv)の場合)

    FourCC

    さまざまなメディア形式・コンテナをDirectShowフィルタで再生する際、メディア形式からSplitterは決定しますが、それに使われている音声・映像のコーデックを識別し、適切なDecoderに接続する必要があります。このとき識別のために用いられるコーデック情報はFourCC (4CC)と呼ばれ、ファイルの中に書き込まれています。