AviSynthのぺーじ/カラーバーで遊ぼう(2)
これは、かつて「にーやんのAviSynthのぺーじ」として公開されていたものを転載したものです。内容は古く、間違いも含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のヘルプや AviSynth 公式サイトを参考にすることをおすすめします。AviSynth Wiki の AviSynth入門なども活用してください。
複数のフィルタをかける †
前々回、ColorBarsフィルタでカラーバーを作り出しました。
今回は、このカラーバーに別のフィルタをかけてみましょう。
使用するフィルタはFlipVerticalです。
flipは「ひっくり返す」、verticalは「垂直の」という意味になります。だいたい、どのようなフィルタか想像できましたね。
では、例のごとく、マニュアルを見てみることにしましょう。
FlipVertical †
FlipVertical
FlipHorizontal(clip clip)
FlipVertical(clip clip)
FlipVertical flips the video upside-down. Useful for dealing with broken video codecs.
Likewise FlipHorizontal (which is present in AviSynth v2.5) flips the video from left to right.
短い文章ですが、一応、訳してみます。
FlipVertical
FlipHorizontal(clip clip)
FlipVertical(clip clip)
FlipVerticalはビデオを上下逆さまに反転させます。壊れたビデオコーデックを扱う際に役に立ちます。
同様に、FlipHorizontal(AviSynth v2.5で登場)はビデオを左右逆さまに反転させます。
ここでいうコーデックとは、動画や音声などを圧縮(符号化)したり伸張(復号化)したりするプログラムのことを言います(伸張というのは圧縮されたデータをPC上で表示・再生可能な状態に戻すことです)。有名なビデオコーデックにはHuffyuvやDivXなどがあります。ちなみにコーデック(CODEC)という言葉は、CompressionとDecompression(またはCoderとDecoder、CompressorとDecompressor)を合わせたものです。
よくネットで「動画が再生できない」とか「編集ソフトで開けない」とかいう話を目にしますが、それはその動画ファイルをエンコードするのに使われたコーデックがインストールされていない可能性が高いと考えられます。なぜなら、たとえ同じ拡張子.aviのファイルであっても、コーデックによって異なる方式で符号化(圧縮)されているからです。
このページを読んでいる人は自分でキャプチャしたりエンコードしたりすると思うので、あまり関係のない話だとは思いますが・・・。
このFlipVerticalフィルタですが、VFAPI*1プロジェクトファイル(*.tpr、*.aupなど、VFAPI対応ソフトの編集設定ファイル)をソースとして使用する場合によく使われます。
AviSynthでVFAPIプロジェクトファイルを開くと上下逆さまの画像になってしまうのですが、そういった時にこのFlipVerticalを使って画像を正しい位置に戻すのです。
FlipHorizontalというフィルタも併記されていますが、こちらは水平方向(Horizontal)に画像をひっくり返すフィルタです。
ただし説明にもあるように、FlipHorizontalはAviSynth2.5から追加されたフィルタですので、それ以前のバージョンを使用している人はこのフィルタを使うことはできません。
とりあえずやってみる †
さて、FlipVerticalの書式がわかったところで、まずはいつものように適当に書いてみることにしましょう(マニュアル見た意味がないような・・・笑)。
複数のフィルタかける場合は、基本的に一つのフィルタごとに改行します。そうしないとAviSynthはスクリプトの境目がわかりません(たぶん)。
改行せずに複数のフィルタをかける記述方法もありますが、それについてはまた後で紹介したいと思います。
では[F5]で更新してみましょう。
ハイ、うまく行きました。カラーバーが上下逆さま(180度回転ではなく、天地がひっくり返った状態)になってますね。
今回はこれにておしまい・・・と行きたいところですが、もちろん、これはスクリプト入門ですから、そういうわけには行きません。これでは何もわかったことにはなりませんよね。
では、スクリプトの二行目を見てください。
FlipVerticalフィルタの書式は、さきほど見たように「FlipVertical(clip clip)」です。しかし、ここでは(カッコ)の中は省略されており(ていうか何も考えていなかったために)引数が書いてありません。
引数clipには、いったい何が指定されたのでしょうか?
そこで前回のデータ型clipの説明を思い出してください。
「ビデオクリップ。省略した場合、最後に処理されたクリップ(last)が指定される。」
そうです。データ型clipの引数を「省略した場合、最後に処理されたクリップ(last)が」引数として渡されるのです。
この場合、最後に処理されたクリップとは一行目の「ColorBars(320,240)」になりますから、FlipVerticalのカッコの中には「ColorBars(320,240)」が入っていることになります。
ですから、さきほどのスクリプトを左のように書き換えても同じということになるのです。
実際にこのスクリプトを開いても、先ほどと同じ反転したカラーバーが表示されます。
では「最後に処理されたクリップ(last)」のlastとは何のことでしょうか?
それを説明するために、AviSynthの文法について、ふれておきたいと思います。
ただし説明が長くなりそうなので、ここでいったん頁を改めることにします。
最終更新日 2003年10月28日