niiyan's blog

niiyanの個人ブログ。

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

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

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

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

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

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

avimux.zip - Windows Live

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

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

  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スクリプトで入出力ファイルを指定するときは、パスを二重引用符で囲んではいけません。さもないと、エラーが発生します(コマンドラインから AVI-Mux GUI を操作する(1): 基本編を参照)。

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

関連記事