土井研/ 自習室/ 動画/ 動画計測(寝屋川OHP)
2.VideoForWindows
テレビのデジタル放送が目前となり、動画をハードディスクに録画できるパソコンや、単体でVTRのように使えるハードディスク録画機まで現れてきました。Webページも動画の表示が珍しくなくなり、カメラからの動画を直接Webページとして送信できるWebカメラも現れ、まさに動画の時代です。
筆者は計測系の研究者でもあるわけなのですが、いわゆる研究室や実験室の世界でもパソコンレベルのハードウェアで実現できる簡易かつ安価で、しかも、強力なツールとして動画が扱えるようになってきました。
今回紹介する内容は、高圧縮なWebのストリーム配信をどう実現するかといった最先端の動画技術ではなく、DV(デジタルビデオ)やVideoForWindowsというどちらかというと枯れた技術を計測に使うというものです。ですが、枯れているからこそ、どのような環境でも安定したパフォーマンスが得られ、ツールとして実用に耐えうるということにもなります。
今回は図1に示すようにデジタルビデオカメラからの動画をAVIファイルに取り込むまでは既存のシステムを使いその動画ファイルから1枚毎のフレームを切り出す方法やストリームを切り出す方法について紹介します。
図1 DVとVideoForWindowsを利用した動画計測
2.1 動画の取り込み
2.1.1 動画と動画ファイル
パソコンで扱える動画の種類はその細かな形式の違いも含めると大変多種に渡ります。その原因は動画の持つ情報量の多さとそれに伴う多岐にわたる圧縮方式の存在です。動画はアニメーションや映画と同じで複数のフレームの集合となり、データという視点でみると、縦、横、時間という軸を持つ立方体を構成するピクセルの集合になります。この立方体のそれぞれの軸に対して様々な圧縮が施されるので話は複雑になります。
まず1フレームだけについて圧縮を考えるとJPEGでお馴染みのDCTやハフマン符号化があります。これを空間圧縮と呼びます。このフレームを時間軸に沿って並べると、隣り合うフレーム間で相関が大きいことからフレーム間の差分を計算することで時間軸の圧縮が行えます。この差分も動きという視点でみる、さらに圧縮できることから動き補償予測という技術を使ってもう1段の圧縮が行えます。これらの圧縮を時間圧縮と呼びます。
空間圧縮、時間圧縮を共に行っているものの代表的なものがMPEGで、今回取り上げる、DVやIR32(IntelIndeo)のAVIファイルは空間圧縮のみを行っています。また一般にノンリニア編集と呼ばれるパソコン上でのビデオ編集では時間圧縮を行った状態では直接編集が行えないものもあります。
空間圧縮を行っているAVIファイルについてもその圧縮方法により多くの種類が存在します。またその圧縮が解凍できるかどうかはWindowsを使用する場合、OSに組み込まれているCODECの状況に依存します。
現状のWindowsで動画を扱う場合、VideoForWindowsとDirectShowの2つの系列が用意されています。VideoForWindowsは従来のWin32APIと同様にAVIファイルを扱うAPI関数群で構成され、DirectShowはマルチメディア機能を充実させるためのDirectXMediaの機能の1つとして実装されています。
DirecShowでは多くのコーディックがDirectShow自体に実装されていますが VideoForWindowsではWindowsに組み込む形で新しいコーディックを追加します。
ですから同じパソコン上であっても、DirectShowベースのアプリケーションの WindowsMediaPlayerで再生できてもVideoForWindowsベースのアプリケーション、たとえばプレミア/アドビで再生できない、あるいはその逆といったファイルが存在することになります。
デジタルビデオカメラの圧縮方法をそのままAVIファイルに適応させたのが DV形式のAVIファイルです。このDV-AVIファイルにはType1DV-AVI(AVI2と呼ぶ場合もある)とType2DV-AVIの2つの形式があり、Type1DVはDirectShowからしかアクセスできません。これらの関係を図3に示します。
図2 デジタルビデオ、デジタルムービーの歴史(zu02_his.bmp)
図3 VideoForWindowsとDirectShow(zu03_vfw_ds.bmp)
2.1.2 DVキャプチャシステム
いくつかの機種、ソフトを例にDVキャプチャがどのように行われているかを説明します。ここでは、一般的なwindowsパソコンとしてWindows98SE搭載のThinkPad570にPCカード型のIEEE1394インターフェースIOデータ社GV-DVC/CBとメルコ社のIFC-ILCB/DVを付属ドライブソフトと共に組み込んだ場合とマルチメディアパソコンのVAIO-R51をとりあげます。
GV-DVC/CBとIFC-ILCB/DVはハードウェアはよく似た構成ですが、付属ソフトはかなり異なります。GV-DVC/CBではDV用のCODECとしてType2DVと松下、IOデータの共同開発と説明されている、参照型DVの2種類のVideoForWindows用CODECが追加されます。一方のIFC-ILCB/DVに付属するキャプチャソフトUreadVideoStudio単体ではVideoForWindows用のCODECは追加されません。ですか、DirectShow経由でType1DV-AVI、Type2DV-AVIともに扱うことができます。またIFC-ILCB/DVではVideoStudioと合わせてNetShowも組み込まれるためNetShowの1部としてVideoForWindows用のMPEG4のCODECが追加されます。VAIO-R51にはDV以外にMPEG2などさまざまなマルチメディア機能が実装されていますが、VideoForWindowsのCODECとしてはSONY製のDV-CODECが追加されています。
これらの各種DVキャプチャソフト、DVキャプチャソフトでのDV-AVIファイルの種類の選択の様子、組み込まれたVideoForWindows用CODECの一覧を図4、図5、図6に示します。windowsへのCODECの組み込み状態は windowsディレクトリの
windows.ini の [drivers32] のセクションを見れば分かります。
これらのことから同じWindows、同じデジタルビデオカメラを使う場合でも、DVキャ
プチャシステムの違いによって相互にファイル交換ができない場合が生じることになります。各DVキャプチャシステムの機能、互換性について表1にまとめます。
併せて、各CODECの違いによるAVIファイルのサイズの一覧を表2に示します。
a.IOデータ社DVworks(zu04a_io.bmp)
b.Uread VideoStudio3.0SE
(zu04b_uread2.bmp)
c.DVgate motion(zu04c_v.bmp)
図4 各種DVキャプチャソフト
(a)DVworks(zu05a_io.bmp)
(b)Uread VideoStudio3.0SE(zu05b_u.bmp)
図5 DV-AVIファイルの選択画面
(a)ThinckPad570単体 (zu06a_th.bmp)
(b)ThinkPad570
+ GV-DVC/CB(I/Oデータ)
(zu06b_io.bmp)
(c)ThinkPad570 + IFC-ILCB/DV(メルコ)
(zu06c_un.bmp)
(d)VAIO R51 (zu06d_v.bmp)
図6 VideoForWindowsのCODECの状態
表1 DVキャプチャシステムの機能、ファイル互換一覧(hyo1.txt)
┌────────┬────────┬────────┬────────┬────────┐
│ │ ThinkPad570 │ ThinkPad570 │ ThinkPad570 │ VAIO R51 │
│ │ │ +GV-DVC/CB │ +IFC-ILCB/DV │ │
│ │ │ (I/Oデータ) │ (メルコ) │ │
├────────┼────────┼────────┼────────┼────────┤
│OS │ Windows98SE │Windows98SE │Windows98SE │Windows98SE │
├────────┼────────┼────────┼────────┼────────┤
│DVキャプチャ │ │DVworks │Uread │DVGateMotion │
│ソフト │ │ │VideoStudio3.0SE│ │
├────────┼────────┼────────┼────────┼────────┤
│組み込まれる │ │・Panasonic and │・MicrosoftMPEG4│・SONY DV │
│VFWのCODEC │ │ I-O DATA │ │ │
│ │ │ DVGigaAVI │ │ │
│ │ │・Panasonic DV │ │ │
├────────┼────────┼────────┼────────┼────────┤
│DVキャプチャ │ │a.Type2DV │c.Type1DV │h.Type2DV │
│ソフトの │ │b.参照型Type2DV │d.Type2DV │ │
│出力ファイル │ │ │e.非圧縮 │ │
│形式 │ │ │f.IR32 │ │
│ │ │ │g.MPEG4 │ │
├──────┬─┼────────┼────────┼────────┼────────┤
│VFWでの │a.│ × │ ○ │ × │ ○ │
│ファイルの ├─┼────────┼────────┼────────┼────────┤
│読み込み │b.│ × │ ○ │ × │ × │
│(プレミア等)├─┼────────┼────────┼────────┼────────┤
│ │c.│ × │ × │ × │ × │
│ ├─┼────────┼────────┼────────┼────────┤
│ │d.│ × │ △ (注) │ × │ △(注) │
│ ├─┼────────┼────────┼────────┼────────┤
│ │e.│ ○ │ ○ │ ○ │ ○ │
│ ├─┼────────┼────────┼────────┼────────┤
│ │f.│ ○ │ ○ │ ○ │ ○ │
│ ├─┼────────┼────────┼────────┼────────┤
│ │g.│ × │ × │ ○ │ × │
│ ├─┼────────┼────────┼────────┼────────┤
│ │h.│ × │ ○ │ × │ ○ │
├──────┼─┼────────┼────────┼────────┼────────┤
│DirectShow │a.│ ○ │ ○ │ ○ │ ○ │
│での読み込み├─┼────────┼────────┼────────┼────────┤
│(Windows │b.│ × │ × │ × │ × │
│ Media ├─┼────────┼────────┼────────┼────────┤
│ Player 等) │c.│ ○ │ ○ │ ○ │ ○ │
│ ├─┼────────┼────────┼────────┼────────┤
│ │d.│ ○ │ ○ │ ○ │ ○ │
│ ├─┼────────┼────────┼────────┼────────┤
│ │e.│ ○ │ ○ │ ○ │ ○ │
│ ├─┼────────┼────────┼────────┼────────┤
│ │f.│ ○ │ ○ │ ○ │ ○ │
│ ├─┼────────┼────────┼────────┼────────┤
│ │g.│ ○ │ ○ │ ○ │ ○ │
│ ├─┼────────┼────────┼────────┼────────┤
│ │h.│ ○ │ ○ │ ○ │ ○ │
└──────┴─┴────────┴────────┴────────┴────────┘
(注)ビデオストリームの読み込みの際に不具合が出る場合がある
表2 各CODECによるAVIファイルのサイズ:
┌─────────┬───────────┐
│圧縮形式 │ サイズ(バイト) │
├─────────┼───────────┤
│非圧縮AVI │ 315,525,632 │
│Type1DV-AVI │ 36,521,984 │
│Type2DV-AVI │ 37,735,232 │
│IR32 65% │ 8,870,032 │
│IR32 100% │ 15,148,668 │
│MPEG4 V1 │ 6,177,328 │
│MPEG4 V2 │ 6,165,890 │
├─────────┴───────────┤
│ファイルは720*480画素、24ビットカラー │
│303フレーム10.11秒の動画と │
│32kHz、16ビット、ステレオ、非圧縮音声。 │
│ただしIR32のみ640*480画素に縮小 │
└─────────────────────┘
パソコンによる動画計測とその周辺 / 1.動画処理のための準備 / VFWく
VFW,プログラム