2011/12/31

logoGuillo導入マニュアル

更新日:2013/08/03

ロゴ検出型自動CMカットプログラム logoGuillo 導入マニュアル(v2.xx向け)

MPEG2ファイルをlogoGuilloで処理し、Avisynth用のTrimコマンドを得るまでの手順を説明します。
上手くいかない場合はFAQlogoGuilloの動作精度を上げる為の注意点もご覧下さい。
マニュアル中で登場する各外部ソフトの使用方法は、それぞれのマニュアルを参照して下さい。

長いので大まかな流れを先に書いておきます。(b-eは局毎に一度だけ行います。)
基本的には放送局毎にロゴデータを作成し、ロゴデータに対する検出パラメータの調整を行います。パラメータ調整後はその局の番組を自動でCMカットする事が出来ます。

a. 必要なソフトを準備&インストール
b. ロゴ付き動画を用意
c. ロゴデータ(*.lgd)を作成
d. 動画のうちロゴの見えている範囲を手動で指定したリストを作る
e. リストからロゴに対応するロゴ検出パラメータ(*.param)を作成
f. 以後は局毎に上記のロゴと検出パラメータを指定することで、自動的にCMカットしたTrimコマンドを出力できる


2011/12/29

logoGuilloの局毎の動作確認状況

2012/02/23時点でのlogoGuillo (v2.05)の動作確認状況です。
大抵の局では正常に自動CMカットが出来ると思います。

正常に動作する局


十分な精度でCMカットを行えます。

・テレビ東京
・テレビ埼玉
・TOKYO MX
・日本テレビ
・チバテレビ

・TBS
*シーンチェンジ検出が無効の場合、フェードによる検出位置の揺らぎが生じる事があります。

RICOH CX3のマクロモードでの最短撮影距離

ふと気になったので調べてメモ。

RICOH CX3でステップズームに設定して表示される最短撮影距離を確認。
通常のズームモードで中途半端な焦点距離にすると最短撮影距離も中間の値が表示されます。
RICOH CX3
31-50mm  1cm
85mm   2cm
105mm   4cm
135mm   7cm
200mm  10cm
300mm  28cm

リコーのCXシリーズの光学系は、CX2で28-300mmの10.7倍ズームレンズになって以来
CX3,CX4,CX5,CX6と同じ仕様で変わっていないようです。

撮像素子もCX1,CX2の1000万画素CMOSからCX3で1000万画素の裏面照射型CMOSを採用して以来、仕様上はCX6まで変更無しです。
今のセンサは恐らくソニー製なので(CX3でBSI-CMOS採用時にバッテリーのOEM元が松下からソニーに変更された為)
そろそろCX7辺りでソニー現行製品に採用されている1/2.3型1600万画素辺りに切り替わりそうな気がします。

2011/12/27

ロゴ検出型自動CMカットプログラム logoGuillo v2.00 を公開しました

v2.03を公開したのでそちらを使用して下さい。v2.00は削除しました。

思ったより時間が掛かりましたが、logoGuilloのv2.00を公開しました。

主な変更点は以下の4点です。
・GUIフロントエンドの追加
・動画の読み込み方法の変更
・シーンチェンジ検出機能の実装
・高輝度でロゴが見えない場合での動作の改善
内部の構造を大幅に変更したのでメジャーバージョンアップとします。

DTV関係ツールのDTV アップローダ(DTV関係ファイル置き場)をお借りしましたので、そこから入手して下さい。

ロゴ検出型自動CMカットプログラム logoGuillo v2.00 GUI追加,シーンチェンジ検出等々
up0823.rar
MD5:0077eeb5419163e8e9506479d1a5aa66

変更点

2011/12/04

Avisynthが偶に落ちる問題がSetMemoryMax()で解決した

avs2yuv.exeが落ちる事があるのを解決できたのでメモ。

以前にも、avs2yuv.exeがエンコード中に偶に落ちる事がありました。
その時はavs2yuv.exeがメモリを2GB近辺まで使用していたので、AVSに必要なメモリが2GBより若干多いのかと思い、avs2yuvのソースをPAE拡張有効で自コンパイルして使う事にしました。

これで1年程度特に問題なくエンコードしてきたのですが、
最近、avs2pipemod.exeで特定の簡単な (殆どメモリを使用しない) AVSを読ませると途中で落ちるのを解決できずにハマってしまいました。

2011/11/29

logoGuillo開発近況

v2.00をリリースしました。

今月に入ってからlogoGuilloの大幅な更新作業を行っています。数週間以内にはリリース出来る予定です。

主な変更内容(予定含む):

