アニメーション編集 for AviUtl

スクリプトを読み込んで動画を編集するプラグインです。
座標や色などのパラメータにフレーム番号を含む数式を記述できるので動きなどを表現できます。

読み込み動画のフォルダにanimation.txtを作成し、記述するとスクリプトに従って処理を行ないます。
animation.txtを編集した後は、再読込などをしなくても即時反映されます。

プラグインは画像処理用のanimate_v.aufと音声処理用のanimate_a.aufがあります。
設定ファイルはどちらも同じファイルを使用します。

fileanimate11.lzh

Ver1.0aから開発環境をVC++2005からVC++2008に変更したのでランタイム(vcredist_x86.exe)が変更されています。

設定画面

animate.png

設定画面ではマルチスレッドのスレッド数と表示するバッファを設定できます。
スレッド数はCPUのコア/スレッド数にあわせて下さい。

表示Bufのスライダーを動かすと各バッファ(buf[0]〜buf[9])の内容を確認できます。
通常は0を設定しておいてください。

設定画面から変数 a,b,c,d,u,v,x,y,z を設定できます。
スライダーの範囲は0〜4096になります。

クロマキー画像作成プラグイン

入力支援用?プラグインをおまけに付けておきます。
指定範囲内、または範囲外の色を塗り潰してクロマキー合成用の画像またはマスク画像を作るプラグインです。
また、マウスクリックした場所の座標と色をポップアップダイアログで表示できます。

filecroma01.lzh

■更新履歴
2007.10.09 ver0.1

入力動画について

DirectShow入力は正確な位置のフレームを取得できないことがあるのでなるべく使わないでください。
入力動画はHuffyuv + PCM音声などのフレーム間圧縮をしないコーデックで中間出力しておいたほうが良いです。
MPEG系などのフレーム間圧縮を行なうコーデックはフレーム単位でデコードが出来ないため処理が非常に遅くなります。

例えば、最大キーフレーム間隔300のMPEG系動画では最悪の場合、1フレームの画像を取得するのに
300フレーム分の画像をデコードしなければならないこともあります。
※copyframe()の処理速度の話なのでcopyframe()を使用しない場合はこの限りではありません。

入力動画が出力動画よりも短くても animation.txt の範囲指定でフレームを追加することが出来ます。
素材は一本の動画にまとめておいて、範囲指定で必要な部分だけ出力するような使い方になると思います。

使用例

画像処理

1.5倍速再生

copyframe(0, f*1.5, 0,0,w,h, 0,0)

逆再生

copyframe(0, m-f, 0,0,w,h, 0,0)

10枚の連番静止画を各300枚ずつ表示

[0-2999]
copyframe(0, f/300,0,0,w,h,0,0)

ネガポジ反転

color(0, 0,0,w,h, -1,-1,-1, 4096,0,0)

徐々にモノトーンにする

[0-99]
color(0, 0,0,w,h, 1,1-g/n,1-g/n, 0,0,0)
[100-]
color(0, 0,0,w,h, 1,0,0, 0,0,0)

クロスフェード(f=600でシーン切り替えの場合)

[550-599]
copyframe(1, f+50, 0,0,w,h, 0,0)
alpha(1,0, 0,0,w,h, 0,0, g/n)
[600-]
copyframe(0, f+50, 0,0,w,h, 0,0)

テロップの挿入 (f=1000:テロップ画像)

[0-100]
copyframe(1, 1000, 0,0,w,h, 0,0)
copy2(1,0, 0,0,w,h, 0,0, 2048)

テキストテロップ表示(縁取り)

font2("MS 明朝",120, 0,1,0, 10, 2048,-2048,2048, 4096,-2048,2048)
text(0, w/2,h-120, 1, "文字列")

モザイク(設定画面を利用) 変数設定(a,b, c,d, u) = (横位置,縦位置, 幅,高さ, 細かさ)

mosaic(0,1, 0,0, w,h, 0,0, u*100/4096+1,u*100/4096+1)
copy(1,0, a*w/4096,b*h/4096, c*w/4096,d*h/4096, a*w/4096,b*h/4096)

画面を4分割してそれぞれに動画を表示

