AviSynthのぺーじ/カラーバーで遊ぼう(1)
これは、かつて「にーやんのAviSynthのぺーじ」として公開されていたものを転載したものです。内容は古く、間違いも含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のヘルプや AviSynth 公式サイトを参考にすることをおすすめします。AviSynth Wiki の AviSynth入門なども活用してください。
クイズです。 †
突然ですが、クイズです。
上の画像のreturnの次(モザイクの部分)に入る言葉は何でしょうか?
答えは2つ。
もちろんエラーが出ずに、何らかの画像が表示されることが条件です。
これがわかる人は、これ以降の数ページを読む必要はないかもしれません。
わからない人は、とりあえずこのページを読み進めてみてください。たぶんわかるようになると思います。
あとで答えが出てきますが、いきなり答えだけ読んでもわからないと思います。
あせらず、順番に行きましょう。
カラーバーで遊ぼう †
ここでは、カラーバーを使いながら、もう少しスクリプトの基本を勉強したいと思います。
カラーバー*1は、深夜、テレビ放送が終了した後などに出る赤とか黄色とかの棒(バー)を組み合わせたようなやつのことです。
・・・って、説明が下手ですみません(^^;
要するに、こういう画像(正確には信号)のことです。
テレビモニタの画質を調整するために使われるものなのですが、ここでは色調補正の話をしようというわけではありません。ていうか、私にはそんな能力はありません(^^;
AviSynthにはカラーバーを擬似的に作り出すフィルタが内蔵されていますので、それを使ってちょっと遊んでみようというわけです。
ColorBars() †
フィルタの名前はColorBarsです。
そのまんまですね。
では、スクリプトを書いてみましょう。
新しくメモ帳に書いてもいいのですが、ここではtest.avsを書き換えることにします。
test.avsをVirtualDubModで開いて、[Tools]->[Script editor...]からスクリプト・エディタを起動します。
Versionフィルタと同じようにColorBars()と書いて、[F5]で更新っと・・・。
ガ━━(゜Д゜;)━━━ン!!!!!
エラーが出てしまいましたが、ここは焦らずにエラーメッセージを見てみることにしましょう。
「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の謎 †
幅(横解像度)が640、高さ(縦解像度)が480のカラーバーを作ってみましょう。
画像の大きさを表すには、普通、数字を使いますから、widthに640、heightに480と入力してみます。
そして、[F5]で更新っと。
カラーバー キタ━━━━━━(゜∀゜)━━━━━━ !!!!!
ではwidthを320に、heightを240に変更してみましょう。
[F5]で更新。
うまく行きましたね。よかった、よかった。
えっ?
「intの意味は何?」
「ColorBars(int 320, int 240)って書かなくていいの?」
す、するどいですね。
では次回、いよいよ引数と書式について解説したいと思います。
クイズの答えは次の次くらいになると思います(^^;
補足、あるいは蛇足 †
さきほどの画像です。
よく見ると、「320,」と「240」の間に半角スペースが空いています。
よくこういう書き方をします。
こういう風に書く本当の理由は知りません(^^;
私がこういう書き方をするのは、詰めて書くと境目がわかりにくいし、この方が何となく見栄えがいいからです。
ちなみに、
半角スペース10個分まで試してみましたが、カラーバーは問題なく表示されました。
それ以上は試してないのでわかりません。
ただし、数字の間に半角スペースを入れたり、全角スペースだとダメでした。
当たり前っちゃ当たり前なんでしょうけど。
最終更新日 2003年10月12日
*1 参考: http://www.jvc-victor.co.jp/dvmain/club/school/word/word1.html#collar_b
*2 訳者註: 参考: http://yougo.ascii24.com/gh/54/005493.html
*3 訳者註: 参考: http://allabout.co.jp/entertainment/dtm/closeup/CU20010918/index_sa01.htm