条件を満たしたフレームの抽出をするAvsP用のマクロです。writefileifをします。boolを返すものが使えます
利点
- 分割して同時解析ができる!4分割でシングルの倍速くらいに!
- カスタマイズが簡単!
- ブックマークを打てる!ブックマークジャンプでサクサクだ!
- 解析が終わると自動でログが開くので、ログを開く動作がいらない!やったね!
本当に利点があるのか怪しいマクロです;;
更新履歴
2016/05/02 特に書くまでもない小さい修正を少し
2015/07/20 連続フレームをまとめる処理追加。リニューアルで色々整理
AvsP用マクロ
必要なもの
- avs2pipemod(64bitで動かしたい場合は64bit版のavs2pipemodが必要)
- (デフォルトだと)Combmask.dll
マクロの内容はGUIも内容ある程度自由に書き換えられるようにしたので好きにカスタマイズしてください
項目
- 分割数 … 分割して同時に解析して速度を稼ぎます。推奨はCPUのスレッド数や解析内容次第
- ビット … AviSynth+なら32bitのAvsPmodでも64bitで動かせます
- ブックマーク … Trueと判定されたフレームにブックマークを打ちます
- 連続をまとめる ・・・ 連続するフレームをまとめます
解析中に分割数分avsとlogが作られますが、終了時に削除するようにしてます
実行ボタンを押すと解析開始。終了すると「avsのお名前.log」を作ってメモ帳で開きます
連続をまとめない場合
こんな感じ。ブックマークを打つ場合は全フレームに打たれます。一番右の数字は、24fpsのものを解析したときだけ表示されます。逆テレシネ前の大体のフレーム番号です
連続をまとめる場合
上と同じ結果になるものを連続をまとめた場合は
こんな感じ。ブックマークを打つ場合は連続しているフレームの場合、始点と終点のフレームだけうちます。trueの右の数値は連続フレーム数です
どちらもConditionalReaderで使える形式です。右側の数字は左側のフレーム番号を5/4倍しただけのもの。逆テレシネ前のフレーム番号のようなものになります。23.976fpsのものを解析したときだけ表示します
1 2 |
ConditionalFilter( last, Vinverse(), last, "combed", "=", "true" ) ConditionalReader ( "ログのお名前.log", "combed", false) |
例えば縞判定で作ったログを使ってこんな風に書けば縞と判定されたフレームだけVinverseがかかります
デフォルトの解析設定
一応解説。必要ない or 気に喰わないモノは自由に書き換えてください
縞判定1
CombMask.dllが必要です。AviSynth2.5使用者など、使えない場合はTIVTC.dllを用意してIsCombedTIVTC(128,10)などに書き換えてください。割ときつめの縞判定。縞なのに縞と判定されないフレームもあると思いますが、縞じゃないのに縞と判定されるフレームは少ないです。海外の映画などを逆テレシネ後にやれば縞字幕の出るフレームだけ拾えるでしょう
縞判定2
縞判定1の設定をゆるくしたもの。縞なのに縞と判定されないフレームは減りますが、縞じゃないのに縞と判定されるフレームが多いです。CombMask.dllが使えない場合は同様にIsCombedTIVTC(96,5)などと書き換えれば似た動きになるでしょう
フルレンジ検出
フルレンジなフレームを検出します
暗部検出
輝度が低い、けれど真っ黒ではないフレームを検出するつもりのものです。必要なプラグインはありません。バンディングが発生しているフレームや、エンコードしたらバンディングがおきやすいフレームの抽出のつもり。x264のZonesオプションを考える補助になるかな、と。どうやら最近暗いものが多いようなので
高速で解析したい場合
不要なフィルタはかけないで実行してください。大抵は ソースロード → カット → 逆テレシネ だけやった後に実行すればいいんじゃないでしょうか
隠れ機能
このマクロは「global Analysis_flag」という文がある行は「global Analysis_flag = True」に書きかえて解析をするようにしてます
1 2 3 4 5 6 7 8 |
global Analysis_flag = false Trim(931, 9990) ++ Trim(10146, 21885) ++ Trim(23841, 41085) if (!Analysis_flag) { EraseLogo( logofile= ・・・ EraseLogo( logofile= ・・・ EraseLogo( logofile= ・・・ } |
例えばこんなスクリプトがあった場合、EraseLogoは解析のときだけ無効になります。解析の邪魔になるフィルタをコメントアウトしなくても素早く解析できるようにしたつもりですが、コメントアウトはそんな手間でもないでしょう
リンク
こちら の boolchecker.pyです。基礎を何もしらないので酷いソースです
初期設定
マクロを開いてavs2pipemodのパスと、マクロの実行時にできる一時ファイルの保存先ディレクトリを指定してください。ディレクトリはavsでソースファイルをフルパス指定しているならどこでも可、相対パスで指定している場合はavsと同じフォルダにしてください。デフォルトはavsと同じフォルダです
デフォルトのbool用の設定やGUIのテキストは任意に書き換えてください
あとはAvsPmodのmacrosフォルダにいれておしまいです
失敗した場合に作った一時ファイル削除するようにした方がよかったかも知れませんが、消してしまうとなんで失敗したかわかりにくいような気がしたので保留しています
コメント