お知らせ: にーやんのブログ 2 に移転しました。こちらのブログは、2009 年末までに削除します。

スポンサード リンク

AvsP のフィルタデータベースをサクラエディタのキーワード定義ファイルに変換してみた

2ちゃんねるの AviSynth スレッドでエディタの話題が出てましたが、サクラエディタを使っている人も何人かいらっしゃるんですね。それじゃあと、久しぶりにサクラエディタ用 AviSynth キーワード定義ファイルを更新しようと思ったものの、かなり手間がかかりそう・・・。そこで違う方法を考えることにしました。

パッと思いついたのが AvsP のフィルタデータベース(filterdb.dat)。実際にはテキストデータなので、これを加工すればサクッとキーワード定義ファイルが作れるのではないかと・・・。

・・・で、小一時間かけて、とりあえず変換用のスクリプト(Python を使用)は出来ました。ただ、実際に変換してみると、初期状態の filterdb.dat は、内蔵フィルタでもちらほら抜けているものがあることに気づきました。KillAudio() とか Version() とかも抜けてました。外部プラグインにいたっては、ほんの一部しか登録されていません。

一応、下に今回作ったものを置いておきますが、以前のバージョンから差し替えるメリットはたぶんありません。AvsP の次バージョン以降でフィルタデータベースが拡充されるのを待ってから、あらためて作り直したいと考えています。もしくは、誰か(もしくは私?)がフィルタデータベースに手を入れるか・・・。

ダウンロード

サクラエディタ用 AviSynth キーワード定義ファイル 2007-11-16 暫定版

注意

コマンドラインから AVI-Mux GUI を操作する(2): バッチ編

コマンドラインから AVI-Mux GUI を操作する(1): 基本編」では、あらかじめ AVI-Mux GUI 用のスクリプトファイルを用意して、これをコマンドラインから実行する方法を紹介しました。今回は、これらの一連の操作を行うバッチファイルのサンプルを作ってみました。

このサンプルでは、以下の内容の処理を行います:

  1. 入出力ファイルの設定をキーボードから行う。
  2. 1 の内容をもとに AVI-Mux GUI 用のスクリプト(amg ファイル)を出力する。
  3. 2 で出力した amg ファイルを AVI-Mux GUI で実行する。

詳しい使用手順については、下記の「バッチファイルのサンプルの使い方」を参照してください。

バッチファイルのサンプルダウンロード

AVI-Mux GUI 用バッチファイルのサンプル

バッチファイルのサンプルの使い方

実行する前に、メモ帳でバッチファイルを開いて、初期設定を行っておきます。

  1. バッチファイルをダブルクリックして開始。
  2. 入力ビデオファイル(AVI)の指定を求めるメッセージが表示されるので、バッチのウィンドウ上にファイルをドラッグ&ドロップして、Enter キーを入力する。
  3. 入力音声ファイル(MP3)の指定を求めるメッセージが表示されるので、2 と同様の手順で指定する。
  4. 3 で指定した MP3 ファイルがエンコードされた方式(CBR/VBR)を数字で指定(CBR なら 0、VBR なら 1)して、Enter キーを入力する。
  5. 出力ファイル名を尋ねられますので、キーボードで直接ファイル名を入力します。パス指定は不要です(初期設定で指定したフォルダに出力されます)。
  6. Enter キーを入力すると、AVIMux_GUI.exe が起動して、処理が開始されます。
  7. 最後に何かキーを押すと、ウィンドウが閉じます。

注意

  • あくまでも AVI-Mux GUI 用のバッチファイルのサンプルです。実用目的ではなく、バッチファイルの作例として作成したものです。
  • 一応、エラーなく Mux が実行できることと、出来上がった AVI ファイルが再生できることは確認しましたが、スクリプトの設定が正しいかどうか、意図した通りのファイルが作成できているかどうかの保証はありません。

補足

入出力ファイルの設定をバッチファイルの中で行う

上のサンプルでは、キーボードから入出力ファイルのパスを指定するようになっています。しかし、実際にエンコード時の一連の処理の中で使用するには、キーボードからではなく、バッチファイルの中で入出力ファイルのパスを指定できたほうが便利でしょう。

