![]() AviSynth ロゴ | |
| 開発者 | AviSynth 開発者、Doom9コミュニティ |
|---|---|
| 初回リリース | 2000年5月19日 |
| 安定版リリース | 2.6.0 (2015年5月31日) [±] |
| プレビューリリース | 2.6.1 Alpha 1 (2016 年 5 月 17 日) [±] |
| リポジトリ |
|
| 書かれた | C++、アセンブリ |
| オペレーティング·システム | Windows、Linux、macOS |
| プラットフォーム | x86およびx86-64 |
| タイプ | デジタルビデオ フレームサーバー |
| ライセンス | GNU GPL |
| Webサイト | 翻訳元 |
AviSynthは、Microsoft Windows、Linux、macOS用のフレームサーバープログラムです。当初は2000年5月にBen Rudiak-Gould、Edwin van Eggelen、Klaus Post、Richard Berg、Ian Brabhamによって開発され[1] 、その後、現在も活発に活動しているオープンソースコミュニティによって取り上げられ、保守されています。これは、GNU General Public Licenseに基づいてライセンスされたフリーソフトウェアです。
スクリプトビデオエディタ
AviSynthは、スクリプトによって完全に制御される非線形ビデオエディタとして機能します(GUIなし)。[2] VFWダウンストリームアプリケーション(通常はメディアプレーヤー、ビデオ編集ソフトウェア、またはエンコーダ)から見たAVIビデオファイル(またはWAVオーディオファイル)をエミュレートします。[3]
AviSynth は、 DirectShow フィルタによく似たフィルタをベースに構築されていますが、バイナリ インターフェイスが異なります。フィルタ機能には、クロッピング、デインターレース、逆テレシネ、静止画像の操作、基本的なカラー グレーディング、ビデオ ノイズの削減など、さまざまな機能があります。AviSynth は、セグメントのカット、トリミング、再シーケンスなどの従来のビデオ編集タスクも実行します。
たとえば、スクリプト「myAvi.avs」(拡張子「avs」で保存された単なるプレーンテキストファイル)を考えてみましょう。
AviSource("myAvi.avi")
切り抜き(0, 0, 320, 240)
ぼかし(0.1)
このスクリプト ファイルは、ほとんどのメディア プレーヤー ( Windows Media Playerなど) で開くことができます。プログラムは、左上 320 x 240 ピクセルに切り取られ、わずかにぼかされたビデオ ファイル "myAvi.avi" を再生します。操作は順番に実行されるため、最初に切り取りが行われ、次にぼかしが行われます。
技術的には、AviSynthはフィルタグラフ(Microsoft GraphEditに似ていますが、機能が追加)を構築し、[4] AviSynthスクリプト言語で書かれたスクリプトによって制御されます 。その機能は、プラグインと呼ばれるサードパーティのフィルタを使用することで拡張できます。外部プラグインのリストは、AviSynthフィルタコレクションで管理されています。
AviSynth はフレームサーバーです。呼び出しプログラムはオーディオ/ビデオ フレームを要求し、スクリプトがそれを提供します。呼び出しプログラムは任意の順序でフレームを呼び出すことができ、物理ファイルの場合と同様に一時停止、前後へのジャンプなどが可能です。
AviSynth スクリプト言語
スクリプト言語はデータフロー言語です。[4]操作間を流れるデータの有向グラフを記述するプログラミングパラダイムです。手続き型プログラミングの制御構造が欠けていますが、[5]変数、異なるデータ型、条件文、複雑な式など、プログラマーに馴染みのある多くの機能が含まれています。
この言語は、主にオーディオ/ビデオクリップを組み込みデータ型として扱います。クリップは、幅、高さ、継続時間などの多くの属性を持つ複雑な構造です。[6]この言語には、他にもint、float、bool、stringなどの標準的なデータ型がいくつかあります。[7]これらを使用して、計算や決定を行ったり、ビデオに 字幕などのテキストを書き込んだりすることができます。
スクリプトには、スクリプトを実行するプログラムが「見た」オーディオとビデオである単一の戻り値があります。これは通常、スクリプトの最後の行ですが、任意の時点でreturn ステートメントを挿入できます。
"こんにちは世界"
この例は「Hello World」プログラムです。
空白クリップ()
サブタイトル("Hello, world!")
上記のテキストを .avs 拡張子のテキスト ファイルに入力すると、Windows Media Playerまたは以下のリストにある他のプログラムで開くことができ、"Hello, world!" という単語を含むビデオが表示されます。
BlankClip関数は新しいビデオを作成します。引数が渡されないため、単語の末尾の括弧はオプションですが、この場合は関数であり変数ではないことを示すために指定されています。
字幕機能は、以前に作成した空白のビデオの上に「Hello, world!」という文字を描画します。
どちらの関数もさらに多くの引数(たとえば、空のビデオのサイズと長さの制御、字幕の位置、フォント、色の制御)を受け入れますが、この例ではそれらを省略し、関数は組み込みのデフォルト引数を使用します。
Avisynth は、単純なスクリプトをはるかに簡単に記述できるようにする構文糖を使用します。それは、 Lastと呼ばれる暗黙の変数です。暗黙の変数がなければ、上記のスクリプトは次のように記述する必要があります。
最後 = BlankClip()
Last = Last.Subtitle("Hello, world!")
戻る 最後
または次のようになります:
A = 空白クリップ()
B = A.Subtitle("こんにちは、世界!")
Bを返す
明示的なクリップ変数は通常、複数のクリップが関係する関数にのみ使用されます。
A = 空白クリップ()
B = A.Subtitle("こんにちは、世界!")
return Dissolve(A, B, 30) # 30フレームのクロスフェード
ビデオ処理
この例では、実際のビデオを取得し、いくつかの簡単な処理を適用して、出力に返します。
AviSource("C:\Example.avi")
2倍に減らす()
グレースケール()
AviSource関数は、実際の場所から AVI ビデオを読み込むために使用されます。他のメディア タイプを開くには、代わりにDirectShowSource関数を使用できます。ReduceBy2はビデオの垂直サイズと水平サイズを半分に分割し、GreyScale はすべての色情報を削除します。
AviSynthフィルターは多くのRGBおよびYUV カラースペースで動作し、あらゆる種類のビデオ入力と出力を可能にします。[8]一部の機能は特定のカラースペースでのみ動作し、変換が必要です。たとえば、ほとんどのビデオはYUVカラースペースで配信されますが、ほとんどの色補正はRGBスペースの1つで行われます。色補正スクリプトは次のようになります。
DirectShowSource("movie.mp4") # YV12 カラー スペース
RGB32 に変換
RGBAdjust(1.0, 0.95, 1.0) # 緑チャンネルを減らす
YV12 に変換
ユーザー定義
AviSynth スクリプト言語を使用すると、ユーザーは独自の関数を定義できます。
これは、インターレース ラインを損傷することなく、あるクリップから別のクリップにディゾルブできる機能の例です。
クリップ1 = AVISource("video1.avi")
Clip2 = AVISource("video2.avi")
# 以下に定義されているユーザー定義関数を呼び出します。
インターレースディゾルブ(クリップ1、クリップ2、30)
# ...スクリプトは上記の結果を呼び出しプログラムに返します
# ユーザー定義関数:
# クリップ1からクリップ2まで30フレームかけてディゾルブする
関数 interlaced_dissolve(クリップ clip1, クリップ clip2, int iter) {
クリップ1 = クリップ1.SeparateFields
evn1 = clip1.SelectEven
odd1 = clip1.SelectOdd
クリップ2 = クリップ2.SeparateFields
evn2 = clip2.SelectEven
odd2 = clip2.SelectOdd
evn = ディゾルブ(evn1, evn2, iter)
奇数 = 溶解(奇数1, 奇数2, 反復)
インターリーブ(偶数、奇数)。Weave.DoubleWeave.SelectOdd
# ...関数は上記の結果をメインスクリプトに返します
}
AviSynth 3.0 および AviSynth+
AviSynth 3.0 はAviSynth 2.x を完全に書き直したもので、AviSynth 2.x の制限を克服することを目的としていました。抽象化されたカラー スペースモデルなどの改良が追加され、新しいカラー スペース (45 ビット深度の 2 つを含む) をプラグイン メカニズムでサポートできるようになり、キャッシュ管理が改善されてパフォーマンスが向上し、現在のバージョンで使用されている自社開発言語ではなくRubyが使用されるようになりました。[9]
AviSynth 3.0はWindows以外のオペレーティングシステムでも利用可能になる予定でしたが、代わりにGStreamerに依存し、 Linux、Mac OS X、BSDなどのプラットフォームにサポートを拡張しました。開発は2007年8月から停滞しています。[9] [10]
AviSynth+は公式のAviSynth 2.xxのフォークであり、64ビットサポート、マルチスレッド、ディープカラースペース、最近のコンパイラのサポート、新しいスクリプト構造(ループなどの新しい制御フロー構造)、多くの領域でのパフォーマンスの向上など、長い間求められていた機能を導入しています。[11]同時に、フィルターとホストアプリケーションの両方で、AviSynth 2.5 / 2.6シリーズとの100%の互換性を維持しています。執筆時点(2023-06)では、積極的にメンテナンスも行われています。
Windows 以外のオペレーティング システム用の AviSynth
AviSynth 2.xx は、 Wineを使用することで Windows 以外のオペレーティングシステムでも使用できます。スクリプトを操作するには、 Windows の場合と同様にVirtualDub / VirtualDubMod を使用できます。Wine 上の AviSynth とLinux ホスト上で実行されているFFmpegなどとの間のインターフェイスとして、Avs2YUV を使用できます。Avs2YUV は、Wine 上で実行されるWindowsコマンドラインプログラムであり、AviSynth スクリプトの出力をstdoutにレンダリングし、それを FFmpeg にパイプします。Avs2YUV は名前付きパイプへの書き込みもサポートしています。[12]
AviSynthのLinux移植版としてAvxSynthがある。[13]
AviSynth互換プログラム
さらに、 AviSynth スクリプトのみを入力として受け入れるプログラムもいくつか作成されており、プログラム自体は簡素化されていますが、ユーザーは入力に AviSynth のフルパワーを活用できます。
また、AviSynth をコマンドラインのオーディオおよびビデオ エンコーダーやマルチプレクサーと連携させて、オールインワンでモジュール式のカスタマイズ可能なビデオ エンコーディング アプリケーションを提供するバッチ エンコーディング アプリケーションもいくつかあります。MeGUI は、この種のアプリケーションの一例です。
AviSynth スクリプトは、単純なテキスト編集プログラムで簡単に開くことができるように設計されていますが、AvsPMod など、AviSynth スクリプトの編集に特化したエディターもいくつかあります。
参照
参考文献
- ^ 「Avisynth Copyright」。AviSynth Mediawiki。AviSynthチーム。2015年9 月 11 日閲覧。
- ^ "メイン ページ - Avisynth". AviSynth メディアウィキ。 AviSynth チーム。2013 年4 月 10 日に取得。
- ^ 「AviSynth についての詳細 - Avisynth」。AviSynth Wiki。AviSynthチーム。2013 年4 月 10 日閲覧。
- ^ ab 「スクリプト実行モデル: フィルターグラフ」。AviSynth Wiki。AviSynthチーム。2019 年10 月 25 日閲覧。
- ^ 「AviSynth 構文: 制御構造」。AviSynth Wiki。Avisynthチーム。2014 年9 月 21 日閲覧。
- ^ 「クリッププロパティ」。AviSynth Wiki。Avisynthチーム。2019 年10 月 27 日閲覧。
- ^ 「スクリプト変数」 。AviSynth Wiki。Avisynthチーム。2017年9 月 14 日閲覧。
- ^ 「Convert - Avisynth」 。AviSynth Wiki。AviSynthチーム。2019年10 月 27 日閲覧。
- ^ ab 「Avisynth 3 - 終了したプロジェクト?」Doom9 フォーラム2009 年 6 月 17 日閲覧。
- ^ 「AviSynth v3」. AviSynth メディアウィキ。2019 年9 月 22 日に取得。
- ^ 「AviSynth+」。AviSynth Mediawiki 。 2019年9月22日閲覧。
- ^ 「Avs2YUV」。Akuvian.org 。 2011年1月9日閲覧。
- ^ 「avxsynth/avxsynth: Avisynth の Linux ポート」。GitHub。2017年9 月 16 日閲覧。
- ^ 「SourceForge.net: VirtualDubMod: Bugs」 。 2009年12月3日閲覧。
外部リンク
- AviSynthホームページ: (英語) (日本語)
- AviSynth フィルターコレクション
- Doom9 の AviSynth フォーラム
- AviSynth 3.0 開発ホームページ