機能追加:
・GUIフロントエンドを搭載
・シーンチェンジを検出してカット位置を補正する機能を追加
・自動調整時にカットマージンも自動で調整するようにした
・ 従来通り-cutMrgIn.-cutMrgOutオプションによる手動指定も可能
・.chapter.txt形式での出力に対応
・出力フレーム番号を指定値だけずらす機能を追加
・読み込み時のタイムアウト処理を追加
・29.97fps以外に25fpsや60fpsに対応(未検証)

2011/11/13

地上波ソースをエンコードする際にFFT3DGPUでシャープフィルタを縦と横で異なる強度でかける理由

Avisynth用のGPUノイズリダクションフィルタ、FFT3DGPUにはNR後に若干甘くなった画を補正する為にシャープフィルタが搭載されていますが、このフィルタは縦方向と横方向で異なる強度に設定する事が出来ます。
そこで私は地上波の横1440ピクセルのソースをエンコードする際に、横方向には縦方向に比べ20%程度強くかけています。

ソースが1920x1080の場合は縦横同じですが
FFT3DGPU(sigma=1.7,beta=1 ,plane=0 ,bw=32 ,bh=32 ,ow=16 ,oh=16,bt=4 ,mode=1 ,degrid=1,interlaced=false ,wintype=2 ,precision=0,sharpen=0.125,svr=1.0,smin=6,smax=13)

ソースが1440x1080の場合は横に強くかけます
FFT3DGPU(sigma=1.7,beta=1 ,plane=0 ,bw=32 ,bh=32 ,ow=16 ,oh=16,bt=4 ,mode=1 ,degrid=1,interlaced=false ,wintype=2 ,precision=0,sharpen=0.125,svr=0.8,smin=6,smax=13)

何故1440ソースではこの様にする必要があるのかというと、再生時には以下の図のような事が起きるからです。

動画のファイルサイズが指定値以上の場合だけ処理を行うBAT

動画のファイルサイズが指定値以上の場合だけ処理を行うBATコードです。番組の前後のゴミを削除する為に使用しています。
99GB以下のファイルなら正常に動作します。

では以下にコードを示します。

2011/11/09

HDD(WD Caviar Green WD20EARS)のC1:Load/unload cyclesが49万回に達する

24時間連続稼働の録画機のシステムドライブとして使用していた
WD20EARSのLoad/unload cyclesが49万回を超えました。
SMARTの値(C1)も200から37まで落ちています。

2011/11/07

AviUtlで手動CMカットした結果をAvisynth用のTrimコマンドにする方法

(12/01/22修正)

私が普段手動CMカットに使用している方法です。所用時間は30分番組1本あたり2分以内程度です。
AviUtlのキーフレーム書きだし機能を使ってCMカットの結果を出力することでAvisynthと連携します。


2011/11/06

ロゴ検出型自動CMカットプログラム logoGuillo v1.00b を公開しました

v2.00を公開したのでそちらを使用して下さい。旧版は削除しました。



v1.00からの変更点(v1.00b)
logoGuilloをAviUtlと連携させるための補助ソフトを追加同梱しました。
AviUtlを使用して結果を確認する半自動CMカット又は手動CMカットに利用できます。
logoGuillo本体には変更はありません。

・logoGuillo連携プラグイン (logoGuilloAUP.auf) v0.01
logoGuilloで出力したフレームリストに基づき、AviUtlで該当フレームをマークフレームにします。
マークフレーム位置を参考にしてキーフレームを打ち、下記のatf02と組み合わせる事で自動処理の結果を確認しながら半自動CMカットが出来ます。

・atf02 v1.00
logoGuilloで出力したフレームリスト又はAviUtlで出力したキーフレームリストから、Avisynth用のTrimコマンドを生成するプログラムです。
AviUtlのキーフレーム書き出し機能を使ってCMを手動カットするために作成したものです。

2011/11/05

HD5850CFX(時価2万円)でのBF3のfps測定結果

先日導入したRadeon HD5850CFでのBattlefield 3のfpsを見てみました。

測定環境
Intel Core i7-860(定格)
プライマリ AMD Radeon HD5850 (リファレンスOC版 , Core 765 MHz / Mem 1125 MHz 1GB)
セカンダリ AMD Radeon HD5850 (リファレンス定格 , Core 725 MHz / Mem 1000 MHz 1GB)
CCC 11.10

*fpsの確認とファンの制御にMSI Afterburnerを使用しています。

メインディスプレイ(1920x1200,60Hz)にゲーム画面をフルスクリーン表示
サブディスプレイ(1920x1200,60Hz)にはデスクトップを表示

垂直同期           :ON(ティアリングしないように入れてます)


2011/11/03

ロゴ検出型自動CMカットプログラム logoGuilloとは

2016/04/03更新 (v2.12 準拠)

概要

「ロゴ検出型自動CMカットプログラム logoGuillo」は動画から放送局のロゴが表示されるシーンを検出することで自動的にCMを判別し、CMカットを自動で行うための情報を出力するフリーソフトウェアです。
*本ソフトウェアは個人的な研究として開発したフリーウェアです。そのため商用利用はご遠慮下さい。非商用目的であれば個人・団体を問わず無料で使用可能です。