resize(0,1, 0,0,w,h, 0,0, w/2,h/2)
copyframe(0, f+100, 0,0,w,h, 0,0)
resize(0,1, 0,0,w,h, w/2,0, w/2,h/2)
copyframe(0, f+200, 0,0,w,h, 0,0)
resize(0,1, 0,0,w,h, 0,h/2, w/2,h/2)
copyframe(0, f+300, 0,0,w,h, 0,0)
resize(0,1, 0,0,w,h, w/2,h/2, w/2,h/2)
swapbuf()

残像効果 (buf[2]〜buf[9]はプラグイン内で書き換えない限り内容は保持されます)

[0-0]
copy(0,2, 0,0,w,h, 0,0)
[0-]
alpha(0,2, 0,0,w,h, 0,0, 0.1)
copy(2,0, 0,0,w,h, 0,0)

字幕消し (defocus()を強くかけるので重いです)

[0-0]
fill(8, 0,0, w,h, 0,0,0)
fill(8, w/8-10,h*7/8+5,w-w/4+20,h/16-10, 4096,0,0)
fill(8, w/8,h*7/8,w-w/4,h/16, 4096,0,0)
defocus(8,9, 0,h*3/4,w,h/4, 0,3*h/4, 30,10)
[0-]
defocus(0,1, 0,h*3/4,w,h/4, 0,h*3/4, 30,30)
alpha4(1,0,9, 0,h*3/4, w,h/4 ,0,h*3/4, 0,h*3/4)

音声処理

フェードイン

[0-99]
a_volume(0,g/n,(g+1)/n,0)

クロスフェード(f=600でシーン切り替えの場合)

[550-599]
a_copyframe(1, f+50)
a_volume(0,1-g/n,1-(g+1)/n,0)
a_volume(1,g/n,(g+1)/n,0)
a_blend(1,0)
[600-]
a_copyframe(0, f+50)

逆再生

a_copyframe(1,m-f)
a_reverse(1,0)

1.5倍速再生

a_copyframe2(0,f*1.5,(f+1)*1.5)

処理範囲指定

フレームの範囲指定([開始-終了])
この記述以降はこの範囲に対して処理を行ないます。終了フレームは省略可能。
終了フレームが総フレーム数より大きい場合は総フレームを追加します。

フェードイン+左右反転

[0-99]
color(0, 0,0,w,h, g/n,g/n,g/n, 0,0,0)
[0-]
fliph(0,1,0,0,w,h,0,0)
swapbuf()

フレーム番号について

フレーム番号は0から始まりますが、AviUtlの初期状態では+1されて1から表示されるようになっています。
システム初期設定で0から表示するように設定することが出来ます。

処理関数(Video)

描画を行なうスクリーンはbuf[0]〜buf[9]まで用意されており、buf[0]が入出力される画像、
buf[1]〜buf[9]は作業用の一時画像置き場になります。
バッファ間で処理する関数は同一バッファ内で処理前と処理後の領域が重なる場合は正常動作しません。
座標は領域外でもそれなりに処理します。
なるべく処理結果は別バッファに置いてcopy()やswapbuf()などで書き戻してください。

処理関数(Audio)

音声もフレーム単位で処理を行ないます。

数式について

以下の変数・演算子・関数が使えます。

上記以外の変数 A〜Z、a〜z はスクリプト中で設定が出来ます。

[0-50]
A=w/4
[51-]
A=w/2
[0-]
fill(0, 0,0,A,h, 2000,0,0)

更新履歴

2008.05.11 ver1.1 font2()追加、text()修正
2008.05.09 ver1.0a ランタイムの変更(VC++2005→VC++2008)
2008.05.04 ver1.0 text()の文字化け対策
2007.11.05 ver0.9 a_voicechg()追加、posterize(),posterize_rgb()修正
2007.10.31 ver0.8 ellipse(),posterize(),posterize_rgb(),color_rgb(),mkmask_rgb()追加、text()修正
2007.10.28 ver0.7 変数に代入できるようにした
2007.10.25 ver0.6 a_copyframe2(),font(),text()追加、diffuse()修正ほか
2007.10.23 ver0.5 設定画面に変数追加ほか
2007.10.21 ver0.4 gamma(),diffuse()追加
2007.10.18 ver0.3 マルチスレッド対応、defocus(),a_noise(),a_tone()修正ほか
2007.10.08 ver0.2 mkmask()追加
2007.10.08 ver0.1 公開


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS