AviSynthのぺーじ/カラーバーで遊ぼう(1)

これは、かつて「にーやんのAviSynthのぺーじ」として公開されていたものを転載したものです。内容は古く、間違いも含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のヘルプや AviSynth 公式サイトを参考にすることをおすすめします。AviSynth WikiAviSynth入門なども活用してください。

クイズです。

 突然ですが、クイズです。

colorbars_flip11b.png

 上の画像のreturnの次(モザイクの部分)に入る言葉は何でしょうか?

 答えは2つ。

 もちろんエラーが出ずに、何らかの画像が表示されることが条件です。

 これがわかる人は、これ以降の数ページを読む必要はないかもしれません。

 わからない人は、とりあえずこのページを読み進めてみてください。たぶんわかるようになると思います。

 あとで答えが出てきますが、いきなり答えだけ読んでもわからないと思います。

 あせらず、順番に行きましょう。

カラーバーで遊ぼう

 ここでは、カラーバーを使いながら、もう少しスクリプトの基本を勉強したいと思います。

 カラーバー*1は、深夜、テレビ放送が終了した後などに出る赤とか黄色とかの棒(バー)を組み合わせたようなやつのことです。

 ・・・って、説明が下手ですみません(^^;

colorbars.png

 要するに、こういう画像(正確には信号)のことです。

 テレビモニタの画質を調整するために使われるものなのですが、ここでは色調補正の話をしようというわけではありません。ていうか、私にはそんな能力はありません(^^;

 AviSynthにはカラーバーを擬似的に作り出すフィルタが内蔵されていますので、それを使ってちょっと遊んでみようというわけです。

ColorBars()

 フィルタの名前はColorBarsです。

 そのまんまですね。

 では、スクリプトを書いてみましょう。

colorbars1.png

 新しくメモ帳に書いてもいいのですが、ここではtest.avsを書き換えることにします。

 test.avsをVirtualDubModで開いて、[Tools]->[Script editor...]からスクリプト・エディタを起動します。

 Versionフィルタと同じようにColorBars()と書いて、[F5]で更新っと・・・。

error_colorbars1.png

 ガ━━(゜Д゜;)━━━ン!!!!!

 エラーが出てしまいましたが、ここは焦らずにエラーメッセージを見てみることにしましょう。

 「Invalid arguements...」はカッコの中身が間違っていたときに出るエラーでしたね。

 やはりマニュアルはちゃんと読まないとダメなようです。

マニュアルを読もう

ColorBars

ColorBars(int width, int height)

The ColorBars filter produces a video clip containing SMPTE color bars scaled to any image size. The clip produced is RGB, 29.97 fps, 1 hour long.

A test tone is also generated. Test tone is a 440Hz sine at 48KHz, 16 bit, stereo. The tone pulses in the RIGHT speaker, being turned on and off once every second.

 AviSynth2.5.2のマニュアルからの引用です(※一部、文字を斜体に変更してあります)。

 カッコの中の「int width, int height」が気になりますね。

 widthは幅、heightは高さの意味であることはわかるかもしれませんが、ではintは何を表しているのでしょうか?

 とりあえずVersionフィルタのときと同じように訳してみましょう。

ColorBars

ColorBars(int width, int height)

ColorBarsフィルタはどのような画像サイズにも変更できるSMPTE*2カラーバーを含むビデオクリップを生成します。このフィルタによって作られるクリップは、RGB、29.97fps、長さ1時間になります。

試験音声も同時に作り出されます。試験音声は440Hzの正弦波*3で48KHz、16ビット、ステレオです。音声は右のスピーカーで振動し、一秒ごとにオン・オフを繰り返します。

 正弦波(サイン波とも言う)は、簡単に言うと時報の「ピ・ピ・ピ・ピー」と同じものらしいです。詳しいことは私もわからないので、興味のある人はこちらのページあたりを読んでみてください。

 ともあれ、ColorBarsがどのようなフィルタなのかは、おおよそ理解することができました。

 よく見てください。「どのような画像サイズにも変更できる」とあります。

 ということは、どこかで画像サイズを指定する必要がありますね。

 ハイ、それが「int width, int height」です。

 論より証拠。試しにやってみましょう。

intの謎

colorbars2.png

 幅(横解像度)が640、高さ(縦解像度)が480のカラーバーを作ってみましょう。

 画像の大きさを表すには、普通、数字を使いますから、widthに640、heightに480と入力してみます。

 そして、[F5]で更新っと。

colorbars640x480s.png

 カラーバー キタ━━━━━━(゜∀゜)━━━━━━ !!!!!

colorbars3.png

 ではwidthを320に、heightを240に変更してみましょう。

 [F5]で更新。

colorbars320x240s.png

 うまく行きましたね。よかった、よかった。

 えっ?

 「intの意味は何?」

 「ColorBars(int 320, int 240)って書かなくていいの?」

 す、するどいですね。

 では次回、いよいよ引数と書式について解説したいと思います。

 クイズの答えは次の次くらいになると思います(^^;

補足、あるいは蛇足

colorbars3.png

 さきほどの画像です。

 よく見ると、「320,」と「240」の間に半角スペースが空いています。

 よくこういう書き方をします。

 こういう風に書く本当の理由は知りません(^^;

 私がこういう書き方をするのは、詰めて書くと境目がわかりにくいし、この方が何となく見栄えがいいからです。

 ちなみに、

colorbars4.png

 半角スペース10個分まで試してみましたが、カラーバーは問題なく表示されました。

 それ以上は試してないのでわかりません。

colorbars5.png

 ただし、数字の間に半角スペースを入れたり、全角スペースだとダメでした。

 当たり前っちゃ当たり前なんでしょうけど。

最終更新日 2003年10月12日


最終更新日時: 2014-03-12 (水) 23:36:48 (3690d)