アビシンセ

アビシンセ
開発者AviSynth開発者、Doom9コミュニティ
初回リリース2000年5月19日; 25年前 (2000年5月19日
安定版リリース2.6.0 (2015年5月31日; 10年前) [±] (2015年5月31日
プレビューリリース2.6.1 アルファ 1 (2016年5月17日; 9年前) [±] ( 2016-05-17 )
リポジトリ
  • sourceforge.net/projects/avisynth2/files/AviSynth%202.6/AviSynth%202.6.0/
書かれたC++アセンブリ
オペレーティング·システムWindowsLinuxmacOS
プラットフォームx86およびx86-64
タイプデジタルビデオ フレームサーバー
ライセンスGNU GPL
Webサイトwww.avisynth.nl

AviSynthは、 Microsoft WindowsLinuxmacOS用のフレームサーバープログラムです。2000年5月にBen Rudiak-Gould、Edwin van Eggelen、Klaus Post、Richard Berg、Ian Brabhamによって開発されました[1]。その後、オープンソースコミュニティによって引き継がれ、現在も活発に活動しています。GNU General Public Licenseに基づくフリーソフトウェアです。

スクリプトビデオエディター

AviSynthは、スクリプトGUIなし)で完全に制御される非線形ビデオエディタとして機能します[2] AviSynthは、 VFWダウンストリームアプリケーション(通常はメディアプレーヤービデオ編集ソフトウェア、またはエンコーダ)で表示されるAVIビデオファイル(またはWAVオーディオファイル)をエミュレートします[3]

AviSynthは、 DirectShowフィルタによく似たフィルタをベースに構築されていますが、バイナリインターフェースが異なります。フィルタ機能には、クロッピングデインターレース逆テレシネ、静止処理、基本的なカラーグレーディング、ビデオノイズ低減など、様々な機能が含まれます。また、AviSynthは、セグメントのカット、トリミング、再シーケンスといった 従来のビデオ編集タスクも実行できます。

例えば、スクリプト「myAvi.avs」(拡張子「avs」で保存された単なるテキストファイル)を考えてみましょう。

AviSource("myAvi.avi") クロップ(0, 0, 320, 240) ぼかし(0.1)

このスクリプトファイルは、ほとんどのメディアプレーヤー( Windows Media Playerなど)で開くことができます。プログラムは、動画ファイル「myAvi.avi」を左上320ピクセル×240ピクセルにトリミングし、わずかにぼかしを加えた状態で再生します。処理は順番に実行されるため、最初にトリミングが行われ、次にぼかしが行われます。

技術的には、AviSynthはフィルタグラフMicrosoft GraphEditに似た機能を持つが、より高度な機能を持つ)を構築し、[4] AviSynthスクリプト言語で記述されたスクリプトによって制御されます 。その機能は、プラグインと呼ばれるサードパーティ製フィルタを使用することで拡張できます。外部プラグインのリストは、AviSynthフィルタコレクションで管理されています。

AviSynthはフレームサーバーです。呼び出し側プログラムがオーディオ/ビデオフレームを要求し、スクリプトがそれを提供します。呼び出し側プログラムは任意の順序でフレームを呼び出すことができ、物理ファイルと同様に、一時停止、早送り、巻き戻しなどの操作が可能です。

AviSynthスクリプト言語

スクリプト言語はデータフロー言語[4]です。データフロー言語とは、操作間を流れるデータの有向グラフを記述するプログラミングパラダイムです​​続き型プログラミングの制御構造[5]は一部欠けていますが、変数、異なるデータ型、条件文、複雑ななど、プログラマに馴染みのある多くの機能を備えています

この言語は、主にオーディオ/ビデオクリップを組み込みデータ型として扱います。クリップは、幅、高さ、継続時間など多くの属性を持つ複雑な構造です。[6]この言語には、 intfloatboolstringといった、より標準的なデータ型もいくつかあります。[ 7]これらのデータ型は、計算や判定を行ったり、ビデオに字幕などのテキストを書き込んだりするのに使用できます。

このスクリプトには戻り値が1つあります。これは、スクリプトを実行しているプログラムが「認識した」音声と動画です。これは通常、スクリプトの最後の行になりますが、任意の場所に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カラースペースのいずれかで行われます。色補正スクリプトは次のようになります。

DirectShowSource("movie.mp4") # YV12 カラースペース RGB32に変換 RGBAdjust(1.0, 0.95, 1.0) # 緑チャンネルを減らす YV12に変換

ユーザー定義

AviSynth スクリプト言語を使用すると、ユーザーは独自の関数を定義できます。

これは、インターレース ラインを損傷することなく、あるクリップから別のクリップにディゾルブできる機能の例です。

 クリップ1 = AVISource("video1.avi") Clip2 = AVISource("video2.avi")  # 以下に定義されたユーザー定義関数を呼び出します。 interlaced_dissolve(クリップ1, クリップ2, 30)  # ...スクリプトは上記の結果を呼び出しプログラムに返します   # ユーザー定義関数: # クリップ1からクリップ2まで30フレームかけてディゾルブする 関数 interlaced_dissolve(クリップ クリップ1、クリップ クリップ2、int iter) { clip1 = clip1.SeparateFields evn1 = clip1.SelectEven odd1 = clip1.SelectOdd  clip2 = clip2.SeparateFields evn2 = clip2.SelectEven odd2 = clip2.SelectOdd  evn = ディゾルブ(evn1, evn2, iter) 奇数 = Dissolve(奇数1, 奇数2, iter) インターリーブ(偶数、奇数).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を採用し、 LinuxMac OS XBSDなどのプラットフォームにもサポートを拡張しました。しかし、開発は2007年8月以降停滞しています。[9] [10]

AviSynth+は公式AviSynth 2.xxのフォークであり、64ビットサポートマルチスレッドディープカラースペース、最新コンパイラのサポート、新しいスクリプト構造(ループなどの新しい制御フロー構造)、多くの分野でのパフォーマンス向上など、長年求められてきた機能を導入しています。[11]同時に、フィルターとホストアプリケーションの両方において、AviSynth 2.5/2.6シリーズとの100%の互換性を維持しています。執筆時点(2023年6月)では、積極的にメンテナンスされています。

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互換プログラム

プログラム名ライセンスコメントホームページ
アドビプレミアプロ独自仕様、商用バージョン 6.0 以降 (CS4 まで) では、AviSynth インポート プラグインが利用できます。Premiere AviSynth インポート プラグイン
アヴァンティGUIプロプライエタリ、フリーウェアAvanti GUI は、AviSynth をプリプロセッサとして挿入するオプションを備えたFFmpegの無料フロントエンドです。アヴァンティGUI
AvsPmodGPLAvsPmod は、組み込みプレーヤー、構文の強調表示、コード自動補完機能を備えた AviSynth スクリプト エディターです。AvsPmod
シネマクラフトエンコーダ独自のCinema Craft Encoder は、AviSynth 入力をサポートする商用 MPEG-2 エンコーダです。シネマクラフト
FFmpegLGPL2.1+、GPL2+Windows用にコンパイルされたFFmpegはAviSynth入力を受け取ることができる説明書
GOMプレーヤー独自仕様、フリーウェア、広告付き.avsファイルを再生できます
メディアプレーヤークラシックGPLMedia Player ClassicはAviSynthスクリプトの読み込みと再生が可能です。32ビット版が必要です。メディアプレーヤークラシック
Microsoft 式エンコーダー独自仕様、フリーミアムMicrosoft Expression Encoder は .avs ファイルをインポートおよびトランスコードできます。
MPlayerGPLMPlayerは.avsファイルを再生できます
Nero マルチメディアスイート独自仕様、商用Nero Showtimeは.avsファイルを再生できます
素晴らしい独自仕様、フリーウェア、広告付きSUPER (Simplified Universal Player, Encoder and Renderer) は、 eRightSoft のフリーウェアで、最も一般的なビデオ形式をエンコードでき、AviSynth を完全にサポートしています。素晴らしい
TMPGEncシェアウェア/フリーウェアTMPGEncは、無料のMPEG-1およびMPEG-2エンコーダです。TMPGEnc PlusとTMPGEnc Expressは、TMPGEncの商用版で、機能が強化されているほか、TMPGEncに搭載されているMPEG-2エンコードの30日間制限が解除されています。株式会社ペガシス
トータルビデオコンバーター独自の試用版Total ビデオ コンバーターには、AviSynth インポート プラグインが用意されています。トータルビデオコンバーター
バーチャルダブGPLVirtualDubは、広く使用されている多目的ビデオコンバーターです。バーチャルダブ
バーチャルダブモッドGPLVirtualDubModには、AviSynthスクリプトの明示的なサポート、AviSynthスクリプトエディタなど、AviSynth固有の機能がいくつか含まれています。しかし、2006年以降更新されておらず、多くのバグが含まれています。[14]バーチャルダブモッド
ウィンドウズメディアプレーヤー独自仕様、Windows のコンポーネント / フリーウェアWindows Media PlayerはAviSynthスクリプトの読み込みと再生が可能なため、簡単な再生やテストには最適です。動作させるにはレジストリの調整が必要になる場合があります。Windows Media ホーム

