スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Auto_VFR ver 0.1.0.5

Auto_VFR.avs
(ver 0.1.0.6)を使用してください。

ログ作成スクリプトのみの更新です。変更点は以下です。

(1)ソース解像度がSD時のデフォルト値の変更
(2)分割解析に対応("start","total","middle"パラメータの追加)

解析のスレッド使用率がなかなか上がらないので、分割解析できるようにしてみました。
CPU次第ですが2つ同時解析くらいならほとんど速度が落ちないので有効な方法だと思います。



//---------- 記述例 ----------//
[avsファイルの例]
MPEG2Source(video_file)

#CMカットの文字列を貼り付ける
str_trim="Trim(32,5964)++Trim(7764,23377)++Trim(25177,46334)++Trim(48134,48582)"

#TrimSelectはblog-entry-6.htmlを参照。面倒でなければ直接Trimを分割してもいいです。
clip1=Eval(TrimSelect(str_trim,1))++Eval(TrimSelect(str_trim,2))
clip2=Eval(TrimSelect(str_trim,3))++Eval(TrimSelect(str_trim,4))
fc1=clip1.framecount
fc2=fc1+clip2.framecount

clip1.Auto_VFR("log1.txt",total=fc2,middle=true) #1番目
#~ clip2.Auto_VFR("log2.txt",start=fc1) #2番目(まだコメントアウトしておく)
return last

[batファイルの例]
%x264% --preset ultrafast --tune fastdecode --bitrate 0 --output NUL %1

//---------- 使い方 ----------//
(1)上記のavsをbatファイルにドロップすると前半部分の解析が始まります。
(2)avsの#1番目をコメントアウトし、#2番目のコメントアウトを解除してavsを保存したら
 同じbatファイルにドロップすると後半部分の解析が始まります。
(3)2つとも解析が終わったら、以下のbatファイルでログファイルを結合させて完成です。

 copy log1.txt + log2.txt log.txt

//---------- 解説 ----------//
分割解析をするのに使うパラメータは以下の3つです。
total    ・・・・1番先頭のカットのみ指定します。全てのカットの総フレーム数を指定します。
start    ・・・・2番目以降のカットで指定します。解析開始位置のフレームを指定します。
middle   ・・・・最後以外のカットには"middle=true"を指定しておきます。

分割部分を強制的にシーンチェンジ扱いにするので、通しで解析した場合と若干結果が
異なる場合がありますが、CMカットで分割するなら問題ないと思います。
自分で分割位置を決める場合は、縞を挟まずにシーンチェンジしている箇所で分割すれば
通しで解析した時と同じ結果が得られるはずです。
ちなみに今回は5の倍数とかは気にしなくていいです。


最後に4分割で解析する場合の例も書いておきます。
[avs]
MPEG2Source(video_file)
str_trim="Trim(32,5964)++Trim(7764,23377)++Trim(25177,46334)++Trim(48134,48582)"

clip1=Eval(TrimSelect(str_trim,1)).TBSCrop() #アバンかAパートに豚が現れる場合は消しておく
clip2=Eval(TrimSelect(str_trim,2)).TBSCrop()
clip3=Eval(TrimSelect(str_trim,3))
clip4=Eval(TrimSelect(str_trim,4))
fc1=clip1.framecount
fc2=fc1+clip2.framecount
fc3=fc2+clip3.framecount
fc4=fc3+clip4.framecount

clip1.Auto_VFR("\log1.txt",total=fc4,middle=true) #1番目
#~ clip2.Auto_VFR("log2.txt",start=fc1,middle=true) #2番目
#~ clip3.Auto_VFR("log3.txt",start=fc2,middle=true) #3番目
#~ clip4.Auto_VFR("log4.txt",start=fc3) #4番目
return last

[bat]
copy log1.txt + log2.txt + log3.txt + log4.txt log.txt



スポンサーサイト

よくある自動出力スクリプトの例と修正の仕方

とある地上波24分アニメをAutoVfrにかけたらこんな風になりました。

00000-04249 [24] (5,0,3)
04250-04254 [60] f60
04255-04259 [24] (10,0,3,6,8)
04260-04289 [24] (5,1,3)
04290-04294 [24] (5,0,3)
04295-04299 [60] f60
04300-04314 [24] (5,0,3)
04315-04319 [60] f60
04320-04324 [24] (5,0,3)
04325-04334 [60] f60
04335-04344 [24] (5,0,3)
04345-04349 [60] f60
04350-04354 [24] (5,0,3)
04355-04359 [60] f60
04360-04369 [24] (5,0,3)
04370-04379 [60] f60
04380-04384 [24] (5,0,3)
04385-04389 [60] f60
04390-04594 [24] (5,0,3)
04595-04604 [60] f60
04605-04609 [24] (5,0,3)
04610-04614 [60] f60
04615-04664 [24] (5,1,3)
04665-04674 [60] f60
04675-04679 [24] (5,0,3)
04680-04684 [60] f60
04685-04689 [24] (5,0,3)
04690-04704 [60] f60
04705-04714 [24] (10,0,3,6,8)
04715-04724 [60] f60
04725-04729 [24] (5,0,3)
04730-04739 [60] f60
04740-04749 [24] (5,0,3)
04750-04754 [60] f60
04755-04759 [24] (5,0,3)
04760-04764 [60] f60
04765-04774 [24] (5,0,3)
04775-04784 [60] f60
04785-04804 [24] (5,1,3)
04805-04849 [60] f60
04850-05499 [24] (5,0,3)
05500-11874 [24] (5,0,2)
11875-12619 [60] f60
12620-18699 [24] (5,0,2)
18700-19439 [60] f60
19440-43141 [24] (5,0,3)

