キャプチャ

MPEG2でキャプチャーしたファイルをいかに簡単にCMカット&XviD圧縮するかを考える.

まず,CMカットの手間暇は削減できない.そこで,半自動でカットすることは諦める.その代わり,気が向いたときに手軽に出来る「環境」を整えることにする.

普段はPCの前に座っていることが多いので,編集する機会は多い.しかし,ファイルサイズが数GBあるので,その環境を持ち運びするのは現実的でない.そこで,サムネイル動画の作成を思いついた.

具体的には,解像度を落として数MBに落とした動画像を作る.このファイルをDLしてCMカットをし,カット情報のみを保存する.保存した情報で,元画像を自動編集とエンコード出来るようにする.これが基本アイディアである.

サムネイル画像について述べる.サムネイル画像で求められることは,小容量,同一フレーム番号,インタレースの保存である.インタレースの保存とは,いわゆる縞模様を残すようにすることである.これにより,CMと本編が合成されてしまっている画像を確実に削除することが出来る.これを実現するには1/N (Nは奇数)に縮小するのが良いと考えられる.QCIF程度のサイズに縮小するとして,Nは3とする.

次に具体的なフローについて述べる.予約によってテレビがキャプチャーされる.一定時間ごとに動画像ファイルを走査し,新しいファイルが存在したらサムネイル動画像を作成する.作成された動画像はHTTPサーバにアップロードされる.ここで,CMカットが実際に行われる.そして,編集情報を含むファイルが再びサーバにアップロードされる.一定時間ごとに編集ファイルを走査し,新しいファイルが存在したらXviD形式へエンコードされる.これで終了.必要に応じて,ファイルは公開サーバにアップロードされる.

一定時間ごとの実行はWindowsのタスクスケジュール機能を利用する.Windows2000ではatコマンドが,WindowsXPではそれに加えてschtasksコマンドがコマンドプロンプトから利用できる.キャプチャマシンがWindows2000であることから,ここではatコマンドを利用する.ただし,atコマンドにおける最小インターバルは1日なので,1日のうちに何度か実行したい場合は動的に書き替えるか複数登録する必要がある.

atコマンドにより実行されたプロセスは,VirtualDubModのスクリプト機能を使ってサムネイル動画像を作成する.さらに,作成されたファイルをアップロードする.一連の作業はVBScriptによって記述可能である.

まずは,VirtualDubModによるサムネイル画像作成のスクリプトを作成する.次にVBScriptにてファイル走査関連,エンコード関連を記述する.そしてにatコマンドを記述する.最後にavisynthを記述して,カット情報と結合,エンコードする.