AviSource のバックアップソース(No.11)

#code{{
AVISource (string filename [, ...], bool "audio" = true, string "pixel_type" = YV12, [string fourCC])
OpenDMLSource (string filename [, ...], bool "audio" = true, string "pixel_type" = YV12, [string fourCC])
AVIFileSource (string filename [, ...], bool "audio" = true, string "pixel_type" = YV12, [string fourCC])
WAVSource (string filename [, ...])
}}

AVISource は、引用符で囲まれた 1 つ以上のファイル名を実引数として取り、Video-for-Windows の「AVIFile」インターフェイスか AviSynth 組み込みの(VirtualDub から取り入れられた) OpenDML コードを使って、ファイルを読み込みます。このフィルタは、AVIFile ハンドラを持つどんなファイルをも読み込むことができます。これには、AVI ファイルだけでなく、WAV ファイル、AVS (AviSynth スクリプト)ファイルや VDR (VirtualDub フレームサーバー)ファイルも含まれます。実引数として複数のファイル名を指定した場合、それらのクリップは、UnalignedSplice を使って継ぎ合わされる(spliced)でしょう。audio パラメータはオプションで、デフォルトは true です。

AVISource フィルタは、ファイルのタイプを決定するためにそのファイルを調べ、AVIFile ハンドラか OpenDML ハンドラのいずれか適切な方へ渡します。どちらか一方のハンドラでトラブルが生じた場合には、OpenDMLSource フィルタや AVIFileSource フィルタを使用することもできます。これらのフィルタは、いずれか一方のハンドラを強制的に使用します。どちらのハンドラも通常の(2GB 未満の) AVI ファイルについては読み取ることができますが、2GB 以上の AVI ファイルを読み取れるのは OpenDML ハンドラだけで、逆に WAV、VDR や AVS のようなその他のファイルタイプを読み取ることができるのは AVIFile ハンドラだけです。

v2.04 まで、WAVSource は AVIFileSource の別名でした。それ以降のバージョンでは、WAVSource はもうビデオストリームを開こうとはしません。これは、オーディオストリームを取り出したいにもかかわらず、ビデオストリームが破損していたり、圧縮方法があなたのシステムでサポートされていないような場合に役に立ちます。

v2.04 から、ACM (Audio Compression Manager)音声(例えば mp3-AVI)に対して内部サポートしています。また AVISource は、もう WAV ファイルを開くことはできません。WAV ファイルについては、WAVSource を使ってアクセスしなければなりません。

v2.06 から、'''pixel_type''' パラメータ(デフォルト YUY2)を使って、デコーダの出力フォーマットを選択することができます。有効な値は、"YUY2"、"RGB32" と "RGB24" です。省略された場合、AviSynth は、デコーダによってサポートされているフォーマットのうち、(YUY2、RGB32、RGB24 の順番で)最初のフォーマットを使用します。映像が非圧縮フォーマットの場合にはデコーダが使用されないため、このパラメータは何の効果もありません。v2.5 から、'''pixel_type''' パラメータのデフォルトは、YV12 に変更されました。別の言葉に置き換えるなら、'''pixel_type''' パラメータを指定しなかった場合、AVISource フィルタはその AVI を YV12 として出力しようと試み、もしそれが不可能なら YUY2 として、さらにそれも無理なら RGB として出力します。

AviSynth v2.5 で DivX のクリップを読み込むと、(5.02 以前の) DivX のバグにより、色がおかしくなることがあります(色差チャンネルの U と V がスワップされます)。それを訂正するために、SwapUV を使用することができます。

v2.53 から、AVISource は、DV type 1 形式のビデオ入力も開くことができます(映像のみ、音声不可)。

v2.55 から、'''fourCC''' オプションが追加されています。fourCC は、おもに AVI に関連した、メディアファイルの先頭にある 4 文字のコード(FOUR Character Code)のことで、そのファイルをデコードするためにあなたのシステムがどのコーデックを使用するべきかを教えてくれます。このオプションを使うと、AviSource に強制的に別のコーデックを使って AVI ファイルを開かせることができます。FOURCC の一覧表は、[[こちら:http://www.fourcc.org/index.php?http%3A//www.fourcc.org/codecs.php]] にあります。デフォルトでは、その AVI の fourCC が使用されます。

MJPEG コーデックや DV コーデックの中には、AVISource を使った時に、ITU-R BT.601 に適合した正しい出力を返さないものもあります。この問題は、コーデックの入出力のカラーフォーマットが異なる場合に起こります。例えば、入力のカラーフォーマットが YUY2 で出力のカラーフォーマットが RGB である場合や、またその逆の場合などがそうです。これを解決するには、次の 2 つの方法があります:

1) 強制的に出力を入力のカラーフォーマットと同じにする。例えば、以下のように(入力が RGB の場合):

#code{{
AVISource("file.avi", pixel_type="RGB32")
}}

2) [[ColorYUV]] フィルタを使って補正する:

#code{{
AVISource("file.avi").ColorYUV(levels="PC->TV")
}}

関連スレッド:~
[[MJPEG codecs:http://forum.doom9.org/showthread.php?s=&postid=330657]]~
[[DV codecs:http://forum.doom9.org/showthread.php?s=&threadid=58110]]

使用例:

#code{{
AviSource("d:\capture.avi")  # C プログラマのメモ: バックスラッシュ(訳者註: 日本語環境では、円記号(¥)で表示されることが多い。)を二重にしない。
AviSource("c:/capture/00.avi")  # フォワードスラッシュも動作する。
WavSource("f:\soundtrack.wav")  # これは動作する。
WavSource("f:/soundtrack.wav")  # これもそう。
AviSource("cap1.avi", "cap2.avi")  # AviSource("cap1.avi")+AviSource("cap2.avi") と同じ。
AviSource("cap.avi", false, "RGB32")  # 音声を無効化し、RGB32 デコードを要求する。
AviSource("cap.avi", false, fourCC="CDVC")  # Canopus DV コーデックを使って、DV を開く。
AviSource("cap.avi", false, fourCC="XVID")  # AVI (例えば DivX3)を XviD コーデックを使って開く。
}}

いくつかの圧縮フォーマットは、1 つのスクリプトの中で AviSource() を呼び出す回数に制限を課します。50 より少ない AviSource() 文でこの制限を経験した人もいます。[[こちらの議論:http://forum.doom9.org/showthread.php?t=131687]]を参照してください。

''更新履歴''

|v2.55|fourCC オプションを追加。|

#hr

註: このページは、AviSynth 2.5.8 RC1 に同梱されている英語版ヘルプの日本語訳です。原文は、AviSynth をインストールしたフォルダ内の Docs/english/corefilters/avisource.htm にあります。なお、このページのテキストおよび画像のライセンスは、オリジナルのそれに準じます。詳しくは、[[AboutLicense]] を参照してください。