出力した情報はAvisynthやAviUtlに加えMP4Boxやmp4chaps等でも利用出来るので、実際にCMカットをせずにCMスキップ用のチャプターを埋め込む使い方にも対応しています。また、出力を反転してCMのみ取り出す事も可能です。

検出に使用するロゴデータはAviUtl用のロゴ解析プラグインと互換性があるので、お手持ちのロゴデータの流用が可能です。
また、同梱のAviUtl用プラグインを使用するとlogoGuilloで出力したフレームリストを元にAviUtl上でCMのカット位置のフレームがマークされるので効率的な半自動CMカットが行えます。

動作原理

基本的にはロゴの有無を判定して本編とCMを判別します。ロゴ判定閾値等のパラメータの調整は局毎に一度、手動でCMカットした手本を与える事で教師付き機械学習により自動調整されます。
logoGuilloではロゴの検出に加え、シーン分析結果と字幕データ、無音フレーム情報を組み合わせたポスト処理を行う事で判定精度を上げています。
また安全側に動作する設計となっているので、本編かCMか判定が曖昧な場合には本編と見なす事で取りこぼしが極力発生しないようにしています。

・画像処理
・ 局ロゴの検出
・ シーンチェンジ検出
・ その他、シーン分析等

・テキスト処理
・ 字幕データの読み込み
・ 無音フレーム情報の読み込み

・ポスト処理
・ 本編/CMの尺やシーン分析結果を組み合わせた最終成形処理

主な機能

・CM位置情報の出力
・ 自動CMカットへの利用
・ 半自動CMカットへの利用
・ チャプター情報の出力(未CMカット用/CMカット後用)
・ CMのみの抜き出しへの利用

・字幕データによるポスト処理
・ NGワードでのシーン除外
・ キーワードマッチングによる特定パートの抜き出し

対応入力形式

本編にのみロゴが表示される動画

圧縮形式
・MPEG2 Video(*.m2v)
・DGIndexプロジェクトファイル(*.d2v)
等々
*本ソフトは動画をAvisynth経由で入力プラグイン( m2v.vfp/DGDecode.dll/ffms2.dll/LSMASHSource.dll /DirectShow Filter)を使用して読み込みます。
そのため、上記入力プラグインで読み込み可能な各種圧縮形式に対応しています。
また、AVSファイルをソースとして指定する事で上記以外のAvisynth対応の入力プラグインを使用可能です。

対応出力形式

.keyframe形式 :本編と判断された区間の開始フレームと終了フレームを順番に記述した形式です。TMPGEnc/AviUtl/atf02で使用できます。

Trimコマンド形式 :本編と判断された区間をAvisynthのTrimコマンドの形で記述した形式です。Avisynthスクリプトで使用できます。

.chapters.txt形式 :本編と判断された区間の開始時間と終了時間を順番に記述した形式です。CMカットせずそのままエンコードしたファイルに埋め込む用途を想定しています。

.chapters.txt形式(本編開始位置のみ) :本編と判断された区間の開始時間を順番に記述した形式です。CMカットせずそのままエンコードしたファイルに埋め込む用途を想定しています。

Avisynth Script形式:入力動画と音声を本編のみ切出し、YUY2形式で出力するAVSファイルを出力します。AviUtl ver 0.99k以降ならCMカット済の動画ソースとしてそのまま開く事が出来ます。音声は動画と同一ディレクトリ内の"拡張子抜き入力動画ファイル名.wav"から読み込みます。

最新版

現在のバージョンはv2.12です。

logoGuilloの局毎の動作確認状況 (v1.00向け)

この記事はv1.00向けです。最新版では動作が異なりますのでご注意下さい。

2011/11/11時点でのlogoGuilloの動作確認状況です。
大抵の局では正常に自動CMカット出来ると思います。

テレビ東京
正常に動作します。

テレビ埼玉
正常に動作します。

TOKYO MX
正常に動作します。

BF3の為にHD5850をCFしてメモリクロックの固定に手こずる

ついにBattlefield 3が発売しました。
しかし手持ちのHD5850では推奨環境(HD6950 or 560Ti)に若干足りない為、もう一枚追加してCFすることにしました。

今までの単発では問題なかったのですが、ドライバ類を入れ直してCF化したところメモリクロックが可変して画面が乱れるようになってしまいました。
昔からPowerPlayでのメモリクロック変化による画面の乱れにはメモリクロックを固定するのが有効でした。メモリクロック固定の方法を検索すると、CCCのProfiles.xmlを編集する方法が出てきますが、最近のCCCでは通用しないようです。少なくともCCC 11.10ではこの方法では無理でした。


