★おしらせ★
ここはややマニアックなので、家庭用ビデオ編集向けのもっとベーシックな内容をhttp://dtv.sakura.ne.jp/に展開中です。あわせてご覧ください。

まえがき

ただのカット編集じゃ味気ない、ということでAviSysnthを使った簡単な映像効果についてまとめました。

ディゾルブ

いわゆる、ジワーっと場面が切り替わる効果です。トランジションでよくあるパターンです。 下の例では、v1とv2の間を60コマ(2秒)でつなぎます。

v1=Trim(1000,1999)
v2=Trim(4000,4999)
dissolve(v1,v2,60)
この場合、下の図のように映像が連結されるため、全体の長さは v1+v2 より60コマ少なくなります。

テロップ

テロップを出すフィルタは、オプションが結構たくさんあります。 Subtitle( 対象クリップ , 文字列 ) だけでも出ることは出るのですが、実用的に使うには下記のような設定項目を入れてやりましょう。
Subtitle( 対象クリップ , 文字列 , 横座標 , 縦座標 , 開始フレーム , 終了フレーム , フォント名 , フォントサイズ , 文字の色 , 文字のふちの色 , 字寄せ , 文字間 )
項目説明
対象クリップ テロップを乗せる対象のクリップを指定します。先ほどの dissolve の例で言うところの v1 とか v2 とかを指定することができるのですが、分からなければ last と入れてください。
文字列 具体的な文字列を指定します。" " で囲ってください。改行は入れられません。そんなときはSubtitleを2回使いましょう。
横座標 テロップの基点の横座標を数字で指定します。-1 とすると画面の真ん中と解釈されます。
縦座標 テロップの基点の横座標を数字で指定します。-1 とすると画面の真ん中と解釈されます。
開始フレーム テロップを乗せる範囲を指定します。全域なら、開始フレームは 0 です。
終了フレーム テロップを乗せる範囲を指定します。全域なら、終了フレームは FrameCount( 対象クリップ )-1 です。(対象クリップにはこの表の一番上の 対象クリップ で指定したものと同じものを指定してください。
フォント名 フォントを指定します。" " で囲ってください。例えば、"MS ゴシック" のように。
フォントサイズ フォントサイズを指定します。単位はポイントだと思います。
文字の色 文字の色を数値で指定します。 R(赤)G(緑)B(青)の組み合わせで指定します。Windowsについてくる「ペイント」の色指定画面を思い出しましょう。 なぜか青がUになってますが気にせずに。この数字を元に以下のように記述します。 (赤)*65536+(緑)*256+(青) 上の例なら 44*65536+207*256+138 となります。
文字のふちの色 文字の縁取りの色を指定します。指定の仕方は文字の色と同じです。
字寄せ 字寄せは 1〜9 の数字で指定します。意味は次のとおり。
数字横座標縦座標
1左端を基点にするボトムラインを起点にする
2中央を基点にするボトムラインを起点にする
3右端を基点にするボトムラインを起点にする
4左端を基点にするベースラインを起点にする
5中央を基点にするベースラインを起点にする
6右端を基点にするベースラインを起点にする
7左端を基点にするトップラインを起点にする
8中央を基点にするトップラインを起点にする
9右端を基点にするトップラインを起点にする
縦座標は、英語ノート(penmanship)の4本線を思い出してください。日本人にはあまり関係ないです。
文字間 文字の間隔を決めます。マイナスだと間が詰まり、プラスだと間が広がります。
例えば、「テロップ」という文字/画面中央/クリップ全域/フォントはMS明朝/大きさ40ポイント/白い文字/黒い縁取り/文字間は通常どおり というテロップを入れるには次のようにします。

Subtitle(last,"テロップ",-1,-1,0,FrameCount(last)-1,"MS 明朝",40,255*65536+255*256+255,0,5,0)
実際には次のような画面になります。

PinP(ピクチャーインピクチャー)

PinP、要するに映像の重ね合わせを行うには Layer を使います。 その前に、主画面と子画面になる映像を用意しておきましょう。

v1=MPEG2Source("D:\sample\hanabi1.d2v")
a1=MPASource("D:\sample\hanabi1 MPA T01 DELAY -66ms.mpa")
c1=AudioDub(v, a).DelayAudio(-0.066).AutoDeint("").BilinearResize(640,480)
v2=MPEG2Source("D:\sample\hanabi2.d2v")
a2=MPASource("D:\sample\hanabi2 MPA T01 DELAY -66ms.mpa")
c2=AudioDub(v, a).DelayAudio(-0.066).AutoDeint("").BilinearResize(320,240)
c1が親画面、c2が子画面になります。c2 は c1 の縦横半分のサイズになっていることが分かりますか? Layer も先ほどの SubTitle に負けずたくさんのオプションがあるのですが、とりあえず PinP に必要なものだけを紹介します。
Layer ( 親画面 , 子画面 , "add", 透明度 , 横座標 , 縦座標 )
項目説明
親画面 親画面のクリップを指定します。
子画面 子画面のクリップを指定します。
"add" 本当はもっとたくさんあるのですが、PinPに使うだけなら "add"=クリップを加える だけで十分でしょう。
透明度 "add" する強さを表します。0なら効果なし(透明)、255なら効果最大(不透明)です。
横座標 読んで字の如し
縦座標 同上
例えば、c1上の(100,50)の場所にc2を乗せるには次のようにします。

Layer(c1,c2,"add",255,100,50)
実際には次のような画面になります。

注意事項

ここで述べているような重い処理をすると、やはり不安定になることがあります。 特に、makeAVIS を使って作成した偽装 .avi でそうなることが多いです。 その場合、以前述べた方法を使って VirtualDubMod からいったん正規の .avi を書き出すといいです。
その際、お勧めの codec は、やっぱり huffYUV です。google で検索してください。

基本フィルタ一覧

AviSynth に標準でついているフィルタ一覧です。 ヘルプの和訳ですが、英語力に自信が無いので原文も確認してください。
これ以外にも、さまざまな人が作ったフィルタがあります。 また、単発で使用するのではなく、フィルタの重ねがけをすることで非常にバリエーション豊かな映像処理が可能です。 例えば、テロップをズームしたり、PinPの子画面を動かしたり、顔にモザイクを入れて音声を変えてみたり・・・
そういった工夫も楽しみの一つではないでしょうか?

クリップ作成用のソースフィルタ

フィルタ説明対応形式
AviSource AVIファイルを開く。 RGB24, RGB32, YUY2, YV12
OpenDMLSource AVIファイルを開く。 RGB24, RGB32, YUY2, YV12
AviFileSource AVIファイルを開く。 RGB24, RGB32, YUY2, YV12
WavSource WAVファイルまたはAVIファイル中の音声を開く。 RGB24, RGB32, YUY2, YV12
DirectShowSource DirectShow経由でファイルを開く。 RGB24, RGB32, YUY2, YV12
SegmentedAviSource / SegmentedDirectShowSource 100個までの連番ファイルを自動的に開くフィルタ。 RGB24, RGB32, YUY2, YV12
BlankClip / Blackness 指定したフレーム数の単色、音声なしのクリップを作成するフィルタ。 RGB24, RGB32, YUY2, YV12
IPCSource 別のプロセスとして動いているAviSynthと互換性のあるフレームサーバのチャネルを開く。 RGB24, RGB32, YUY2
ImageReader / ImageSource 静止画を読み込んで動画クリップを作成するフィルタ。 RGB24, RGB32, YUY2, YV12
Import 現在のスクリプトに外部のAviSynthスクリプトを導入する。 RGB24, RGB32, YUY2, YV12

画像処理用のフィルタ

フィルタ説明対応形式
AddBorders 画像の周りに黒い縁をつける。 RGB24, RGB32, YUY2, YV12
Blur / Sharpen シンプルな周囲3x3ピクセル分のぼかし/シャープフィルタ RGB24, RGB32, YUY2, YV12
ColorYUV 輝度と色差を独立に調整する。 YUY2, YV12
ConvertBackToYUY2 YUY2→RGB変換をしたクリップを損失なくYUY2に戻す。 RGB24, RGB32, YUY2
ConvertToRGB RGB24のクリップを除き、RGB32に変換する。 RGB24, RGB32, YUY2, YV12
ConvertToRGB24 / ConvertToRGB32 / ConvertToYUY2 / ConvertToYV12 RGB24/RGB32/YUY2/YV12に変換する。 RGB24, RGB32, YUY2, YV12
Crop 画像をクロップする。 RGB24, RGB32, YUY2, YV12
CropBottom 画像の下をクロップする。 RGB24, RGB32, YUY2, YV12
GeneralConvolution 一般的な畳み込み。(マトリックス演算) RGB32
GreyScale 映像を白黒に変換する。 RGB24, RGB32, YUY2, YV12
HSIAdjust (removed in v2.53) V2.53で削除されたフィルタ。 RGB24, RGB32, YUY2, YV12
Invert 映像を色を反転する。 RGB24, RGB32, YUY2, YV12
Layer 2つの映像を重ねる。 RGB32, YUY2
Mask クリップにマスクをかけた部分を透明化する。 RGB32
ResetMask アルファチャンネル(透明色)を削除する。 RGB32
ColorKeyMask 指定した色と近い色の領域を透明化する。 RGB32
Letterbox 画像の上下(左右)を帯状に黒で塗りつぶす。 RGB24, RGB32, YUY2, YV12
Levels 明るさ、コントラスト、ガンマを調整する。 RGB24, RGB32, YUY2, YV12
Limiter 輝度、色差を指定の範囲にクリップする。 YUY2, YV12
MergeChroma / MergeLuma 映像クリップの輝度だけ、色差だけを重み付けして重ね合わせる。 YUY2, YV12
Overlay 2つのクリップを様々なオプションを使って合成できる。オーバーレイクリップの透明度の指定も可。 RGB24, RGB32, YUY2, YV12
ReduceBy2 画像のサイズを半分に縮小する。 RGB24, RGB32, YUY2, YV12
HorizontalReduceBy2 / VerticalReduceBy2 画像の水平/垂直のサイズを半分にする。 RGB24, RGB32, YUY2, YV12
RGBAdjust RGB、アルファの各チャンネルを別々に調整する。 RGB24, RGB32, YUY2
BicubicResize / BilinearResize / LanczosResize / Lanczos4Resize / PointResize 映像の大きさを、様々なアルゴリズムで任意の解像度に変更する。 RGB24, RGB32, YUY2, YV12
SpatialSoften / TemporalSoften 空間(2次元)/時間(3次元)方向に選択的にぼかすことで映像クリップからノイズを除去する。 YUY2, YV12 (only TemporalSoften)
ShowAlpha クリップのアルファチャンネルを見る。 RGB32
SwapUV UV(色差)チャンネルを入れ替える。 YUY2, YV12
UToY / VToY U/V(色差)をY(輝度)にコピーする。画像サイズは半分になる。 YUY2, YV12
YToUV 2つのクリップのY(輝度)をU/V(色差)に置き換える。画像サイズは倍になり、Yは50%グレーになる。Yを加えるにはMargeLunaを使う。 YUY2, YV12
Tweak 明るさ、コントラスト、色相、彩度を調整する。 RGB24, RGB32, YUY2, YV12

エンコード用のフィルタ

フィルタ説明対応形式
AlignedSplice / UnalignedSplice 2つ以上のクリップを連結する。 RGB24, RGB32, YUY2, YV12
AssumeFPS / ChangeFPS / ConvertFPS フレームレート変更。フレーム数保持、クリップの時間保持などの違いがある。 RGB24, RGB32, YUY2, YV12
DeleteFrame 指定フレームを削除。音声の長さは調整されない。 RGB24, RGB32, YUY2, YV12
Dissolve つなぎ目をオーバーラップさせながら、AlignedSpliceのようにクリップを連結する。 RGB24, RGB32, YUY2, YV12
DuplicateFrame 指定フレームを複製する。音声の長さは調整されない。 RGB24, RGB32, YUY2, YV12
FadeIn / FadeIn2 / FadeOut / FadeOut2 / FadeIO / FadeIO2 クリップを音声を含めフェードイン/フェードアウトする。 RGB24, RGB32, YUY2, YV12
FreezeFrame クリップの指定範囲のフレームを1つのフレームで置き換える。 RGB24, RGB32, YUY2, YV12
Loop クリップの指定範囲を指定した回数繰り返す。 RGB24, RGB32, YUY2, YV12
SelectEven / SelectOdd 奇数/偶数フレームだけを取り出したクリップを作成する。 RGB24, RGB32, YUY2, YV12
SelectEvery 固定間隔でフレームを取り出す。SelectEven や SelectOdd を一般化したもの。 RGB24, RGB32, YUY2, YV12
SelectRangeEvery 固定間隔で指定したフレーム数を取り出す。 RGB24, RGB32, YUY2, YV12
Trim クリップを指定した範囲でトリミングする。 RGB24, RGB32, YUY2, YV12

インターレース映像用のフィルタ

現在(v2.5xおよびそれ以前のバージョン)では、AviSynthは、インターレースを表すフラグを持っていません。 フィールドベースを表すフラグがあります。 しかし、期待に反して、このフラグはインターレースとは関係がありません。 実際、AviSynthのフィルタで変更しなければ、映像はプログレッシブもインターレースもすべてフレームベースです。 フレームベースの映像をフィールドベースに変えるには、SeparateFields か AssumeFieldBased のフィルタを使用します。
フィルタ説明対応形式
AssumeFrameBased / AssumeFieldBased クリップがフレームベースかフィールドベースかを指定する。 RGB24, RGB32, YUY2, YV12
AssumeBFF / AssumeTFF クリップのフィールドオーダーを指定する。 RGB24, RGB32, YUY2, YV12
Bob Bobインターレース解除をする。 RGB24, RGB32, YUY2, YV12
ComplementParity トップフィールドとボトムフィールドの設定を入れ替える。実際の映像を加工するわけではない。 RGB24, RGB32, YUY2, YV12
DoubleWeave フィールドベースのクリップを Weave と同じように処理するが、2倍のフレームを生成する。 RGB24, RGB32, YUY2, YV12
Interleave 複数のクリップから交互にフレームを取り出してインターリーブする。 RGB24, RGB32, YUY2, YV12
Pulldown 元の映像の5フレーム毎に2フレームを選択する。 RGB24, RGB32, YUY2, YV12
SeparateFields フレームベースのクリップをフィールド別に分解する。 RGB24, RGB32, YUY2, YV12
SwapFields インターレース化されたフレームのフィールドを入れ替える。 RGB24, RGB32, YUY2, YV12
Weave クリップ内のフィールドのペアを組み合わせてインターレースフレームを作成する。 RGB24, RGB32, YUY2, YV12

音声フィルタ

v2.5以前では、これらの音声フィルタを使用する際に音声サンプルのビット数は16ビットに変換されます。 v2.5からは音声サンプルのビット数はフィルタの要求に応じて自動的に変換されます。 つまりほとんどのフィルタは複数の形式の入力を受け付けるが、あるフィルタがサポートしない入力形式だった場合は、そのフィルタが受け付ける形式のどれかに変換されるということです。 各フィルタがサポートする内部形式は、色空間で決まります。 ConvertAudio関数を使うと特定の音声形式に変換できます。
浮動小数点でサンプリングすると、AviSynth は音声データを出力する際に16ビット(整数)に変換します。 浮動小数点は正規のAVIデータではありません。
フィルタ説明対応形式
Amplify / AmplifydB 音声サンプルを増幅する。 16Bit, Float
AssumeSampleRate 音声の再生速度を調整する。 All
AudioDub 指定した映像と音声を結合する。 All
ConvertAudioTo8bit / ConvertAudioTo16bit / ConvertAudioTo24bit / ConvertAudioTo32bit / ConvertAudioToFloat 音声サンプルのビット数を8/16/24/32/浮動小数点に変換する。 All
ConvertToMono 全ての音声チャンネルを統合する。 16Bit, Float
DelayAudio クリップの音声を遅らせる。 All
EnsureVBRMP3Sync シークやトリムの際に同期の取れていないmp3音声を修正する。 All
GetChannel クリップから指定したチャンネルの音声を取り出す。 All
GetLeftChannel / GetRightChannel クリップから左/右チャンネルの音声を取り出す。 All
KillAudio クリップから音声を完全に消す。 All
LowPassAudio / HighPassAudio (removed in v2.52) V2.52で削除されたフィルタ。 N/A
MergeChannels 複数の音声クリップのチャンネルを統合する。 All
MixAudio 複数のクリップの音声をミックスする。 16Bit, Float
MonoToStereo 2つのモノラル音声を1つのステレオ音声に変換する。 16Bit, Float
Normalize クリップしない範囲でできるだけ波形を増幅する。 16Bit, Float
ResampleAudio 高品質な音声のリサンプル。 16Bit
SuperEQ 高品質な16バンドのイコライザ。 Float
SSRC 非常に高品質な音声のサンプリングレート変換。 Float
TimeStretch ピッチをそのままに音声の速さを変更、あるいは音声の長さをそのままに音声のピッチを変更する。 Float
Tone 音声を生成する。 Float

特別な、あるいは新種のフィルタ

フィルタ説明対応形式
Animate / ApplyRange 連続的に変化する(Animateの場合)、まはた一定の(ApplyRangeの場合)、あるフィルタを適用するメタフィルタ。 RGB24, RGB32, YUY2, YV12
ConditionalFilter / FrameEvaluate / ScriptClip / ConditionalReader ConditionalFilter はある条件が満たされる場合はソース1を、そうでなければソース2を返す。ScriptClip はフレーム毎に関数の評価結果を返す。 YV12
FixBrokenChromaUpsampling MS_DV コーデックは誤った色差を返すので、それを補正する。 YUY2
FixLuminance フィールド毎に輝度レベルが異なるクリップを補正する。 YUY2
FlipHorizontal / FlipVertical 映像の左右/上下を反転する。 RGB24, RGB32, YUY2, YV12
ImageWriter フレームのイメージを保存する。 RGB24, RGB32, YUY2, YV12
PeculiarBlend 各フレームをそれに続くフレームと特有の方法で合成する。 YUY2
Reverse クリップを逆転再生する。 RGB24, RGB32, YUY2, YV12
Subtitle 1行のアンチエイリアス処理された文字列を指定範囲のフレームに加える。 RGB24, RGB32, YUY2, YV12
TCPServer ネットワーク越しにクリップを送信できるようにする。複数クライアントが同じサーバに接続可能。 All available
TCPSource ネットワーク越しにクリップを送信できるようにする。複数クライアントが同じサーバに接続可能。 All available
TurnLeft / TurnRight クリップを時計回り/反時計回りに90度回転する。 RGB24, RGB32, YUY2, YV12
WriteFile / WriteFileIf / WriteFileStart / WriteFileEnd テキストファイルに出力する。 RGB24, RGB32, YUY2, YV12

デバッグ用のフィルタ

フィルタ説明対応形式
ColorBars 任意サイズのSMTPEカラーバーのクリップを生成する。 RGB32
Compare 2つのクリップを比較して、差異の情報を表示する。 RGB24, RGB32, YUY2
Histogram ヒストグラムを付加する。 YUY2, YV12
Info 映像と音声の情報を表示する。 RGB24, RGB32, YUY2, YV12
MessageClip テキストメッセージのクリップを生成する。 RGB32
ShowFiveVersions 5つの映像を左から右に互い違いに配置する。 RGB24, RGB32, YUY2
ShowFrameNumber / ShowSMPTE AviSynth が保持している フレーム番号/SMPTEタイムコードをフレームごとに表示する。 RGB24, RGB32, YUY2, YV12
StackHorizontal / StackVertical 複数のクリップを左から右/上から下へ並べて表示する。 RGB24, RGB32, YUY2, YV12
Subtract 2つのクリップ間の対応するピクセルの差分からなるクリップを生成する。 RGB24, RGB32, YUY2, YV12
Version 短いバージョンとコピーライトの文章からなるクリップを生成する。 RGB24