これを行うためには、「rem #--- 初期設定 ここから ---#」から「rem #--- 入出力先設定 ここまで ---#」までの部分を変更します。例えば、ドラッグ&ドロップした AVI ファイルを入力ビデオファイルに、同名の MP3 ファイルを入力音声ファイルにしたい場合は、以下のように変更します。出力ファイル名は、入力ビデオファイルの名前+ _output.avi にしています。

rem #--- 初期設定 ここから ---#
rem ### amgファイル ###
set amg_file="C:\bar\myscript.amg"
rem ### 入力 AVI ファイル ###
set video_file=%~1
rem ### 入力 MP3 ファイル ###
set audio_file=%~dpn1.mp3
rem ### 出力 AVI ファイル ###
set output_file=%~dpn1_output.avi
rem #--- 入出力先設定 ここまで ---#
amg ファイルの出力部分の説明
rem ### 空の amg ファイルを出力 ###
type nul> %amg_file%

「>」でリダイレクトして、上で設定した amg_file のパスに空のスクリプトファイルを生成します。

次にAVI-Mux GUIのスクリプトを空の amg ファイルに追記していきます。

echo AVI-Mux GUIのスクリプト>> %amg_file%

基本的には、このように echo 文とリダイレクト(ここでは > ではなく >>)を組み合わせるだけです。ただし、上で設定した入出力ファイル名は % で囲んだ変数にし、0 と 1 は ^ を付けて他の文字列に置き換えられないように(0 や 1 という文字そのものとして扱われるように)します。さもないと、うまく動作しない可能性があります。

パスの二重引用符を取り除く

AVI-Mux GUI のスクリプトで入出力ファイルを指定するときは、パスを二重引用符で囲んではいけません。さもないと、エラーが発生します(前回の記事を参照)。

文字列から二重引用符を取り除く方法については、《コマンドライン活用術 No.2》 auoencを手軽に... - kiraruノートの《切れ端》 - 楽天ブログ(Blog)を参考にしました。コマンドプロンプトの set のヘルプにも記載されています(コマンドプロンプト上で set /? と入力すれば見ることができます)。

関連記事

コマンドラインから AVI-Mux GUI を操作する(1): 基本編

AVI-Mux GUI は、その名前のとおり、AVI ファイルの Mux (合成、多重化)を GUI を使って行うソフトウェアです。しかしながら、Avi-Mux GUI はスクリプトファイルにも対応しているため、コマンドラインから操作することも可能です。そこで今回は、AVI-Mux GUI で使える簡単なスクリプトファイルの作成方法を紹介したいと思います。

なお、AVI-Mux GUI で利用できるスクリプトの詳細は、AVI-Mux GUI - scripting language(英語)で説明されています。また、AVI-Mux GUI にもいくつかのサンプルが同梱されています。詳しくは、それらを参照してください。

スクリプトファイルの作り方

まず、スクリプトファイルを用意します。下のサンプルは、エンコード用バッチファイルのサンプルをベースに作成したものです。AVI ファイルと VBR 方式でエンコードされた MP3 ファイルを、Open-DML 形式の AVI ファイルに多重化(Mux)します。

CLEAR
LOAD C:\bar\input.avi
SELECT FILE 1
ADD VIDEOSOURCE
LOAD C:\bar\input.mp3
SET INPUT OPTIONS
WITH SET OPTION
AVI FORCE MP3VBR 1
MP3 VERIFY CBR NEVER
MP3 VERIFY RESDLG OFF
END WITH
SET OUTPUT OPTIONS
WITH SET OPTION
OVERWRITEDLG 0
CLOSEAPP 1
DONEDLG 0
OPENDML 1
LEGACY 0
AUDIO INTERLEAVE 1 FR
PRELOAD 500
RECLISTS 0
AVI ADDJUNKBEFOREHEADERS 0
END WITH
START C:\bar\output.avi

これをメモ帳で保存します。AVI-Mux GUI 用のスクリプトファイルや設定ファイルでは amg という拡張子が使われます。おそらく AVI-Mux GUI の頭文字を取ったものだと思われます。他のファイルと区別するために "C:\bar\myscript.amg" のように amg という拡張子を持つファイル名で保存するといいかもしれません(他の拡張子でも動作すると思います)。

