2011/10/30

logoGuillo 導入マニュアル(v1.00向け)

この記事はv1.00向けです。最新版とは導入方法が異なりますのでご注意下さい。



ロゴ検出型自動CMカットプログラム logoGuillo 導入マニュアル

局ロゴ付きの分離済MPEG2ファイル(*.m2v)をlogoGuilloで処理し、Avisynth用のTrimコマンドを得るまでの手順を説明します。
マニュアル中で登場する各外部ソフトの使用方法は、それぞれのマニュアルを参照して下さい。

長いので大まかな流れを先に書いておきます。(b-fは局毎に一度だけ行います。)
a. 必要なソフトを準備&インストール
b. ロゴ付き動画を用意
c. ロゴデータを作成
d. 動画のうちロゴの見えている範囲を手動で指定したリストを作る
e. リストから自動的にロゴデータ固有のパラメータを決定させる
f. 局固有のカット時のマージンを設定する
g. 局毎に、上記のデータと設定値を指定することで自動的にCMカットしたTrimコマンドを出力できる


1. 必要なソフトウェアを準備する
*logoGuilloを使うような方なら大抵のソフトはインストール済かと思います。

1-1. 動作に必要な物を用意します。
・logoGuillo
・Avisynth
・Avisynth用 FFmpegSourceプラグイン
・avs2pipemod(Ch's barn

1-2. ロゴデータを作成するのに必要な物を用意します。
・AviUtl
・AviUtl用 ロゴ解析プラグイン version 0.07
・MPEG-2 VIDEO VFAPI Plug-In (m2v.vfp)

2. 動作に必要なソフトウェア&ロゴデータを作成するのに必要なソフトウェアをインストール

2-1. Avisynthをインストールします。
2-2. Avisynth用 FFmpegSourceプラグインをインストールします。
2-3. avs2pipemodをインストールします。
2-4. logoGuilloをインストールします。
2-5. AviUtlをインストールします。*インストール後、オプションでフレーム番号が0から始まるよう設定して下さい。
2-6. MPEG-2 VIDEO VFAPI Plug-InをAviUtl入力プラグインとして使用出来るようにインストールします。
2-7. AviUtl用 ロゴ解析プラグイン version 0.07をインストールします。

#必要なソフトの準備が終わりました。
#ロゴデータを作成する準備が整ったのでロゴデータを作成します。


3.入力用の動画ファイルの準備
*局ロゴ付きのMPEG2ファイル(*.m2vファイル)を準備します。(以降は例として1440x1080,input.m2vとしています)

4. ロゴデータを作成する
*動画からロゴデータ(*.lgdファイル)を作成します。以降、作成したロゴデータの名前を"logo.lgd"として説明していきます。

4-1. ロゴデータを作成します。ロゴの含まれる番組(アニメなどベタ一色のシーンが多い物を推奨)をAviUtlで開きます。解析範囲はロゴの縁ギリギリではなく、3,4ピクセル程度の余裕を持つように取り、ロゴデータを生成します。(あくまでも推奨)また、logoGuillo側の制限により、最大ロゴサイズ240x192以下、一つのlgdファイルに格納するロゴデータは一つまでにして下さい。

#ロゴデータ(logo.lgd)ができました。
#次に、ロゴデータ用の検出パラメータを調整します。


5. ロゴ検出パラメータの自動調整(-autoTune)用のフレームリストを作成し、パラメータを得る
*logoGuilloはロゴを検出する際のパラメータを3つ指定する必要があります。このパラメータを手動で調整するのは困難な為、人間がロゴの見えている範囲を指定したフレームリストを渡し、それを参考にして自動学習により最適なパラメータを決定します。この作業は使用するロゴデータ毎に一度するだけです。

5-1. ロゴの表示されている動画をAviUtlで開き、ロゴが表示されているフレーム番号の範囲を調べます。
*本編ではありません。単純にロゴが表示されているかどうかです。また、ロゴがフェードイン・アウトする場合、"少しでも"ロゴが見えたらロゴが表示されていると見なして下さい。見づらい場合はAviUtlの色調補正で輝度とコントラストを弄って確認しながら行うと楽です。

例: 34 - 450 , 600 - 900 , 1200 - 1250 のフレーム範囲でロゴが見えるのを確認

5-2. 上記のフレーム番号を以下のような書き方でframelist.txtとして保存します。

例:(framelist.txt)
34
450
600
900
1200
1250


5-3. 動画をlogoGuilloで読む為のavsファイルを例のように作成します。プラグインと動画のパスは環境に合わせて設定して下さい。以降、作成したavsファイルの名前をinput.avsとして説明していきます。

例:(input.avs)
LoadPlugin("C:\Program Files\Avisynth 2.5\plugins\ffms2.dll")
FFVideoSource("C:\test\input.m2v")
ConvertToYV12()
return last


5-4. logoGuilloでロゴ検出パラメータの自動調整を行います。BATファイルを例のように作成して実行して下さい。パラメータの調整結果は"output.txt"に保存されます。また、各パスは環境に合わせて設定して下さい。

例:
"avs2pipemod.exe" -rawvideo "input.avs" | "logoGuillo.exe" -inW 1440 -inH 1080 -autoTune "framelist.txt" -lgd "logo.lgd" -out "output.txt"


5-5. "output.txt"に"-prm1A 0.728027 -prm1B 1.188263 -prm2B 0.620898"といったパラメータが出力されているか確認します。これが-autoTune時に指定したロゴデータ(*.lgd)に対するパラメータ且つ指定用の引数となります。

#ここまでで、動画入力用のavsファイル(input.avs)ができました。
#また、ロゴデータ(logo.lgd)に対する検出パラメータ(-prm1A 0.728027 -prm1B 1.188263 -prm2B 0.620898)が決まりました。
#次にカットマージンの調整と最終出力を行います。


6. カットマージンを調整してAvisynth用のTrimコマンドを生成します。
*大抵の局ではCMから本編に入ってもロゴが出るまでにタイムラグがあります。(逆に本編が終わるときはCMに入る前にロゴが消えます。)このタイムラグ分のマージンを指定します。ただし、局によってタイムラグは異なります。

6-1. AviUtlで"本編に入ってからロゴが出ないフレームの数"と"CMに入る直前にロゴが出ないフレームの数"を調べます。例として前者が6フレーム、後者が30フレームとして進めます。

6-2. logoGuilloのオプションに"-cutMrgIn 6 -cutMrgOut 30"を追加し、BATファイルを例のように作成して実行して下さい。パラメータは"trimOutput.txt"に保存されます。また、各パスは環境に合わせて設定して下さい。

例:
"avs2pipemod.exe" -rawvideo "input.avs" | "logoGuillo.exe" -inW 1440 -inH 1080 -prm1A 0.728027 -prm1B 1.188263 -prm2B 0.620898 -lgd "logo.lgd" -out "trimOutput.txt" -avsTrimFmt -cutMrgIn 6 -cutMrgOut 30


6-3. Avisynth用のTrimコマンドが出力されたか確認します。"trimOutput.txt"を開き、中に例のようなテキストが記述されていたら成功です。

例:
Trim(28,480) ++ Trim(594,930) ++ Trim(1194,1280)


#ここまでで、Avisynth用のTrimコマンド(trimOutput.txt)が得られました。
#同じ局の別のm2vファイルであっても、6-2のBATを使い回して処理させれば正しく動作するはずです。
#このTrimコマンド生成BAT(+avs)を現在運用中のエンコード用BATに組み込めば、自動CMカット&エンコードを実現することが出来ます。


お疲れ様です。以上でlogoGuilloの導入マニュアルは終わりです。また、FAQも是非ご覧下さい。