スポンサーサイト

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

Eval()

前回の記事で使用したスクリプト集は"WriteChapter"以外は全て、クリップを全く返さない
文字列を操作するだけの関数なので、実際のクリップには何の変化も与えていません。

文字列のトリムを実際に実行するにはAvisynth内蔵関数の"Eval()"を使います。

試しにOPのシーンだけのクリップを抜き出してみます。

#CMカット(の文字列)
str="Trim(29,5482)++Trim(7282,23553)++Trim(25353,46332)++Trim(49030,50377)"
#1個目のトリムから提供を分離
str=TrimSplit(str,1,300,back=true)
#1個目のトリムからOPを分離
str=TrimSplit(str,1,2700,back=true)
この時点で2個目のトリムがOPという事になります。
#2個目のトリムを選択(トリムを実行)
Eval(TrimSelect(str,2))

これで(だいたい)OPのシーンを抜き出せていると思います。

もちろんトリムだけではなく他の関数も実行する事ができます。
例えば
str="Spline36Resize(1280,720)"
Eval(str)
と書けばリサイズを実行する事ができます。
何の役に立つか分かりませんが、まぁとにかくそういう書き方もできるという話です。


[12/06/17更新]

●文字列のトリムでCMカット・ロゴ処理・チャプター作成までを行うスクリプトの例
/*-------------------------------------------------------------------*/
MPEG2Source("d2v")

#CMカット(この時点では文字列を設定したのみで実行してない)
str="Trim(29,5482)++Trim(7282,23553)++Trim(25353,46481)++Trim(49179,50377)"

#Trimの個数を数えておく

count=TrimCount(str)

#ロゴ処理(Evalでトリムを実行し、各トリムごとにロゴ処理を施す)
logo_file="TBS.lgd"
v01=Eval(TrimSelect(str,1)).DeLogo(logo_file,start=6,fadein=8,fadeout=8,end=7)
v02=Eval(TrimSelect(str,2)).DeLogo(logo_file,start=6,fadein=8,fadeout=8,end=7)
v03=Eval(TrimSelect(str,3)).DeLogo(logo_file,start=6,fadein=8,fadeout=8,end=7)
v04=(count>3)?Eval(TrimSelect(str,4)).DeLogo(logo_file,start=6,fadein=8,fadeout=8,end=7):v03
v05=(count>4)?Eval(TrimSelect(str,5)).DeLogo(logo_file,start=6,fadein=8,fadeout=8,end=7):v04

#trimの個数に応じて結合
all=(count==3)?v01++v02++v03
\:(count==4)?v01++v02++v03++v04
\:v01++v02++v03++v04++v05

all

/*------------チャプター作成------------*/
chap=TrimClean(str)

# 1個目のTrimが[アバン + OP +提供]以上の長さがある場合はOPで分割
chap=(v01.framecount>3020)? TrimSplit(chap,1,3000,back=True) : chap

# 最後から2番目のTrimをEDの長さで分割
chap=TrimSplit(chap,TrimCount(chap)-1,2700,back=True)

# 1個目のTrimの長さによってパート編成を選択
part=(v01.framecount>3020)?"avant,op,a-part,b-part,ed,next"
\:(v01.framecount>2980)?"op,a-part,b-part,ed,next"
\:"avant,a-part,b-part,ed,next"
#※1個目のTrimの長さが3020より長いならアバン&OP、ほぼ3000くらいならOPのみ、
# 2980より少ないならアバンのみと判定させています。



# チャプターファイルの出力

WriteChapter(chap,"chapter.txt",part,fps=framerate)


return last

#EraseLOGOの"end"を後ろから何フレーム目かの表記に換えただけの関数
function DeLogo(clip c,string logofile,int "start",int "fadein",int "fadeout",int "end"
\,int "depth",bool "interlaced")
{
start=default(start, 0)
fadein=default(fadein, 0)
fadeout=default(fadeout, 0)
end=default(end, 0)
depth=default(depth,128)
interlaced=default(interlaced, true)
_end=c.FrameCount()-end-1
return EraseLOGO(c,logofile=logofile,pos_x=0,pos_y=0,depth=depth,yc_y=0,yc_u=0,yc_v=0
\,start=start,fadein=fadein, fadeout=fadeout,end=_end,interlaced=interlaced)
}
/*-------------------------------------------------------------------*/

ロゴのフェードなどは微調整が必要な場合がありますが、Aviutlなどでエクスポートしたトリムを
最初にそのまま貼るだけで、ロゴ処理とチャプター作成が(だいたい)できるので便利ではないかと思います。

スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

putin

Author:putin
ロゴ関係ソース

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

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

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

この人とブロともになる

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