オリジナルFAQ

基本編

一般的なFAQ

AviSynthは、何と読みますか?

stickboy 氏によると、AviSynth のオリジナル開発者である Ben Rudiak-Gould 氏は、AviSynth を【AWH-vee-synth】(オー・ヴィー・シンス)と発音したそうです(Doom9's Forum - Sort of OT: Guess whom I met at work today! より)。

また、Doom9's Forum 内のスレッドで行われた投票では、英語話者の多くが【AY-vee-eye-synth】(エイ・ヴィー・アイ・シンス)を選択する一方、全体では【AH-vee-synth】(アー・ヴィー・シンス)が一番多くの票を集めています(2007-10-09 現在)。投票結果はこちら

AviSynthを利用するのにお金がかかりますか?

いいえ。AviSynthは、無料で利用することができます。

なお、AviSynthはフリーソフトウェア(「無料」ではなく「自由」の意味のフリー)として開発され、GNU General Public License Ver.2の下で配布されています。

AviSynth2.5はYV12専用ですか?

違います。AviSynth2.5からYV12をサポートするようになりましたが、YV12専用ではありません。

AviSynth2.5がサポートしている色空間は、RGB32/RGB24/YUY2/YV12(I420)です。

ビデオ・クリップの情報を確認する方法を教えて

あなたがAviSynth2.5以降を使用しているのなら、Infoフィルタを使用することで、色空間などのクリップ情報を知ることができます。

AviSynth1.0/2.0 の場合は、kiraru2002 さん作成の info_modoki 関数を使用することで、Info フィルタと同様の情報を知ることができます。詳しくは、info_modoki を参照。

クリップの情報をテキストファイルに書き出したい

クリッププロパティ関数と Write 関数を組み合わせることによって可能です。詳しくは、クリップのプロパティを外部ファイルに書き出すを参照してください。

コマンドラインから(ビデオクリップへのエンコードを行わずに)テキストファイルのみを出力する方法については、「バッチファイル内で AviSynth スクリプトを実行したい」を参照。

バッチファイル内で AviSynth スクリプトを実行したい

バッチファイルの中でビデオクリップへのエンコードを行わずに AviSynth スクリプトを実行したい(たとえば、Write を使ったテキストファイルの出力や ImageWriter を使った静止画像の出力など)場合は、AVS2AVI の出力オプションで NULL (-o n)を指定するか、avsutil を使うとよいでしょう。

SetMemoryMaxの値は、どのように設定すればいいですか?

SetMemoryMaxを参照。

DVD2AVI/DGIndexで分離した音声ファイル「foo MPA T01 DELAY -**ms.mpa」をDelayAudioで遅延補正するとき、指定する値はプラスとマイナスのどちらですか?

niiyan/2005-12-15のDVD2AVI/DGIndexの遅延補正値についてを参照。

AviUtlでAVSファイルを開きたい

AviUtl version 0.99k から、プラグインなしでも AVS ファイルを開けるようになりました。

それよりも古いバージョンの AviUtl を使用している場合は、AviUtlでAVSファイルを開くを参照。

AviSynthに対応していないソフトウェアでAVSファイルを開きたい

以下の方法を試してみてください。

  • AviSynth用VFAPIプラグインのインストール(VFAPI対応ソフトウェアの場合)
  • AviUtl入力プラグインのインストール(AviUtlのみ)
  • AVSファイルの疑似AVI化
  • AviSynthに対応しているソフトウェアで中間ファイルを出力

アプリケーションのAviSynth対応状況も参照。

64bit版のAviSynth、および64bit版の外部プラグインはどこで手に入りますか?

64bit版のAviSynth、および64bit版の外部プラグインは、squid_80氏のサイト(http://members.optusnet.com.au/squid_80/)から入手可能です。

再エンコードなしで編集できますか?

できません。AviSynth で読み込んだクリップは、非圧縮のデータにデコードされます。

AviSynth を使えばエンコードを高速化できますか?

ネット上ではしばしば、「AviSynth はエンコード速度を高速化する」といった記述を見かけることがあります。しかし、AviSynth それ自体に何か高速化するような特別な仕組みが盛り込まれているわけではありません。そもそも AviSynth はフレームサーバー*1と呼ばれる種類のソフトウェアであり、エンコードに直接関係するわけではありません。ですから、「AviSynth はエンコード速度を高速化する」といった記述は誤解を与えかねないものであると言えるでしょう。

一方で、他の動画編集ソフトウェア(AviUtl や VirtualDub など)に比べて、AviSynth を使用した方が相対的に処理速度が速くなり、結果的にエンコード時間の短縮につながるということはあるかもしれません。例えば、以下のようなケースがそうです。

  • YV12 フォーマットの採用
    • AviSynth では入力から出力まで YV12 で渡すことが可能なため、他の動画編集ソフトウェアを使用する場合に比べて、計算に使用されるデータ量が少なくて済み、処理にかかる時間を短縮できるかもしれません。
  • マルチスレッド化
    • AviSynth 自身はマルチスレッドに対応していません*2が、tsp 氏が開発した MT プラグインとマルチスレッド対応修正版 AviSynth を使用することによって、マルチスレッドでの処理が可能になります。これらを利用することによって、マルチスレッドに対応していない他のソフトウェアや従来の AviSynth に比べても、処理がより高速に行われることでしょう。
  • 64 ビット版 AviSynth
    • squid_80 氏をはじめとした有志により、AviSynth 本体および一部のプラグインの 64 ビット対応が進められています。現時点で利用可能な外部プラグインの数は限られていますが、64 ビット環境をお持ちであればひとつの選択肢として考えられます。

しかしこれらの場合を含め、結局はフィルタ使用の有無や使用するフィルタの重さによって処理時間に違いが生じるため、AviSynth を使用すれば絶対にエンコードが高速化できるとは言えません。

クリップの読み込みに関するFAQ

MPEG-2 ファイルを開きたい

MPEG-2ファイルを読み込むを参照してください。

WMV や ASF を読み込めますか?

DirectShowSource フィルタか FFmpegSource を試してみてください。

DirectShowSource を使って可変フレームレートのクリップを開くときは、convertfps パラメータの設定を true にして、fps パラメータで正しいフレームレートを明示してください。可変フレームレート(VFR)のビデオクリップを読み込むことができますか?も参照。

RM を読み込めますか?

DirectShowSource フィルタを試してみてください。ただし、DirectShow 経由でビデオクリップを読み込むには、あらかじめスプリッタとデコーダを用意しておく必要があります。

RM(RealMedia)の場合は、RealPlayer(または RealAlternative)と RealMedia Splitter をインストールする必要があります*3

QuickTime 動画(MOV)を読み込めますか?

MOV(QuickTimeムービー)ファイルの読み込みに関しては、以下の方法が考えられます:

FLV 動画を読み込めますか?

DirectShowSource フィルタか FFmpegSource を試してみてください。

DirectShowSource フィルタを使って DirectShow 経由でビデオクリップを読み込むには、あらかじめスプリッタとデコーダを用意しておく必要があります。

FLV の場合、スプリッタとして FLV Splitter*6 をインストールします*7。ただし、FLV Splitter の種類によっては、On2 VP6 コーデックを使ってエンコードされた FLV(FLV4)に対応していないものがあるようです*8

デコーダには、ffdshow を利用します。ffdshow を使って FLV をデコードするには、ffdshow の Video decoder configuration(ビデオデコーダー設定)の Codecs(コーデック)メニューの設定を有効にする必要があります。Sorenson Spark コーデックでエンコードされた FLV(FLV1)なら FLV1 形式を、On2 VP6 コーデックでエンコードされた FLV(FLV4)なら VP6F 形式を、それぞれ libavcodec に変更します。

VC-1 を読み込めますか?

NVIDIA 社の CUDA*9 に対応したグラフィックカードをお持ちであれば、DGVC1DecNV (寄付ウェア)を使って読み込むことが可能です。DGVC1DecNV に関しては、GPUプラグインを参照してください。

それ以外の環境では、DirectShowSource フィルタを試してみてください。また、下記の「VC-1形式のファイルが開けません。」も参照。

MP4 や MKV を読み込めますか?

以下のプラグインで読み込める可能性があります:

  • DirectShowSource
  • DSS2
  • FFmpegSource
  • DGAVCDec
  • DGAVCDecNV

これらのプラグインの入手先などの情報は、ビデオ入力を参照してください。

MP3オーディオファイルを開きたい

DirectShowSourceフィルタを試してみてください*10

また音声入力プラグインの中にも、MP3のデコードに対応したものがいくつかあります(MPASource, NicAudioなど)。

WMA、OGGやAACなどのオーディオファイルを読み込む方法は?

再生用のDirectShowフィルタがインストール済みであれば、DirectShowSourceフィルタを使って読み込むことが出来るかもしれません*11

また、外部プラグインのbassAudio(bassAudioSourceフィルタ)も利用可能です。bassAudioは、OGG/AIFF/WMA/FLAC/WavPack/Speex/Musepack/AAC/M4Aなど数多くのファイルフォーマットに対応しています*12

可変フレームレート(VFR)のビデオクリップを読み込むことができますか?

AviSynthが扱うことができるのは、固定フレームレート(CFR)のビデオクリップのみです。

ただし、DirectShowSourceフィルタのconvertfpsパラメータを有効(true)にして読み込めば、VFRのビデオクリップがCFRに変更されるため、AviSynthで取り扱うことができるようになります。

# 使用例:
DirectShowSource("foo.avi", convertfps=true, fps=119.880)

convertfpsパラメータは、AviSynth v2.5.6(beta3以降)から利用可能です。

詳しくは、DirectShowSourceを参照。

静止画を開きたい

内蔵フィルタの ImageSource (ImageReader)や外部プラグインimmaavs プラグイン(immaread フィルタ)などを使って、JPEG や PNG などの静止画像を読み込むことができます。対応しているフォーマットについては、各フィルタや各プラグインのヘルプを参照してください。

アルファチャンネル付きのPNG画像を開きたい

ImageSourceフィルタのpixel_type引数を"RGB32"に設定してください。pixel_type引数のデフォルトは"RGB24"であるため、これを明示しない限り、ImageSourceはPNG画像をRGB24として開き、アルファチャンネルの情報を読み込みません(ネタ元: Overlaying an image - Doom9's Forum)。

  • 例:
    ImageSource("image_with_alpha.png", pixel_type="RGB32")
    

またimmareadプラグインを使用して、アルファチャンネル付きのPNG画像を開くことも可能です。

ImageSource フィルタで読み込める画像フォーマットを教えてください

ImageSource(ImageReader)フィルタは、デフォルトで(または use_DevIL=false のとき)、AviSynth 内蔵の BMP パーサを使って画像を読み込もうと試みます。BMP 以外のファイルであった場合やたとえ BMP でも AviSynth 内蔵の BMP パーサで開けなかった場合、あるいは use_DevIL パラメータが true に設定されていた場合は、DevIL*13 ライブラリを使用して画像を読み込もうとします。DevIL がサポートしている画像フォーマットは、DevIL - A full featured cross-platform Image Library に書かれています*14

ネタ元: Input formats for Imagesource - Doom9's Forum

その他のフォーマット(コンテナ)のファイルの読み込みについて

上記以外のフォーマット(コンテナ)については、Tips の「ソースの読み込み」を参照してください。また、内蔵フィルタクリップ生成用ソースフィルタ外部プラグインビデオ入力プラグインまたは音声入力プラグインを試してみてください。

一度に読み込むことのできるファイル数の上限は?

Decompressor error after too many calls to AVISource? - Doom9's Forum における IanB 氏(AviSynth 開発者の 1 人)の投稿によれば、一度に読み込むことのできるファイル数の上限は、処理ごと(スクリプトごと)に異なる(決まった数の上限はない)ようです。

Decompressor error after too many calls to AVISource? - Doom9's Forum

It is mostly a per process limit (i.e per script). Generally most people can open 50 but cannot open 100. It usually depends on how much else is being loaded.

(試訳: たいていの場合、処理ごと(すなわちスクリプトごと)の上限)となります。一般にほとんどの人は 50 個のファイルを開くことはできますが、100 個のファイルは開けません。通常は、他にどれだけたくさんのファイルが読み込まれているかによります。)

プラグイン関連のFAQ

AviSynthEx(AviSynth Extention Plugin)って何ですか?

AviSynthの機能を拡張するプラグインで、VideoTools.netで配布されています。

30日間の試用が可能ですが、それ以降も使用したいときは、ユーザー登録と作者に対する寄付が必要となります。

AviSynth1.0/2.0でAviSynth2.5用のプラグインを使いたい。

トラブル編の[プラグインが使えません]を参照。

AviSynth2.5でAviSynth1.0/2.0用のプラグインを使いたい。

トラブル編の[プラグインが使えません]を参照。

一度に使用できるプラグインの数に制限はありますか?

AviSynth 2.5.6aまでのバージョンでは、一度に利用できるプラグイン数の上限は50個です。これはプラグインの上限であり、プラグインに含まれているフィルタの数は関係ありません*15

AviSynthは、そのプラグインが必要か否かに関係なく、pluginsディレクトリに存在するプラグイン(*.dll/*.vdf)の情報を、上限の50個まで前もってスキャンします。その後、その情報を記憶して、スキャンしたプラグインをアンロード(unload、領域解放)しますが、これ以上のプラグインの読み込みは行わず、avsi*16ファイルの読み込みに移ります。また、LoadPlugin関数を使って読み込んだプラグインについても、たとえそれが必要でなくてもアンロードされないため、50個の上限に影響を与えるという点に注意してください。

なお、AviSynth 2.5.7から、プラグイン情報の取得ごとにプラグインをアンロードするように仕様が変更されるため、プラグイン数の上限は撤廃されます。

詳しくは、Auto-loading Plugins Limit? - Doom9's Forum(英語)を参照。上記の説明も、リンク先のtritical氏の投稿を参考に作成しました。

関数の優先度について教えてください。

AviSynthPluginsを参照。

プラグインの優先度について教えてください。

ネタ元は、AviSynth Q&A - Page 4 - Doom9's Forum(英語)です。

DeDot でドット妨害低減のみを行いたい

DeDot で ChromaT1 を 0 に、ChromaT2 を 255 に設定することによって、クロスカラー除去を行わず、ドット妨害低減のみを行うことが可能になります。

以下は、ネタ元の「Avisynthを絶賛ιょぅょ Part15」*17からの引用です:

434 名前:名無しさん@編集中 :03/12/30 02:21

>>417,420,422

ChromaT1 を 0 にしただけではまれにブレンドする可能性があります

ChromaT2 を 255 にすれば完全にオリジナルの色が使われます

(どちらにせよ、計算はします)

ドット除去だけ使うなら

DeDot(*, *, 0, 255)

としましょう

ドット妨害低減に作用する第 1、第 2 引数(上記引用中のアスタリスク(*)の部分)には、適切な数値を指定してください。

ConvertAviUtlYCToYUY2/ConvertYUY2ToAviUtlYC と ConvertAviUtlYCToYUY2Fix/ConvertYUY2ToAviUtlYCFix の違いは?

warpsharpプラグインに内蔵されている ConvertAviUtlYCToYUY2/ConvertYUY2ToAviUtlYC フィルタと Convert AviUtlYC Fix プラグインに内蔵されている ConvertAviUtlYCToYUY2Fix/ConvertYUY2ToAviUtlYCFix フィルタは、どちらも AviUtl の色空間と AviSynth の色空間の変換を行うためのフィルタです。しかし、両者には、色差の補間方法に違いがあります。詳しくは、AviUtlフィルタプラグインを利用するの「使用上の注意」を参照してください。

AviSynthスクリプトに関するFAQ

#って何ですか?

スクリプト内に#があると、その行のそれ以降の文字列は、コメント扱いになります。 スクリプト内にコメントを書き込みたい時や、(一時的に)フィルタを無効化したい時に使用します。

  • 例:
    #コメント
    BlankClip() #コメント
    #FlipVertical() #無効化
    return last
    

スクリプトの途中で改行したい

行の先頭か最後にバックスラッシュ(日本語環境では円記号)を記述すると、スクリプトの途中で改行することができます。

  • 例1
    Subtitle("行の途中で改行したいときは、\を記述します。", \
    font="MS UI Gothic")
  • 例2
    Subtitle("次の行の先頭に書いてもかまいません。",
    \ font="MS UI Gothic")

+と++の違いは何ですか?

+はUnAlignedSplice(非直線的結合)、++はAlignedSplice(直線的結合)に相当します。両者の違いは、音声トラックの扱いにあります。

+ は、映像との同期を考慮せず、単純にクリップを連結します。++ は、2番目の音声トラックが映像と同期するように、最初の音声トラックをカットしたり無音を挿入したりします。

一般的に、AVIファイルなどの結合には + が、Trimフィルタによる選択範囲の結合には ++ が用いられます。

(2006-01-23 追記)AviSynth 2.5.6から、Trimフィルタにはpad_audioオプションが追加されています。Trimフィルタによる選択範囲を + で連結した場合も、デフォルトで映像にあわせて音声の長さが調整されます。詳しくは、選択範囲の指定方法の「pad_audioオプションについて(AviSynth 2.5.6以降)」を参照。

return lastって何ですか?

return lastを参照。

色の指定方法を教えてください。

BlankClipやLetterboxなどのフィルタで色を指定する場合、10進法か16進法でRGB値を指定する必要があります*18。画像内のRGB値を知るためには、ゆなカラーピッカーなどのカラーピッカーを使う方法があります。

AviSynth v2.5.5以降なら、ColorPresetsを使用することもできます。

AviSynthスクリプトで配列や繰り返し文を使うことができますか?

AviSynthでは、配列や繰り返し文(forなど)をサポートしていません*19。ただし、以下の方法により、AviSynth でも配列や繰り返し文が利用できるようになります。

丸括弧の省略は何らかの影響を与えますか?

AviSynth で関数を使用するとき、すべての実引数を省略した場合に限り、関数名の直後の丸括弧も省略することができます*20

  • 丸括弧を省略した例:
    Version # Version() でも動作する
    

しかし、v2.5.6 までの AviSynth では、丸括弧を省略すると内部キャッシュが無効になり、処理速度に影響が出るおそれがありました。v2.5.7 では丸括弧省略時も、省略しない場合と同様にキャッシュされるようになります。

現在使用中のスクリプトファイルの名前を知りたい

ユーザー定義関数GetScriptName を参照。

トラブル・シューティング編

一般的なトラブル

AviSynthがインストールできません。

FAQ/AviSynthがインストールできないを参照。

AviSynthをインストールしたのに動きません。

次に挙げるいくつかの方法を試してみてください。

  • デフォルトのプラグインフォルダ*21を空にする。
  • スクリプトを、なるべくシンプルにしてみる(AviSynth付属のサンプルを利用する、など)。
  • AviSynthを再インストールする。

AviSynth をインストールしました。でもどこにあるのかわかりません。

AviSynth 本体(avisynth.dll)およびその他の基本的なファイルは、Windows のシステムディレクトリにインストールされます(Windows XP なら "C:\WINDOWS\system32")。それ以外のヘルプや標準プラグイン(DirectShowSource.dll など)は、インストール時に選択したディレクトリ("C:\Program Files\AviSynth 2.5" など)にあります。

ただし、AviSynth 2.5.8 以降でスタンドアローンインストールを選択した場合は、すべて指定したディレクトリにインストールされます*22

詳しくは、インストールを参照してください。

突然、AviSynthが使えなくなりました。

[AviUtlやVirtualDubが強制終了します。]参照。

「Avisynth open failure; ***: Supports YV12 color formats only」というエラーが出ました

「***フィルタは、YV12のみをサポートしている」にも関わらず、それ以外の色空間で使用しようとしたのが原因と考えられます。
Convertフィルタを使って、そのフィルタがサポートしている色空間(この場合、YV12)に変換してください。

DVD2AVIのプロジェクトファイル(*.d2v)が開けません。

MPEG2DEC.dllとMPEG2DEC2.dllは、DVD2AVI1.77.3のプロジェクトファイルに対応していません。
DVD2AVI1.76を使ってプロジェクトファイルを作成しなおしてください。

なお、MPEG2Dec3.dllは、DVD2AVI1.76とDVD2AVI1.77.3の両方に対応しています。

ふぬああでキャプチャしたファイルを開こうとすると、「Avisynth open failure: AviSource: Could not decompress frame 0」というエラーが出て、読み込むことができません。

ふぬああの遅延時間処理の設定で、先頭がヌルフレームになっている場合に読み込めないようです(AviSynth2.0以降)。

ビデオ: 第一+ヌル
オーディオ: ヌルフレーム

のように、先頭をヌルフレーム以外に設定し直してみてください。

AVIファイルの赤色と青色が反転してしまいます。

YUVのU成分とV成分が間違ってデコードされていると考えられます。
SwapUVフィルタを試してみてください*23

Cropしたら画像がおかしくなりました。

Cropフィルタを使用するときは、適用する値とフィルタ使用後の画像のサイズ(幅と高さ)に注意してください。色空間の種類やインターレースかプログレッシブかによってデータの格納方法が異なるため、画像の幅や高さが「ある数の倍数でなければならない」という制限をともなうことがあるからです。

また、フィルタ、エンコーダや出力ファイルのフォーマットなどによっても、同様の制限を受けることがあります。

詳しくは、CropDataStorageInAviSynthColorSpaces、および「Dustフィルタを使用すると、画像がおかしくなります。」を参照。

SegmentedAviSourceで一定数以上のAVIファイルを読み込むことができません。

AviSynth 2.5では、SegmentedAviSourceフィルタで一度に読み込むことが出来る連番AVIファイルの上限は、70個程度とされています。SegmentedDirectShowSourceを使えば、もう少し多くのファイルを読み込むことができるかもしれません。

niiyan/2005-10-06を参照。

YV12フォーマットのAVSファイルを開くことができません。

YV12フォーマットのAVSファイルを開くためには、ソフトウェアによってはYV12のデコードに対応したコーデック(DivX、XviD、ffdshowHelix YUV Codecsなど)のインストールが必要になります。

aviutl_not_decompress_yv12.png

たとえば、AviUtlでYV12フォーマットのAVSファイルを開こうとすると、このようなエラーが出ます。

ただし、AviSynth用VFAPIプラグインのDGVfapi.vfpをインストールすれば、AviUtlなどのVFAPI対応ソフトウェアでも、YV12フォーマットのAVSファイルを開くことができるようになります*24

また、VirtualDub 1.6.0以降については、内蔵のデコーダがYV12をサポートしています。下記の「VirtualDub(VirtualDubMod)でAVSファイルを開くと「Couldn't locate decompressor for format 'YV12' (unknown)」というエラーが出ます。」を参照。

VC-1形式のファイルが開けません。

AviSynth のすべてのクリップは、フレーム総数に関する情報を持つ必要があります。しかし、VC-1 ではストリームの長さに関する情報が取得できないため、DirectShowSource による読み込みでエラーが発生します。

しかし、AviSynth v2.5.7 から DirectShowSource フィルタに追加される framecount パラメータで、フレーム総数(正確な値でなければならない)を明示すれば、この問題を回避することが可能です。

  • framecount パラメータの使用例
    DirectShowSource("example.vc1", fps=29.97, framecount=9999) # フレーム総数が 9999 の場合
    

DirectShowSource フィルタでクリップが開けない

DirectShow 経由でクリップを開くためには、スプリッタとデコーダがインストールされている必要があります。また、クリップの読み込みに関するFAQも参照。

DirectShowSource フィルタで読み込んだクリップのフレームレートがおかしい

DirectShowSource フィルタを使ってビデオクリップを読み込んだ場合、正しいフレームレートが取得できないことがあります。そのようなときは、fps パラメータでフレームレートを明示してください。また、可変フレームレートのクリップについては、convertfps パラメータを有効にした上で、fps パラメータを設定する必要があります。これについては、可変フレームレート(VFR)のビデオクリップを読み込むことができますか?を参照。

DirectShowSource フィルタで読み込んだ GRF ファイルに音声がありません。

GraphEdit で作成した GRF ファイル(拡張子: *.grf)を使用する際、DirectShowSource は未接続のピン 1 つしかサポートしません。このため、1 つの GRF ファイル経由で一度に映像と音声の両方を読み込むことはできません。

GRF ファイルを使って映像と音声の両方を開きたい場合、それぞれ DirectShowSource を使って読み込む必要があります。その際、以下の例のように、映像の読み込み時には「audio=false」として音声の読み込みを無効化し、逆に音声の読み込み時には「video=false」として映像の読み込みを無効化します。また、読み込んだ映像と音声の合成には、AudioDub フィルタを使用します。

# 映像の読み込み
video = DirectShowSource("video.grf", audio=false) # audio=falseで音声の読み込みを無効化
# 音声の読み込み
audio = DirectShowSource("audio.grf", video=false) # video=falseで映像の読み込みを無効化
# 映像と音声の合成
AudioDub(video, audio)

DV ビデオの音声が読み込めません

注: 以下の内容は、No Audio with DV video - Doom9's Forum における IanB 氏の投稿をまとめなおしたものです。正確に翻訳したわけではありませんので、詳しくはリンク先を参照してください。

AviSource フィルタは、AviSynth 2.5.3 から DV Type 1 を分離するようになりました。その際、ビデオストリームは VFW コーデックを使ってデコードされますが、Type 1 の DV に合成されている音声ストリームは無視されます。ただし、Type 2 の PCM オーディオストリームがある場合はデコードされます。

一方、DirectShowSource フィルタは、Type 1 の DV ファイルを分離する際に、ビデオストリームと音声ストリームの両方に対して、つねに DirectShow DV デコーダを使用します。Type 2 の PCM オーディオストリームがある場合、 Type 1 のオーディオストリームより優先して使用されるかどうかわかりません(環境による)。これを強制するには、GraphEdit で GRF ファイルをビルドする必要があります。

Type 1 の DV の合成済み音声ストリームを直接開くには、以下のようにします:

audiodub(avisource("blah.avi", False), directshowsource("blah.avi", Video=False))

ここではそれぞれ、AviSource を使ってビデオストリームのみを開き(audio=false)、DirectShowSource を使ってオーディオストリームを開き(video=false)、そしてそれらを AudioDub フィルタを使って合成しています。

なお、DV 用の VFW コーデックとしては、オープンソースの Cedocida コーデックが利用可能です。Filters for VirtualDub -- Hosted Filters and Tools などからダウンロード可能です。

ソフトウェア関連のトラブル

AviUtl で AviSynth のフィルタを使おうとするとピクセルがずれて境界の色が汚くなる

warpsharpパッケージ に同梱されている avsfilter を使えば、AviUtl で AviSynth のフィルタが利用できるようになります(AviUtlでAviSynthフィルタの設定を行うを参照)。

その際、AviUtl の色空間(YUV 4:4:4)をいったん AviSynth の色空間(YUY2)に変換して AviSynth のフィルタを利用できるようにし、さらにフィルタ適用後に AviUtl の色空間に戻す処理を行います。 ただし、この色変換に使われる ConvertAviUtlYCToYUY2 フィルタと ConvertYUY2ToAviUtlYC フィルタは left origin(左ピクセルの色差値を保持)でサンプリングを行うため、上記のような問題が発生します*25

この問題は、AviSynth フィルタの直後に YUY2アップサンプリング を使用することで回避することができます。

詳しくは、seraphyのとりあえず設置掲示板 [One Message View / Re[1]: warpsharpのavsfilterについて]を参照してください。

AviUtlやVirtualDubが強制終了します。

一部のプラグイン(古いバージョンのwarpsharp.dllとLoadPluginEx.dll、MaskTools、MergeClips、AntiBlinkやCプラグイン*26など)や関数定義ファイル(*.avsi)がプラグイン・フォルダにある場合に、この問題が発生するようです。
一度、プラグイン・フォルダ*27を空にしてみてください。

また一部のバージョンのAviSynthでインストールされるavisynth_c.dllが原因で不具合が起こることもあるようです。
Windowsのシステムフォルダ*28にavisynth_c.dllがある場合は、これを削除するかリネームするなどしてみてください。

なお、warpsharp.dllとLoadPluginEx.dllに関しては、2003年11月3日版で、この問題に対する修正が行われています。

VirtualDubModが動きません。

VirtualDubMod1.4.13.2以前の場合、「VirtualDubMod_needed_DLLs_******.zip」をダウンロードし、中に含まれるファイルをVirtualDubMod.exeと同じフォルダにコピーしてください。

VirtualDubMod1.5.1.1以降の場合は、「VirtualDubMod1_5_*_*_All_inclusive.zip」の中に、VirtualDubModの動作に必要なファイルがすべて含まれています。

VirtualDub(VirtualDubMod)でAVSファイルを開くと「Couldn't locate decompressor for format 'YV12' (unknown)」というエラーが出ます。

vdub_not_decompress_yv12.png
vdubmod_not_decompress_yv12.png

VirtualDubやVirtualDubModでYV12フォーマットのAVSファイルを開こうとすると、上図のようなエラーが出ることがあります。このエラーは、YV12フォーマットのファイルを展開するために必要なデコーダが見つからないために発生します。

1.5.10以前のVirtualDub系ソフトウェアでYV12フォーマットのAVSファイルを開くためには、YV12デコードに対応したコーデック(DivX、XviD、ffdshowHelix YUV Codecsなど)をインストールする必要があります。

VirtualDub 1.6.0以降については、VirtualDub内部のデコーダがYV12フォーマットをサポートしています。VirtualDub 1.6.0の「Change log...*29」には、次のような記述があります:

Build 21538 (1.6.0, experimental): [September 7, 2004]

features added

(中略)

YUV formats can now be directly selected for decompression and compression.

Planar YUV formats are now supported for both display and output.

(以下略)

VirtualDubModでAVI出力すると壊れたAVIが出力されます。

FAQ/VirtualDubModで壊れたAVIが出力されるを参照。

VirtualDubModのスクリプトエディタで[Import Framset as Trims]を選択したときに、正しい編集範囲が反映されません。

VirtualDubModの編集内容をスクリプトエディタにインポートの「注意: スクリプトエディタのバグについて」を参照。

dougaαのタスク実行中にエラーが発生します。

error_vdubmod_ndub_compatibility.png
VirtualDubMod1.5.4/1.5.10を使用していると、上のエラー画面が表示され、強制終了します。dougaαのreadme.txtに記載されているとおり、VirtualDubMod1.4.13を使ってみてください。

なお、VirtualDubMod1.4.13の使用に際して、別途、必要なライブラリ(DLLファイル)をダウンロードし、VirtualDubMod.exeと同じフォルダに置く必要があります。上記、「VirtualDubModが動きません。」を参照。

dougaαでDGDecodeプラグインを使いたいのですが?

DGDecode.dllをMPEG2Dec3.dllにリネームすれば、使用できるようになります。dougaαの環境設定を参照。

makeAVISが起動しません。

ffdshowに同梱されているmakeAVIS.exeが起動しない場合は、makeAVISの「makeAVISが起動しない場合」を参照してください。

プラグイン関連のトラブル

プラグインが使えません。

プラグインが読み込めない、あるいは、読み込んだのに使えないといった場合には、以下のような原因が考えられます。

  • プラグインのパスが間違っている

    LoadPluginフィルタを使ってプラグインを読み込んでいる場合、プラグインまでのパスが間違っていると読み込むことができません*30。もう一度、スクリプトを確認しなおしてみてください。

    プラグインのオートローディングを利用している場合、これは関係ありません。

  • プラグインとAviSynthのバージョンの問題

    AviSynth1.0/2.0用のプラグインは、そのままではAviSynth2.5で使えません。逆に、AviSynth2.5用のプラグインも、そのままではAviSynth1.0/2.0で使えません。

    これは、AviSynth2.5で大幅に仕様変更されたのに伴い、プラグインの互換性がなくなってしまったことに起因しています。

    そのプラグインが対応しているAviSynthのバージョンを確認してください。

    ただし、warpsharpプラグインと一緒に配布されているLoadPluginExプラグインを使うことで、互換性のないプラグインでも使用することができるようになります。

    例えば、DustプラグインをAviSynth2.5で使いたい場合は、次のようにDustプラグインよりも先にLoadPluginExプラグインを読み込みます。

    LoadPlugin("LoadPluginEx.dll")
    LoadPlugin("DustV5.dll")

    詳しくは、LoadPluginExを参照。

  • ランタイム(DLL)の不足

    他にプラグインが使えない原因としては、動作に必要なランタイム*31(DLL*32)が不足していることが考えられます。

    プラグインに付属している説明書などを読んで、必要なランタイムがあれば、システムフォルダなどのパスの通った場所にインストールしてください。

プラグインの動作に必要なランタイムがわかりません。

Dependency Walkerを使用すれば、そのプラグインと依存関係にあるモジュール*33(exeやdllなど)を知ることができます。

dependencywalker_hqdn3d.png
hqdn3d.dllをDependency Walkerで開いたところ。msvcp71.dllとmsvcr71.dllが必要であることがわかる。

なお、ランタイムは、VectorDownload: Windows > ユーティリティ > ランタイムパッケージ等DLL-files.comなどで入手することができます。

動的リンクと静的リンクの違いは何ですか?

RemoveGrainのように、動的リンク版(例: RemoveGrain.dllなど)と静的リンク版(例: RemoveGrainS.dll)の2種類が用意されているプラグインがあります。

静的リンクとは、

ASCII24 - アスキー デジタル用語辞典 - 静的リンク

プログラムを開発するときのリンクの際、プログラムとライブラリ関数をひとつのファイルにまとめる

ことをいい、それに対し、動的リンクとは、

ASCII24 - アスキー デジタル用語辞典 - 動的リンク

リンク時にライブラリと結合するのではなく、プログラムが必要に応じてライブラリを呼び出す方法

のことをいいます。

このため、静的リンク版のプラグインは、別途、ランタイム(DLL)を必要としないのに対し、動的リンク版のプラグインでは、必要なランタイムを、予め、システムフォルダなどのパスの通った場所に置いておく必要があります。

すでにランタイムがインストール済みの場合は、動的リンク版のプラグインを使用すればいいでしょう。もし何らかの理由(必要なランタイムがわからない、など)で、動的リンク版のプラグインが使用できない場合は、静的リンク版を試してみてください。

dependencywalker_removegrain_dll.png
RemoveGrain.dll(動的リンク)をDependency Walkerで開いたところ。msvcr71.dllが必要となる。

dependencywalker_removegrain_s_dll.png
RemoveGrainS.dll(静的リンク)をDependency Walkerで開いたところ。msvcr71.dllがなくても動作する。

warpsharp.dllとLoadPluginEx.dllが使えません。

warpsharpパッケージの「使用上の注意」を参照してください。

DustV5プラグインが使えません。

DustV5プラグインは、AviSynth1.0/2.0用のプラグインです。
AviSynth2.5で使用するためには、LoadPluginEx.dllが必要となります。
[プラグインが使えません]を参照。

また、DustV5プラグインに含まれるフィルタ(FaeryDustなど。以下、Dustフィルタ)は、YV12に対応していません*34
これらのフィルタをYV12モードのクリップに対して実行しようとすると、VirtualDubなどのアプリケーションが強制終了してしまいます。
次の例のように、Convertフィルタを使って、Dustフィルタよりも前に色空間を変換してください:

ConvertToYUY2()
FaeryDust(2, "YUY2")
#ConvertToYV12() #YV12に戻す場合

さらに、Dustフィルタは、基本的に、1スクリプト内で1度しか呼び出すことが出来ません。

Dustフィルタを使用すると、画像がおかしくなります。

Dustフィルタを使用する場合、ビデオクリップの幅は16の倍数、高さは8の倍数である必要があります。それ以外の倍数の画像にDustフィルタを使用すると、画像にピンク色の筋などの人工物が入るといった現象が発生するようです。

Dustフィルタの前にCropやリサイズを行う際は、この点に注意してください。また、Dustフィルタの後にCropやリサイズを行えば、この現象は起こりません。

Dustフィルタを使用すると、最終フレームが直前のフレームの画像に置き換わってしまいます。

Dustフィルタを使用すると、最終フレームが、その1つ前のフレームの画像に置き換わることがあります。

そのようなときは、Dustフィルタの前後に、以下のスクリプトを試してみてください。

final_frame = FrameCount()-1
DuplicateFrame(final_frame)
FaeryDust(2) # Dustフィルタ(カッコ内の値は例)
DeleteFrame(final_frame+1)

このスクリプトでは、次のようなことを行っています。

  1. DuplicateFrameで最終フレームをコピーしてクリップの最後に追加。
  2. Dustフィルタを適用
  3. DeleteFrameで追加した冗長なフレームを削除。

この方法により、上記の現象を回避することができます。

AddRangeプラグインが使えません。

vdub_save_option.png

VirtualDub1.5.8/VirtualDubMod1.5.10.1以降の場合、vcfファイルの保存ダイアログ画面左下にあるチェックボックス([Include selection and edit list])を有効にした状態で保存してください。

これにチェックを入れないと、vcfファイルに選択範囲指定の情報が保存されないため、AddRangeプラグインで使うことができなくなります。

AddRange関数を使用する場合も、同じ点に注意してください。

MaskToolsプラグインが使えません。

HT(ハイパー・スレッディング)テクノロジがEnable(有効)である場合に不具合が発生するという報告があります。CPUがPentium 4なら、HTテクノロジをDisable(無効)にしてみてください。*35

また、オートローディング用のプラグインディレクトリを使用している場合に不具合が発生することもあるようです。別のフォルダから、LoadPluginフィルタで読み込んでみてください(「AviUtlやVirtualDubが強制終了します。」参照。)

ffavisynthプラグインが使えません。

ffdshow-20051124.exe以降のffavisynthはCプラグイン、および備考: ffavisynthプラグインのインストール場所について参照。

MPEG2Dec3プラグインが使えなくなりました(AviSynth 2.5.6 以降)

AviSynth 2.5.6 における仕様変更に伴って、一部の古いプラグインがそのままでは使えなくなっています。詳しくは、FAQ/MPEG2Dec3が使えませんを参照。

AviUtl のフィルタプラグインが使えません。

  • AviSynth では、AviUtl に内蔵されているフィルタを使用することはできません。
  • AviUtlフィルタプラグインを利用するを参考に手順を確認してください。
  • いくつかのプラグインはメモリリークが原因で使えないことがあるようです。seraphy 版 warpsharp プラグイン(warpsharpパッケージを参照)に含まれている LoadAviUtlFilterPlugin2 関数では、メモリリーク対策が施されています。LoadAviUtlFilterPlugin の代わりに LoadAviUtlFilterPlugin2 を使用してみてください。
  • AviUtl 0.99a 以降のマルチスレッド機能に対応しているプラグインの場合は、seraphy 版 warpsharp プラグイン(warpsharpパッケージを参照)に含まれている LoadAviUtlFilterPlugin を使用してください。thread パラメータで、AviUtl プラグインがマルチスレッドで動作する際のスレッド数を指定することが可能になっています。

*1 AviSynthAviSynth入門/AVSファイルを開くを参照。
*2 AviSynth 2.5.7 の時点ではまだマルチスレッドに対応していませんが、AviSynth 2.6.0 から AviSynth 本体にマルチスレッド対応機能が取り込まれる予定になっています。
*3 RealMedia Splitter は、DirectShow Filter Tool などを使って登録することができます。
*4 QTReader.vfp
*5 QuickTimeのインストールが必要。
*6 SourceForge.net: Files などから入手可能。参考: FLV Splitterを用いてFLVの再生
*7 FLV Splitter は、DirectShow Filter Tool などを使って登録することができます。
*8 参考: FLV Splitterを用いてFLVの再生
*9 参考: CUDA Zone -- CUDA開発者向けリソースCUDA - Wikipedia
*10 AviSynth 2.5.3以降
*11 AviSynth 2.5.3以降
*12 2006-03-10 現在、アルファ版です。
*13 クロスプラットフォームの画像ライブラリ。Developer's Image Library の略。参考: www.imagelib.org - DevIL - A full featured cross-platform Image Library
*14 この一覧には GIF 形式も含まれていますが、ImageSource では GIF 画像を正常に開けないという声もあります。参考: Input formats for Imagesource - Doom9's Forum
*15 つまり、warpsharpプラグインのように、1つのプラグインにたくさんのフィルタが収録されているものでも、1つのプラグインとしてカウントされることになります。
*16 オートローディング用の拡張子。
*17 2ちゃんねる過去ログを参照。
*18 Colorsを参照
*19 AviSynth 2.5.6a現在。AviSynth 3.0では、スクリプトの拡張が予定されています。
*20 ただしフィルタによっては、省略不可能なパラメータがあるとか、デフォルト値が設定されていないなどの理由で、すべての実引数の省略と丸括弧の省略ができない可能性があります。
*21 インストール時に変更していなければ「C:\Program Files\AviSynth 2.5\plugins」
*22 そのままでは動作しません。レジストリへの登録を手動で行う必要があります。
*23 AviSynth2.5以降のみ。
*24 ただし、VFAPIの仕様により、RGBに変換されます。
*25 AviUtl のフィルタプラグインを AviSynth で利用する場合には、この問題は発生しません。
*26 LoadCPluginを参照。
*27 インストール時に変更していなければ「C:\Program Files\AviSynth 2.5\plugins」
*28 Windows98/Meはsystem、Windows2000/XPはsystem32。
*29 [Help] > [Change log...]から閲覧可能。
*30 AVSファイルとプラグインが同じフォルダにある場合は、パス指定の必要はありません。
*31 参考: IT用語辞典 e-Words : ランタイムとは 【run-time】 ─ 意味・解説
*32 参考: IT用語辞典 e-Words : DLLとは 【Dynamic Link Library】 ─ 意味・解説
*33 参考: ASCII24 - アスキー デジタル用語辞典 - モジュール
*34 対応している色空間は、RGB32/RGB24/YUY2です
*35 現在(2004年11月時点)、作者のManao氏によって、この問題に関する検証作業が行われており、v1.5.5以降のバージョンでは修正される可能性があります。

最終更新日時: 2014-03-12 (水) 23:53:33 (3925d)