ただし、amg という拡張子は初期状態で Windows に登録されていないため、メモ帳でそのまま保存すると .amg.txt という名前で保存されます。保存するときにファイルの種類を「すべてのファイル」にしてから保存するか、保存後に拡張子を変更してください。

サンプルの解説

以下、簡単にサンプルスクリプトの内容を解説します。

CLEAR

AVI-Mux GUI のリストボックスから読み込まれているすべてのファイルをクリアします。

LOAD C:\bar\input.avi
SELECT FILE 1
ADD VIDEOSOURCE

順に、C:\bar\input.avi を読み込み、1 番目のファイル(C:\bar\input.avi のこと)を選択し、ビデオソースとして追加します。入出力ファイルのパスはすべて例ですので、使用したいファイル名に置き換えてください。その際、ファイル名を二重引用符で囲まないようにしてください。ファイルが正しく検出されず、AVI-Mux GUI がエラーで強制終了します。

LOAD C:\bar\input.mp3

C:\bar\input.mp3 を読み込みます。AVI-Mux GUI - scripting language の「Example 1」ではビデオファイルと一緒に音声ファイルも読み込んでいますが、それだとうまく行かなかったのでこの位置にしています。

SET INPUT OPTIONS

ここから入力設定です。

WITH SET OPTION
 .
 .
 .
END WITH

この間に書かれた行は、「SET OPTION」を省略して記述することができます(その先頭に「SET OPTION」が追加されます)。例えば、次の行の「AVI FORCE MP3VBR 1」は、実際には「SET OPTION AVI FORCE MP3VBR 1」と書かれているのと同じ扱いになります。

AVI FORCE MP3VBR 1

「SET OPTION AVI FORCE MP3VBR 1」にすると、MP3 ファイルがビデオソースに追加される際に常に VBR であるとみなされます。CBR なら「SET OPTION AVI FORCE MP3VBR 0」にします。

MP3 VERIFY CBR NEVER
MP3 VERIFY RESDLG OFF

「SET OPTION MP3 VERIFY CBR」は、CBR とみられる MP3 ファイルを読み込んだときの AVI-Mux GUI の挙動を「常に検証する(ALWAYS)」、「決して検証しない(NEVER)」、「その都度尋ねる(ASK)」のいずれかに設定します。ここでは VBR でエンコードされた MP3 をソースとして使用しているため、「NEVER」にしています。CBR なら「ALWAYS」がいいようです。コマンドラインから使用する場合は「ASK」にしないほうがいいようです。というのも、ユーザーの入力を待たずにプロセスが進行してしまい、エラーが出ることがあるからです。

SET OUTPUT OPTIONS

ここから出力設定です。

OVERWRITEDLG 0
CLOSEAPP 1
DONEDLG 0

順に、上書き確認ダイアログを非表示(0)、Mux 後に AVI-Mux GUI を閉じる(1)、完了ダイアログを非表示(0)。

OPENDML 1
LEGACY 0

OpenDML 形式で出力する(1)、AVI1.0 で使われるレガシーインデックスを使用しない(0)。レガシーインデックスについては、AVIファイルフォーマットAVI-Mux GUI - Definitions を参照。

AUDIO INTERLEAVE 1 FR
PRELOAD 500

インターリーブを 1 フレーム(1 FR)、プリロードを 500 ミリ秒に設定。これは VirtualDub のデフォルト設定と同じにしてあります。AVI-Mux GUI 1.17.7 のデフォルトは、インターリーブが 100 KB、プリロードは 200 です。

RECLISTS 0

AVI-Mux GUI 1.17.7 のデフォルトは、RECLISTS 1 です。rec リストについては、AVIファイルフォーマットAVI-Mux GUI - Definitions を参照。

AVI ADDJUNKBEFOREHEADERS 0

この設定を有効化(つまり 1 に設定)すると、出力される AVI ファイルは最初のヘッダの前に 8 バイトのジャンク(ごみ)が追加されます。ただし、AVI-Mux GUIの使い方によると、これを有効にして多重化すると、Windows Media Player で再生できなくなるそうです。

AVI-Mux GUIの使い方
Windows Media Playerで再生するのであれば、add JUNK before MainAVIHeaderのチェックを外しておかなければなりません。これにチェックを付けたままAVI-Mux GUIで出力したAVIファイルは、Windows Media Playerでは再生できなくなってしまいます。