さらに、入力として AviSynth スクリプトのみを受け入れるプログラムもいくつか作成されました。これにより、プログラム自体は簡素化されますが、ユーザーは入力として AviSynth のフルパワーを利用できるようになります。

AviSynthとコマンドラインのオーディオ・ビデオエンコーダーやマルチプレクサーを連携させ、オールインワンでモジュール化されたカスタマイズ可能なビデオエンコードアプリケーションを提供するバッチエンコードアプリケーションもいくつかあります。MeGUIはこの種のアプリケーションの一例です。

AviSynth スクリプトは、シンプルなテキスト編集プログラムで簡単に開くことができるように設計されていますが、AvsPMod など、AviSynth スクリプトを編集するために特別に設計されたエディターもいくつかあります。

参照

参考文献

  1. ^ 「Avisynth著作権」AviSynth Mediawiki . AviSynthチーム. 2015年9月11日閲覧
  2. ^ "メイン ページ - Avisynth". AviSynth メディアウィキ。 AviSynth チーム2013 年4 月 10 日に取得
  3. ^ 「AviSynthについてもっと詳しく - Avisynth」AviSynth Wiki . AviSynthチーム. 2013年4月10日閲覧
  4. ^ ab 「スクリプト実行モデル:フィルタグラフ」AviSynth Wiki . AviSynthチーム. 2019年10月25日閲覧
  5. ^ 「AviSynth構文:制御構造」AviSynth Wiki . Avisynthチーム. 2014年9月21日閲覧
  6. ^ 「クリッププロパティ」。AviSynth Wiki . Avisynthチーム. 2019年10月27日閲覧
  7. ^ 「スクリプト変数」。AviSynth Wiki。Avisynthチーム。 2017年9月14日閲覧
  8. ^ 「Convert - Avisynth」。AviSynth Wiki。AviSynthチーム。 2019年10月27日閲覧
  9. ^ ab 「Avisynth 3 - 終了したプロジェクト?」Doom9フォーラム。 2009年6月17日閲覧
  10. ^ 「AviSynth v3」。AviSynth メディアウィキ2019 年9 月 22 日に取得
  11. ^ “AviSynth+”. AviSynth Mediawiki . 2019年9月22日閲覧
  12. ^ “Avs2YUV”. Akuvian.org . 2011年1月9日閲覧。
  13. ^ "avxsynth/avxsynth: Linux Port of Avisynth". GitHub . 2017年9月16日閲覧
  14. ^ 「SourceForge.net: VirtualDubMod: Bugs」. 2009年12月3日閲覧。
  • AviSynthホームページ: (英語) (日本語)
  • AviSynth フィルターコレクション
  • Doom9のAviSynthフォーラム
  • AviSynth 3.0 開発ホームページ
「https://en.wikipedia.org/w/index.php?title=AviSynth&oldid=1307539792」より取得