オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

AVCHDのデコーダー:動画再生の仕組み

»

昨日、デジカメを購入したのですが(その話はまた今度)、そのデジカメはフルHDの動画撮影が出来るもので、デジカメ自体が欲しいのはもちろんでしたが、デコーダーが欲しいという気持ちもありました。

動画には様々なフォーマットがあり、フルHDではパナソニック・ソニーによるAVCHD形式が多い感じでしょうか。AVCHDは多重化にMPEG2-TSを、映像はH.264/MPEG-4 AVC方式、音声はドルビーデジタル (AC-3) 方式という感じで、拡張子は「*.m2ts」とつけられるようです。

動画を再生するためにはデコーダーが必要で、動画形式によって必要なデコーダーが異なります。普段はあまり意識しなくても、インターネットの動画を見ることができるでしょうし、DVDやブルーレイの映像を見られると思いますが、AVCHDのデコーダーはまだ比較的新しい規格ということもあり、あまり出回っていない感じです。

Windowsの場合、動画の再生はDirectShowという仕組みを使って行うのが一般的で、WindowsMediaPlayerもその仕組みを使っています。DirectShowは複数のフィルタと呼ばれるモジュールを組み合わせて実現され、再生の場合は、多重化をほどくDemuxフィルタ、映像のデコーダー、音声のデコーダーが使われます。AVCHDでは映像のデコーダーがなかなかないのです。

AVCHD対応のデジカメを購入すると、付属のインストーラーで必要なデコーダーもインストールされ、再生できるようになります。使われるフィルタは次のような感じになります。grapheditというツールを使って確認できます。

Ge1

左から、「ファイルソース」「パーサー(Demux)」ここで音声と映像に分かれ、「音声デコーダー」「サウンドデバイス」、「映像デコーダー」「ビデオレンダラー」と流れます。SONY製の「パーサー」「映像デコーダー」がAVCHD独特のもの、と言えるでしょう。

デコーダーはフリーのものもありますし、有償のものもありますが、いずれにしてもフィルタが揃わないと音声と映像が再生できません。

Ge2
フィルタが揃う環境であれば、こんな感じにWindowsMediaPlayerで見ることができるようになります。フルHDでは1920x1020という、一昔前なら静止画の解像度と言えるくらいの情報量で、これが動くというのは、はじめてフルHDの再生を見たときには感動したものでした。今では当たり前になりつつありますね。。

少し前に、DirectShowを使ってMPEG2-TSのある特殊な用途に向けたDemuxフィルタを開発する仕事をしたのですが、MPEG2のフォーマットの複雑さはもちろん、DirectShowがなかなか言うことをきいてくれなかったのにも悩まされました。

MacOSで再生する方法はまだ試していないのですが、とりあえずフリーソフトのVLC(VideoLAN)では映像が乱れてしまう感じです(バージョンが古いかも知れませんが)←新しいバージョンで再生できました!。Demuxまではうまくいっていて、映像デコーダーがうまく対応できていない感じです。

パソコンでの動画再生はできて当たり前、となりつつありますが、実は裏ではこんな感じに結構複雑に動いている、というお話しでした。

Comment(0)