2011/10/31

USB3.0対応外付けケースでの3TBのHDDの認識結果

8月ぐらいに購入した3TBのHDD、Western Digital WD30EZRX-00MMMB0の外付けケースでの認識結果を思い出したので載せておきます。
これから購入する方は3TB対応明記されている製品を選択すると思いますが、手持ちのケースを使い回したい方の参考まで。

私はHDDを購入するとWinDLGのExtendTestをまず最初に行うのですが、3TB認識していない状態では通らないので難儀しました。
USB3.0対応の最近のSATA-USBブリッジなら当然3TBに対応している物と思っていたのが敗因です。

では手持ちのUSB3.0対応製品に搭載されていた石の結果を以下に示します。
また、Groovy 35SATA-U3-SLは二台購入したのですが、1台目はJMS539、2台目はMB86C30 1Bが載っていました。


2011/10/30

ロゴ検出型自動CMカットプログラム logoGuillo v1.00 を公開しました

v1.00bをリリースしたのでそちらをお使い下さい。旧版は削除しました。

今までClosedβテスト中だったロゴ検出型自動CMカットプログラム logoGuilloですが、目立ったバグは無さそうなので一般公開する事にしました。

DTV関係ツールのDTV アップローダ(DTV関係ファイル置き場)をお借りしましたので、そこから入手して下さい。


logoGuillo FAQ(v1.00向け)

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



ロゴ検出型自動CMカットプログラム logoGuillo FAQ


Q.局毎に変更する必要のある物は何ですか

*局毎に変更する必要のある物は以下の通りです。一度決定すれば同じ局の番組であれば使い回すことが出来ます。
・ロゴデータ
・ロゴ検出パラメータ(-prm1A,-prm1B,-prm2B
・解像度(-inW,-inH
・カットマージン(-cutMrgIn,-cutMrgOut


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

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



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

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

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


2011/10/29

avs2yuvで32bit版Avisynthと64bit版x264を組み合わせてエンコード高速化

64bit版OSで32bit版x264を使用しているのなら、64bit版x264を使用することでエンコードを10%以上高速化(別記事)する事が出来ます。
一応64bitで動作するだけのIntel Pentium 4/Core 2では64bitバイナリでの速度改善は少ないですが、Intel Core i7/i5/i3やAMD Phenom/A/FX 以降のCPUなら十分に速くなります。

ただし、64bit版x264からは32bitのAvisynthを呼び出すことは出来ないので、x264の入力に直接avsファイルを指定する事は出来ません。
64bit版Avisynthなら問題ありませんが、64bitに対応しているフィルタの数が少ない現状では32bit版Avisynthを使用せざるを得ないです。
そこでavs2yuvを使用してAvisynthの処理結果をパイプ経由でx264に渡してやることで、32bit版Avisynthと64bit版x264を同時に使用します。

2011/10/28

x264での64bit/32bitのエンコード速度比較

普段から64bit版のx264でエンコードしていますが、ふと気になったのでベンチマークを取ってみました。
エンコード設定は普段使用している物(GPUフィルタなど色々と使用)を流用し32bit版と64bit版を交互に数回エンコードして最も速い結果を採用しています。

テスト環境
・Windows 7 SP1 x64
・x264 r2085
・Intel Core i7-860(定格)

2011/10/27

Avisynthビデオ入力プラグインベンチ結果(MPEG2)

Avisynthのビデオ入力プラグイン3種類

・ FFmpegSource (2.16)
・ DirectShowSource + Microsoft DTV-DVD Video Decoder
・ LoadAviUtlInputPlugin +  m2v.vfp (0.7.5)

での1440x1080のm2vファイルの読み込み速度を
avs2pipemod-20110919(Ch's barn
でベンチマークしてみました。数回実行してGOPリスト、インデックス等が作成され、m2vファイルがキャッシュされた状態で測定しています。

2011/10/26

x264でビットレートを制限するメリット

x264では
"--vbv-bufsize"オプションでバッファサイズ(kbit)を指定した上で
"--vbv-maxrate"オプションでバッファサイズ範囲内での最大ビットレート(kbps)を制限することが出来ます。

このオプションは主に再生機器の制限に合わせるために使用するので、PCで再生するファイルをエンコードする上では、よほど低スペックでない限り指定する必要がありません。

しかし、デジタル放送(特に地上波デジタル)を録画してエンコードする場合、適切なビットレート制限をかけることで無駄なビットの浪費を防ぎサイズを小さくする事が出来ます。


2011/10/24

初投稿

Blogを開設してみました。プログラミング等の趣味に関する事を少しずつ投稿していきたいと思います。

また、ロゴ検出型自動CMカットプログラム logoGuilloを開発しています。
ほぼ完成して現在はClosedβテスト中なので(不具合がなければ)近日中に公開できると思います。