DTV Page!
サイト内検索 :
Desk Top Video-editing
野田無線 > ホーム > やってみよう! DTV > コーデックって何? Get Navigator
DTVって何?
やってみよう! DTV
テクニック
映像のいろいろ
システム事例集
未来のDTV
DTV関連FAQ
当HPの趣旨,注意
DTV関連BBS
BBSタイトル一覧
リンク集
製品情報
E-mail

line
line
DTV Page!
line
line
line
野田無線 on the Web
line
シボレー・アストロ / GMC サファリ
line
書評 (Book Reviews)
line
line

コーデックって何?



  1. コーデックとは?
     データを符号化(encode)したり,符号化されたデータを復号化(decode)する時に使用する技術をコーデック(codec)と言います。 要は,データを小さく圧縮することを符号化,圧縮されたデータを元にもどすことを復号化と言い,この符号化・復号化に使う演算等のアルゴリズムをコーデックと言います。 Encode,Decodeは,正式には符号化,復号化と訳しますが,パソコン通信時代の名残で,Encodeのことを圧縮,Decodeのことを伸長,展開,解凍などとも呼びます。

     一口にコーデックと言っても,使われる信号の種類や目的によって,非常に多くの種類があります。 主なコーデックを例に挙げると,電話のアナログ信号では,32KHzコーデックや8KHzコーデックなどのアナログ信号用コーデックが使用され(1), PCのプログラムファイルでは,LZW法と呼ばれるコーデックが使用され(2),静止画や動画には,DCT(Discrete Cosine Transform : 離散コサイン変換)と呼ばれるコーデックが使われています(3)
    注1:
     32KHzコーデックや8KHzコーデックの周波数は,符号化時のサンプリング周波数を示していて,1秒間に何回変化率を求めているかを示しています。
    注2:
     ZIPやLhaを圧縮・解凍ソフトと紹介している事例が多くありますが,ZIPやLhaの主となる機能は,複数のファイルやディレクトリ構成をまとめるアーカイブ(書庫)の作成です(このため,アーカイバーと呼ばれます。)。ただ,アーカイブ作成だけでは不便なので,LZW法を用いた圧縮・解凍機能が付加されているのです。これに対し,UNIXで用いられるアーカイバー"tar(ター)"は,単にアーカイバーとしての機能しかなく,圧縮・解凍機能をもっていません。
    注3:
     JPEGは,DCTのみ使われているのではありません。圧縮時にDCT,量子化,エントロピー符号化が行われ,展開時にエントロピー復号化,逆量子化,逆DCTが行われています。そして,DCTそのものは単に係数をはじき出しているだけで,得られたDCT係数は完全に元の情報を含んでいます。このDCT係数を量子化する過程で,情報の一部が欠落する仕組みになっています。


     コーデックには,可逆圧縮するものと不可逆圧縮するものがあります。
     ZIPやLhaに使われているLZW法は,データの中で繰り返し現れる数値やパターンを,数値と繰り返し数に置き換えることでデータを圧縮しています。 このため,圧縮率は低いですが,元のデータの情報をすべて含んでいるので,展開して完全に元に戻せる(可逆)圧縮方法です。
     これに対し,静止画や動画の圧縮に用いられるJPEGやMPEGなどは,高圧縮率を実現するために,圧縮時にデータの一部を省いてしまい,展開しても元の情報を得られない(不可逆)圧縮方法です。

  2. 何故コーデックが必要になるのか?
     通常,ディジタル化された動画は,コーデックを使って圧縮する前に,ある程度情報を省いてデータを小さくしています。 「色空間のいろいろ」で詳しく述べますが,ビデオカメラ等のCCDでスキャンされた映像は,輝度についてはすべての情報を記録しているものの,彩度については1/2〜1/4の情報しか記録していません。
     デジタルカメラでは,輝度,彩度ともにすべての情報を記録(YUV=4:4:4)していますが,高画質のMotinJPEGでは彩度を1/2に(YUV=4:2:2),MPEGやDV-PAL(YUV=4:2:0),DV-NTSC(YUV=4:1:1)では彩度を1/4にしたディジタルデータを作っています。 例えば,プロ向けの高画質ビデオであるビクターのDigital-Sでも,彩度を1/2(YUV=4:2:2)にして記録しています。
     これは,アナログのビデオ映像でも同じで,ベータやS-VHS,Hi8でも輝度信号には十分な帯域を確保していますが,彩度には比較的小さめの帯域しか確保していません。 ただ,S-VHSやHi8よりもベータの方が(輝度,彩度両方において)より広い帯域を確保しているだけです。

     では,一般的に用いられることが多い,720×480ピクセル,毎秒30フレーム,彩度を1/4にしたディジタルデータを想定し,データ量を算出してみます。
     彩度を1/4にしたカラーディジタル映像では,1ピクセル当たり12bit=3byteのデータ量になります。 これに720×480ピクセルを乗じて,さらに30フレームを乗じると,毎秒31,104,000byte,約29.66MBものデータ量になります。 例え,10GBのHDDを使っても,わずか5分45秒の映像しか記録できません。 これが彩度を1/2にした映像になると,1ピクセル当たり16bit=4byteになるため,毎秒39.55MB。10GBのHDDでも4分18秒しか記録できません。
     ランレングス法,ハフマン符号化,LZW法などの可逆圧縮を使っても,ビデオカメラで撮影するような映像は,せいぜい2/3程度にしか圧縮できません。 これでは,データ転送にブロードバンドの光ファイバやIEEE1394を使っても理論値ギリギリに近いレートで,記録媒体に最速のHDDを使っても記録や読み出しが追いつかないほどで,さらに,2時間の映画を記録するために140GB以上の容量が必要になってしまいます。
     このため,ディジタルの動画映像を扱うためには,高圧縮が可能な不可逆圧縮技術が必要になっています。

     なお,動画の圧縮には,静止画の圧縮方法であるJPEGの技術が応用されています。
     JPEGでは,8×8ピクセルのブロックに切り分けて離散コサイン変換します。これで得られたDCT係数を量子化するときに情報の一部を省き,さらに量子化された数値をハフマン符号化(コードテーブルを作成して,出現頻度の高いパターンに頻度の低いパターンを当てはめる可逆圧縮)し,非常に高い圧縮率を実現しています。 これを応用して,MPEGでは,ある基準フレームをJPEG同様の手法で圧縮し,その前後の参照フレームでは,基準フレームとの差分情報のみを記録して圧縮しています。 (こうした映像の国際規格について,さらに詳しい情報が欲しい方は,UNISYSUNISYS 技報 50を参照してください。)
     また,DVもJPEGと同じようにDCTを使った圧縮をしていますが,圧縮率が1/5に限定されているところがJPEGやMPEGと異なります。

  3. どのようなコーデックがあるか?
     現在,一般的にDTVで使われるコーデックは,以下の種類があります。( )内は,1秒当たりのデータ量,fpsはフレーム・パー・ピクセル(フレーム/秒)を表しています。 また,YUVについては,「色空間のいろいろ」を参照してください。
    1. MPEG1 (150KB〜250KB)
       ビデオCDに使われているコーデックです。主にYUV=4:2:0,356×240ピクセル,25〜30fpsの映像が使われています。
    2. MPEG2 (1.8MB〜2.5MB)
       DVDに使われているコーデックです。主にYUV=4:2:0,720×480ピクセル,30fpsの映像が使われています。
    3. DVコーデック (3.6MB前後)
       DVカメラやDVデッキに使われているコーデックです。DV-NTSCでは,YUV=4:1:1,720×480(486)ピクセル,30fps,1/5の圧縮率になっています。
    4. MotionJPEG (300KB〜3MB程度)
       "モーション・ジェーペグ"と読みます。YUV=4:2:2〜4:1:1,320×240〜720×480ピクセル,15〜30fps,1/3〜1/25の圧縮率が使えるようになっています。
       アナログビデオキャプチャカードに最も多く採用されているコーデックで,静止画の圧縮に使われているJPEGを動画に利用したコーデックです。
       JPEGが様々なピクセルサイズや圧縮率に対応した規格であるのに対し,ビデオキャプチャカード上で圧縮・展開処理をするDSP(ディジタル・シグナル・プロセッサ)は,そもそも特定の演算に特化した半導体チップです。このJPEGの汎用性が仇となって,各社のビデオキャプチャカード上のDSPチップに,必ずしも同一の汎用性が持たされているわけではないので,同じMotionJPEGと名の付いたコーデックを使った映像でも,使うキャプチャカードが異なると扱うことができない場合があります。
       なお,DVコーデックが特定のピクセルサイズ,圧縮率とされているのは,演算が特定されることで安価な汎用性のないチップを使うことができるためです。
    5. Sorenson, Cinepack,Indio(IVI),MS-Video1
       Quick TimeやVideo for Windowsに使われているコーデックです。 この他に,Quick Time,Video for Windowsともに,非圧縮やアニメーション用のコーデックがありますが,動画に使う高圧縮のコーデックは,Quick TimeではSorensonやCinepack,Video for WindowsではCinepackやIndeoです。
       MS-Video1は,ほとんど使われないと言いますか,役に立ちません。余談になりますが,マイクロソフト社は,元をたどれば他社開発の技術が多く,センスのかけらもなく自社名を冠して,お馬鹿な仕様のものがあまりにも多くあります。 WindowsやMS-officeを使っているからと言って,MSを崇拝してはいけません。連日のようにセキュリティ問題が噴出したり,バグが直ってないのにバグフィクスと称して,さらに多くのバグを提供してくれている会社であることを冷静に考えましょう。

     上記のコーデックのうち,ビデオ編集に用いるのは上側の4つです。 一番下のコーデックは,Quick Timeに限り,どんなコンピュータでも特殊なハードウェアなしに,それなりの高画質のビデオを提供できる配布用コーデックと考えてください。
     上側4つのコーデックは,いずれもJPEGと同じ圧縮技術が応用されています。 ただし,DVとMotionJPEGがすべてのフレームの映像を記録しているのに対し,MPEGではフレーム間圧縮が行われています。 このため,DVやMotionJPEGでは,容易にフレームごとに切り分けてることができますが,MPEGでは,フレームごとに切り分けるためには,基準フレームと参照フレームの間での演算が必要となるため,あまり編集向きのコーデックではありません。 MPEGは,編集よりも完成した映像の配信を目的とした規格であることに注意してください。


戻る戻る トップページトップページ
line
line