START C:\bar\output.avi

C:\bar\output.avi という出力ファイル名を使って、多重化処理を開始します。

コマンドラインからスクリプトファイルを開く

C:\foo\AVI-Mux_GUI\AVIMux_GUI.exe C:\bar\myscript.amg

このようにコマンドラインオプションとしてスクリプトファイルを渡します。ファイルが半角スペースを含むパスにある場合は、二重引用符で囲みます。AVI-Mux GUI は amg ファイルを開いて、そこに書かれている処理を実行してくれます。

なお、コマンドプロンプトは、スタートメニュー -> すべてのプログラム -> アクセサリ -> コマンド プロンプトから起動することができます(Windows XP の場合)。

注意

  • コマンドを実行すると、AVIMux_GUI.exe と同じフォルダにある config.ini.amg (設定ファイル)が書き換えられます。
  • v1.17.7 でテストしました。

コマンドラインから AVI-Mux GUI を操作する(2): バッチ編につづく)

関連記事

AviSynth スクリプト(AVS)複製バッチファイル

概要

  • にーやんの動画作成支援バッチファイルの 1 つです。
  • AviSynth スクリプト(AVS)ファイルの複製を目的としたバッチファイルです。
    • 実際には、AVS ファイル以外の複製にも応用可能です。
  • 同一のクリップをソースとする複数の AVS ファイルが必要な場合の使用を想定しています。

ダウンロード

AviSynth スクリプト(AVS)複製バッチファイル(2007-03-02 公開)

使い方

  1. avs_copy.zip を解凍します。
  2. コピー元の AVS ファイルを avs_copy.bat(またはそのショートカット)にドラッグ&ドロップします。
  3. コピーする部数を入力するダイアログが表示されますので、半角英数字で整数値を入力して、Enter キーを押してください。
    • デフォルトでは、10 を超える数値を入力しても、それ以上の複製は行われないようになっています。設定を変更したい場合は、メモ帳で avs_copy.bat を開いて、初期設定の copy_limit の値を変更してください。
  4. コピー元の AVS ファイル名に「アンダースコア(アンダーライン)+連番」を追加したファイル名で、コピー先の AVS ファイルを出力します。
    • すでに同名の AVS ファイルが存在する場合は、上書き確認のダイアログが表示されます。Yes(y だけでも可)を入力すると上書きし、No(n だけでも可)を入力すると複製しません。

備考/注意

  • Windows XP Home Edition(SP2)で動作確認しています。それ以外の Windows OS では動作しない可能性があります。

更新履歴

  • 2007-03-02: 初版。
  • 2007-10-01: FTP アップロード時に改行コードが変更されるため、ZIP 形式での配布に変更した(バッチファイルの内容に変更はありません)。

「iP!」という雑誌に AviSynth の記事が載ってた・・・けど

「iP!」という雑誌の 3 月号に AviSynth 関連の記事が数ページ載ってました。

iP ! (アイピー) 2007年 03月号 [雑誌]iP ! (アイピー) 2007年 03月号 [雑誌]

晋遊舎 2007-01-29
売り上げランキング : 864

Amazonで詳しく見る
by G-Tools

本屋で立ち読みしただけなので確かな情報ではありませんが、Amazon の表紙画像から判断するに、たぶん「エンコの達人」という特集の 1 コーナーだと思います。内容的には、AviSynth スクリプトの作成方法と VirtualDubMod を使ったエンコードを手順を追って解説したような記事でした(たぶん)。

AviSynth が雑誌などで取り上げられること自体あまりないような気がするので、最初は「珍しいなあ」と思いながら見ていたのですが、見ていくうちに猛烈な既視感が・・・。

考えられるデジャブの原因:

  • フィールドオーダーの判定に AviUtl を使った 60fps 読み込みを使用。
  • 説明に使用しているフィルタが似ている(TomsMoComp、IT_YV12、Convolution3D など)。
  • TomsMoComp の VerticalFilter パラメータの訳が「垂直フィルタ」。

などなど・・・。

Page 3 of 28: « 1 2 3 4 5 6 7 8 9 »