一見するとやたらと多分割ですが、よく見ると大半の行が4250~4850フレームの
間に集中しています。
このソースではOPに該当する区間なのですが、動きが激しかったりノイズっぽいのが
出てたりで、こういう事になってるようです。

このままでもまぁ特に問題はないのですが、せっかくなので綺麗にしてみようと思います。

このあたりで使われているプルダウン解除は
(5,0,3)
(10,0,3,6,8)
(5,1,3)
の3つですが、早見表を憶えているなら全部同じ周期を解除しているんだな、と分かります。
なので

00000-05499 [24] (5,0,3)
05500-11874 [24] (5,0,2)
11875-12619 [60] f60
12620-18699 [24] (5,0,2)
18700-19439 [60] f60
19440-43141 [24] (5,0,3)

とこうすればスッキリします。
いやもちろんサラッと確認はすべきですけどね。

早見表

この手のキーワードで検索して来る人が多いようなので、一般的な23プルダウンの解除方法の早見表を書いときます。

pulldown

一番左が元クリップの縞の順序(Iが縞)を示しています。
例えばフレーム番号の末尾の0,4が縞なら”IPPPI”という事になります。

ソフトは都合に応じて(10,a,b,c,d)も使いますが、人間がやる場合は(5,a,b)だけ使えばいいと思います。
AntiComb(checkmode=true)とShowFiveVersionsを使った判別方法が有名ですが、
縞の順序と解除方法の組み合わせを理解しておくといろいろと捗ります。

ベンチ

Sandy-EのPCを買ったのでログの作成速度を旧機と比較してみました。

マシン① Win7-64bit Professional
 Core i7 3930K@3.5GHz 
 メモリ 16GB@PC-12800
 ドライブ SSD+HDD

マシン② Win7-64bit Ultimate
 Core i7 2600k@3.6GHz
 メモリ 16GB@PC-10600
 ドライブ SSD+HDD

[avs]
 MPEG2Source(d2v).threadrequest()
 Trim()#CMカット
 Auto_VFR("log.txt")
 PointResize(16, last.height()).threadrequest()
 PointResize(last.width(), 16).threadrequest()

[x264(r2146)](avs2pipemodでx264-64bitを使用)
 --preset ultrafast --tune fastdecode --bitrate 0 --output NUL


//----結果
ソースA (doubleweave_f-86302)
 マシン①116.00 fps
 マシン②119.30 fps

ソースB (doubleweave_f-89906)
 マシン①69.67 fps
 マシン②70.06 fps

ソースC (doubleweave_f-86306)
 マシン①46.04 fps
 マシン②47.39 fps

ソースD(doubleweave_f-86308)
 マシン①127.99 fps
 マシン②131.95 fps

ソースによって何故か倍以上の速度差があります。
基本的にスレッド使用率が非常に悪いので、コア数増加の恩恵は全く感じられません。
まぁそうだろうとは思ってましたけどね。
遅いソースでどうにか速くする方法は無いもんでしょうか・・。

ちなみに実エンコでは2600kと比べてだいたい2割強ほど速い感じです。

????

なんか2chに書いてあったのをいろいろ試してみたのですが、
私には理解できないことがあったので書いてみます。


例えば周期が"IPPPI"の5フレームのクリップがあるとします。
これを
trim(0,4)
DoubleWeave().Pulldown(1,4)
と書くと最後はフィールドが不足するので縞になってしまうわけですが、

trim(0,4)
SeparateFields()
Weave
DoubleWeave().Pulldown(1,4)
と書くと何故か最後のフレームが変化してしまいます。
ちなみにweaveに()をつけてしまうとダメです。

私の使ってるAvisynthはv2.6 SEt ビルドだと思うのですが、他の人も同じ現象が起きるのでしょうか?

メモ8

/*---AutoVfr.exe ver0.1.1.0---*/
Download

簡易解析モードを追加しました。
機能的には下記のように制限されますが、解析フレーム数が通常版の1/6になります。

 ・機能は24/60fps、または24/30fpsの分割のみ。
 ・AutoVfr.iniで指定した関数のみ使用される。

簡単に言うとテロップ処理とかだけできればいいやという人向けです。


※avs例
 MPEG2Source("video_file")
 Trim()#CMカット
 Auto_VFR_Fast("log_file")
 return last

※コマンド例
 AutoVfr.exe -i "log_file" -o "output.def" -ref 150 -30f 1 -60f 1 -fix 0

Auto_VFR_Fastで作成したログを入力すると自動的にFast-Modeになります。
この時、-REF は非24fps区間の最小フレーム数を指定するコマンドとして
使われます(最小30 / 15フレーム単位)



プロフィール

putin

Author:putin
ロゴ関係ソース

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
メールフォーム

名前:
メール:
件名:
本文:

リンク
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。