AviSynthのぺーじ/エラーが出たら・・・
これは、かつて「にーやんのAviSynthのぺーじ」として公開されていたものを転載したものです。内容は古く、間違いも含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のヘルプや AviSynth 公式サイトを参考にすることをおすすめします。AviSynth Wiki の AviSynth入門なども活用してください。
いくつかの具体例と対処法 †
前回、前々回と「Version()」という短いスクリプトを題材にして解説してきましたが、中にはAVSファイルを開い瞬間にエラーが出てしまった人がいるかもしれません。
また、今回はエラーが出ずにうまく行った人も、今後、もう少し複雑なスクリプトを書くようになると、必ず一度はエラーに出くわすと思います。
ちなみに、私は数え切れないぐらいのエラー画面を見てきました(笑)
そこで、次の段階に進む前に、あらかじめいくつかのエラーのタイプとその対処法について、ふれてておきたいと思います。
エラー その1 †
このようなメッセージが出た人はいらっしゃいますか?
たとえエラーメッセージが出ても、あわててすぐに消さないようにしてください。まずは何が書かれているかチェックしてみましょう。
エラーメッセージには、スクリプトのどこに問題があったかを知るヒントが書かれていることがあります。
- 一行目:
Avisynth open failure:
(Avisynthは開くのに失敗しました:)
これについてはとくに説明する必要はないと思います。次。
- 二行目:
Script error: there is no function named "Vesion"
(スクリプト・エラー: "Vesion"という名前の関数はありません。)
「"Vesion"という名前の関数はありません。」
ん、Vesion?
Vesionって何?
どこが間違っていたのか、だいたい予想はついてきたことでしょう。
でも、念のために、最後までチェックしてみましょう。
- 三行目:
(D:\Source\test.avs, line 1)
(Dドライブ->Sourceフォルダにあるtest.avsの1行目)
test.avsというのは、前々回作成し、前回VirtualDubModで開いたAVSファイルのことです。
そのline 1、つまり1行目に問題がありますよ、ということを、このメッセージは表しています。
では実際にスクリプトファイル(test.avs)を開いて確認してみましょう。
スクリプトの修正 †
VirtualDubModのメニューから[Tools]->[Script Editor]からスクリプト・エディタを起動します。
VirtualDubModやAVSPreviewなどのエディタ付きのソフトを使用していない人は、メモ帳でtest.avsを開き直してください。
スクリプト・エディタを開いたところです。
よく見てください(よく見なくてもわかると思うけど)。
Vesion()
Version()ではなく、Vesion()になっています。
うっかり「r」を抜かしてしまったために、エラーが出たというわけです。
「r」を付け加えて、スクリプトを修正しましょう。
修正しました。
するとVersionが緑色の太字になりましたね。
このようにVirtualDubModのスクリプト・エディタでは、AviSynth内蔵のフィルタは緑色の太字で表示されます*1。
これはVirtualDubModと一緒にインストールされている(もしくはインストールした)AviSynth Lexerによるものです。
見た目にわかりやすく、非常に便利な機能だと思います。
修正し終わったら、保存しましょう。
スクリプト・エディタのメニューから[File]->[Save]で上書き保存することができます。
左の画像にあるように[Ctrl]キーと[S]キーの同時押しか[F2]キーでも上書き保存することができます。こちらのほうが簡単ですね。
また、[File]->[Save & Refresh]を選択すれば、保存と同時にプレビュー画面を更新することができます。
こちらは[F5]キーがショートカットとして割り当てられていますので、わざわざメニューから選択しなくても[F5]キーを押すだけで保存と更新を行うことができます。
私の場合、いったんスクリプト・エディタで上書き保存して([F2]キーを押して)から、VirtualDubModのメイン画面に戻り(VirtualDubModをアクティブにして)、[F5]キーで更新してスクリプト修正後の状態をチェックしています。
メニューの[Edit]->[Refresh]から更新することもできます。
このような画面が表示されれば成功です。
エラー その2 †
- 二行目:
unexpected character "・
(予期せぬ文字 "・)
どうやら使っちゃマズい文字を使ってしまったようです。
スクリプト・エディタを開いてみると、文字の周りが真っ赤になっています。
一見、間違っていないようにも見えますが、じつは全角で書かれているためにエラーが出ているのです。
AviSynthスクリプトは全角(2バイト文字)には対応していませんので、必ず英数半角で書いてください。
もしスクリプト内にコメントを付け加えたいときは、その前に「#」(半角シャープ)を付けてください。
「#」を付けると、その行についてのみ、それ以降の記述が無効になります。
エラー その3 †
- 二行目:
Script error: syntax error
(スクリプト・エラー: シンタックス・エラー)
シンタックス・エラーとは「プログラムの構文の誤り」のことです。 スクリプト・エディタでtest.avsを開いてみましょう。
最後の「)」を書き忘れていますね。
どうやら、これが原因だったようです。
エラー その4 †
- 二行目:
Script error: Invalid arguements to function "Version"
(スクリプト・エラー: 関数"Version"に不正な引数)
引数*2は前にも出てきましたね。
とりあえずスクリプト・エディタを開いてみることにしましょう。
(カッコ)の中に2が書いてありますね。
前回見たように、Versionフィルタの書式は「Version()」または「Version(clip, clip)」でした。
書式の読み方や引数についての詳しい説明をまだしていないのでわからないかもしれませんが、Versionフィルタでは数字をカッコ内に書くことは認められていません。
カッコの中に何でも書いていいという訳ではないのです。
「そんなこと言われても、引数とか書式とか説明してないから、さっぱりわからない」と思われるかもしれません。
次の次くらいには解説する予定ですので、もうしばらくお待ちください。
とりあえず、ここではカッコの中身が間違っていたら「Invalid arguements...」というエラーが出るということだけ知ってもらえればいいと思います。
そんなことはいいから「もうちょっと実践的なことやってほしい」というあなた、さらにもうしばらくお待ち下さい。
次も簡単なスクリプトを使って、いろいろと試してみたいと思います。
最終更新日 2003年10月10日