Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その3
前回はavsファイルについてでした。今回はbatファイルの内容を記述します。
その前にコマンドプロンプトについて少しだけ解説しておこうかと思います。
Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その1
Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その2
Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その3
Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その4
batファイルの作成方法、コマンドの説明
テキストドキュメントを新規作成し、拡張子を.batにするだけでおk。編集はメモ帳で行えます。
とりあえず簡単な処理をやってみましょう。さっき作ったbatに下のコマンドを保存してください。
次にbatファイルに何でもいいので画像ファイル(.bmp、.jpegなど)をドロップしてみてください。
コマンドプロンプトと、ドロップした画像ファイルがMSペイントで開かれたと思います。
最初の「echo off」はそれ以降コマンドをコマンドプロンプトに表示しないようにします。
「@」を付けるとそのコマンド自体も非表示なります。部分的に表示したい場合は「echo」を使います。
基本的に作成するバッチファイルは「@echo off」を最初に書く事になります。
「rem」は書いた行がコメントとして処理されます。Avisynthの「#」と同じでしょうか。
「%1」はバッチパラメータです。ドロップしたファイルのフルパスが渡されると考えればいいでしょう。
「%~n1」はドロップしたファイルのファイル名を表示します。
「set」は変数を設定するコマンドです。
上の例では「PAINT」が「%windir%\system32\mspaint.exe」を表します。
そして次の行の様に「%」で変数を囲むと指定した値が実行される事になります。
最後の「pause」は処理を一時停止させるコマンドです。
これが無いとペイントを終了するとプロンプトも終了しますが、
あると「続行するには何かキーを押してください・・・」と表示されます。
あとは「if exist」について覚えておけばいいでしょう。
構文は、IF [NOT] EXIST ファイル名 コマンド
その他のコマンドについてはコマンドプロンプトを使ってみよう!を見てください。
output.batの記述について
『道場』の第伍話 avisynth bat出力編を参考にしています。
output.batの内容の目次を書くと、
こんな感じになります。ではイカにoutput.batの内容を。(記事用に書き換えたので間違ってるかもしれんです)
ごちゃごちゃしてますが、最初の例が分かればわかると思います。多分。
コマンドプロンプトに詳しい人ならばスマート・コンパクトに出来ると思うのですが、面倒なのでこのままです。
まず太い青のところがパスを設定する所で変更するべきところです。
エンコード設定ですが、これはx264とneroAacEncのパラメータ設定です。
Avisynthのフィルタと同じでこれまた適当ですので、お好みの設定をしてください。
x264の設定方法はこちらを参考に、neroAacEncは説明書を読みましょう。
最後のSCRenameは「SCRenameTvRock.bat」の内容を貼りつけただけです。
MASTER_output.batの記述について
これも『道場』の第陸話 avisynth 複数のavsをまとめてbat処理編を参考にしています。早速内容を。
先程と同じとおりに太い青が変更点です。これは一つだけです。
「エンコード順序」には読み込んだAVSのパスをエンコード順に表示します。そのままです。
「if exist %1 echo 1st:%1」は%1が存在するならば、1st:%1を表示すると言う意味です。
なので、1つだけ読み込めば1stまで表示され、3つなら3rdまで表示されます。
この場合5個のファイルまで表示されます。もっとあるなら書き足せばおk
「BATファイル読み込み」は先程作成した「OUTPUT.bat」に%1を読み込ませます。
「shift」コマンドは置き換え可能パラメータを指定します。「goto」コマンドは指定したラベルに飛びます。
要は、gotoで:loopに戻った分、%1が%2と順に置き換えられ自動的に次のavsをエンコード開始します。
しかしこのままだと3、4、5とループし続けるので、
「if not exist "%1" goto end」を置いて存在しないパラメータが指定されたら、
:endに飛んでシャットダウンするようになっています。(シャットダウンしたくない場合は:end以下を削除)
やはりMASTER_output.batを開いてavsのパスを記述するのは面倒なんでドロップした方が楽ですね。
で、ドロップ出来るなら複数選択してそのまま投げ込んで順番にエンコ出来ればより楽です。
DGindex.batの記述について
これはTSからmp4のメモを参考にしています。以下が内容。
「IF」はInput FIleで、%~1を読み込みます。
「OF」はOutput Fileです。これも%~1でいいのですが、そうすると*_HD.ts.d2vの様になってしまうので、
TSと同じ保存先を指定して、ファイル名だけ指定しました。まぁどうせSCRenameで変わるんですけどね。
「AT」は指定したavsを参照し、d2v,aacのパスとディレイ情報を記述した新しいavsを作成します。
DGindexのコマンドについて詳しく知りたい方はマニュアルを見てください。
ところで、TVrockで設定した録画の保存先は、
録画終了後TS、D2V、AAC、AVS、LOGのファイルが存在することになります。
もちろんそれで構わないのですが、エンコードが終わってMP4が完成したらいらないですよね。
全体をドラッグして削除も面倒なんでそれらを削除するbatも作ってみました。
作ったらAvisynthフォルダに入れて、録画フォルダにショートカット作って置けばいいです。
だた、したのコマンドの場合コマンドラインごみ箱ツール「GB」をインストールしておく必要があります。
「*(アスタリスク)」は0文字以上の任意の文字列を表すワイルドカードです。
「if exist %TS% %GB% %TS% 」の意味は"%TS%が存在するなら%TS%をゴミ箱に移動する"です。
わざわざソフトをインストトールするのはコマンドプロンプトにゴミ箱に移動するコマンドが無いからです。
%GB%でなくて「del」でもいいのですが、「del」は完全に削除してしまうので、復元が困難になります。
mp4作成後ならいいですが、作成前に誤って実行してしまうとTSが消えてしまうので念のためGBにしました。
ゴミ箱なら元に戻せますからね。
これで必要な.batファイルは揃いました。後はTVrockの後処理設定ですが、それは次回に。
その前にコマンドプロンプトについて少しだけ解説しておこうかと思います。
Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その1
Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その2
Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その3
Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その4
batファイルの作成方法、コマンドの説明
テキストドキュメントを新規作成し、拡張子を.batにするだけでおk。編集はメモ帳で行えます。
とりあえず簡単な処理をやってみましょう。さっき作ったbatに下のコマンドを保存してください。
次にbatファイルに何でもいいので画像ファイル(.bmp、.jpegなど)をドロップしてみてください。
コマンドプロンプトと、ドロップした画像ファイルがMSペイントで開かれたと思います。
@echo off rem #コマンドテスト# echo 表示ファイル名:%~n1 set PAINT=%windir%\system32\mspaint.exe %PAINT% %1 pause |
「@」を付けるとそのコマンド自体も非表示なります。部分的に表示したい場合は「echo」を使います。
基本的に作成するバッチファイルは「@echo off」を最初に書く事になります。
「rem」は書いた行がコメントとして処理されます。Avisynthの「#」と同じでしょうか。
「%1」はバッチパラメータです。ドロップしたファイルのフルパスが渡されると考えればいいでしょう。
「%~n1」はドロップしたファイルのファイル名を表示します。
「set」は変数を設定するコマンドです。
上の例では「PAINT」が「%windir%\system32\mspaint.exe」を表します。
そして次の行の様に「%」で変数を囲むと指定した値が実行される事になります。
最後の「pause」は処理を一時停止させるコマンドです。
これが無いとペイントを終了するとプロンプトも終了しますが、
あると「続行するには何かキーを押してください・・・」と表示されます。
あとは「if exist」について覚えておけばいいでしょう。
構文は、IF [NOT] EXIST ファイル名 コマンド
その他のコマンドについてはコマンドプロンプトを使ってみよう!を見てください。
output.batの記述について
OUTPUT.bat | 映像・音声のエンコード、結合してMP4を作成します。残骸ファイルの削除も行ないます。 |
『道場』の第伍話 avisynth bat出力編を参考にしています。
output.batの内容の目次を書くと、
・変数設定 映像・音声エンコード設定 出力ファイル プログラムのパス ・エンコード処理 x264エンコード WAV出力 neroAacEncエンコード mp4boxで結合 残骸ファイル削除 ・SCRename 出力ファイルをリネーム |
こんな感じになります。ではイカにoutput.batの内容を。(記事用に書き換えたので間違ってるかもしれんです)
@echo off rem ###エラーメッセージ### rem ===================================================== set error=ファイルが存在しないか、ファイル名・拡張子が間違っています if not exist "%1" echo %error% if not exist "%1" pause rem ===================================================== rem ###映像・音声エンコード設定### rem ===================================================== set x264=--profile high --level 4.1 --crf 20 --aq-mode 1 --direct auto set aac=-br 192000 -2pass -lc rem ===================================================== rem ### 出力ファイル ### rem ===================================================== set save=任意の保存場所のパス set subtitle=%~n1 set outfile_264="%save%%subtitle%[enc].mp4" set subtitle=%~n1 set outfile_264a="%subtitle%.mp4" set outfile_aac="%save%%subtitle%.aac" set outfile_wav="%save%%subtitle%.wav" set outfile_log="%save%%subtitle%.log" set subtitle=%~n1 set outfile_264b="%save%%subtitle%.mp4" rem ===================================================== rem ### プログラムのパス ### rem ===================================================== rem ### コマンドライン版 x264 ### set x264_path="x264.exeのフルパス" rem ### neroAacEnc ### set neroAacEnc_path="neroAacEnc.exeのフルパス" rem ### avs2wav.exe ### set avs2wav_path="avs2wav.exeのフルパス" rem ### MP4Box ### set mp4box_path="MP4Box.exeのフルパス" rem ### SCRename ### set screname_path="SCRenameフォルダのパス" rem ===================================================== echo ==================================================== echo 入力AVSファイル echo ==================================================== set INPUTFILE=%~1 echo パス:%INPUTFILE% echo. echo ==================================================== echo x264エンコード開始 echo ==================================================== %x264_path% %x264% -o %outfile_264% %INPUTFILE% echo. echo ==================================================== echo wav出力開始 echo ==================================================== %avs2wav_path% %INPUTFILE% %outfile_wav% echo. echo ==================================================== echo neroAacEncエンコード開始 echo ==================================================== %neroAacEnc_path% %aac% -if %outfile_wav% -of %outfile_aac% echo. echo ==================================================== echo mp4boxで結合 echo ==================================================== %mp4box_path% -add %outfile_264% -add %outfile_aac% -new %outfile_264b% echo. echo ==================================================== echo 残骸ファイル削除 echo ==================================================== del /f /q %outfile_264% del /f /q %outfile_wav% del /f /q %outfile_aac% echo 削除ファイル: if not exist %outfile_264% echo %outfile_264% if not exist %outfile_wav% echo %outfile_wav% if not exist %outfile_aac% echo %outfile_aac% echo. echo ==================================================== echo SCRename echo ==================================================== setlocal rem SCRename.vbs をインストールしたパスを設定 set SCRPATH=%screname_path% for /F "usebackq delims=" %%I in (`cscript //nologo "%SCRPATH%\SCRename.vbs" "%save%%~n1.mp4" "$SCtitle$ $SCpart$第$SCnumber$話 「$SCsubtitle$」 ($SCservice$)" %2 %3`) do set SCRTARGET=%%~I rem 設定例 rem call encode.bat "%SCRTARGET%" endlocal echo. |
ごちゃごちゃしてますが、最初の例が分かればわかると思います。多分。
コマンドプロンプトに詳しい人ならばスマート・コンパクトに出来ると思うのですが、面倒なのでこのままです。
まず太い青のところがパスを設定する所で変更するべきところです。
エンコード設定ですが、これはx264とneroAacEncのパラメータ設定です。
Avisynthのフィルタと同じでこれまた適当ですので、お好みの設定をしてください。
x264の設定方法はこちらを参考に、neroAacEncは説明書を読みましょう。
最後のSCRenameは「SCRenameTvRock.bat」の内容を貼りつけただけです。
MASTER_output.batの記述について
MASTER_output.bat | 複数のavsファイルをドロップで読込み可能で、順番にエンコード・MP4作成をします。 エンコード方法はOUTPUT.batを呼び出します。 基本的にエンコードにはこのファイルを使えばいいです。 |
これも『道場』の第陸話 avisynth 複数のavsをまとめてbat処理編を参考にしています。早速内容を。
@echo off rem エラーメッセージ rem **************************************************************** set error=ファイルが存在しないか、ファイル名・拡張子が間違っています if not exist "%1" echo %error% if not exist "%1" pause rem **************************************************************** echo **************************************************************** echo エンコード順序 echo **************************************************************** if exist %1 echo 1st:%1 if exist %2 echo 2nd:%2 if exist %3 echo 3rd:%3 if exist %4 echo 4th:%4 if exist %5 echo 5th:%5 echo. :loop if not exist "%1" goto end echo **************************************************************** echo BATファイル読込み %time% echo **************************************************************** echo. call "OUTPUT.batのフルパス" "%1" ping localhost -n 6 >nul echo. echo. echo **************************************************************** echo End %~n1 %time% ping localhost -n 6 >nul echo. echo. shift goto loop :end shutdown -s -t 30 |
先程と同じとおりに太い青が変更点です。これは一つだけです。
「エンコード順序」には読み込んだAVSのパスをエンコード順に表示します。そのままです。
「if exist %1 echo 1st:%1」は%1が存在するならば、1st:%1を表示すると言う意味です。
なので、1つだけ読み込めば1stまで表示され、3つなら3rdまで表示されます。
この場合5個のファイルまで表示されます。もっとあるなら書き足せばおk
「BATファイル読み込み」は先程作成した「OUTPUT.bat」に%1を読み込ませます。
「shift」コマンドは置き換え可能パラメータを指定します。「goto」コマンドは指定したラベルに飛びます。
要は、gotoで:loopに戻った分、%1が%2と順に置き換えられ自動的に次のavsをエンコード開始します。
しかしこのままだと3、4、5とループし続けるので、
「if not exist "%1" goto end」を置いて存在しないパラメータが指定されたら、
:endに飛んでシャットダウンするようになっています。(シャットダウンしたくない場合は:end以下を削除)
やはりMASTER_output.batを開いてavsのパスを記述するのは面倒なんでドロップした方が楽ですね。
で、ドロップ出来るなら複数選択してそのまま投げ込んで順番にエンコ出来ればより楽です。
DGindex.batの記述について
DGindex.bat | DGindexを呼び出してTSファイルから「d2v」「aac」「avs」ファイルを作成します。 TSドロップでも使えますが、手間をなくす為TVrockの後処理コマンドに記述します。 |
これはTSからmp4のメモを参考にしています。以下が内容。
@echo off set error=ファイルが存在しないか、ファイル名・拡張子が間違っています if not exist "%1" echo %error% if not exist "%1" pause start DGIndex.exeのフルパス -IF=[%~1] -OF=[録画の保存先%~n1] -AT=[template.avsのフルパス] -EXIT |
「OF」はOutput Fileです。これも%~1でいいのですが、そうすると*_HD.ts.d2vの様になってしまうので、
TSと同じ保存先を指定して、ファイル名だけ指定しました。まぁどうせSCRenameで変わるんですけどね。
「AT」は指定したavsを参照し、d2v,aacのパスとディレイ情報を記述した新しいavsを作成します。
DGindexのコマンドについて詳しく知りたい方はマニュアルを見てください。
ところで、TVrockで設定した録画の保存先は、
録画終了後TS、D2V、AAC、AVS、LOGのファイルが存在することになります。
もちろんそれで構わないのですが、エンコードが終わってMP4が完成したらいらないですよね。
全体をドラッグして削除も面倒なんでそれらを削除するbatも作ってみました。
作ったらAvisynthフォルダに入れて、録画フォルダにショートカット作って置けばいいです。
だた、したのコマンドの場合コマンドラインごみ箱ツール「GB」をインストールしておく必要があります。
@echo off set GB=GB.exeのフルパス set save=録画の保存先 set TS=%save%*.ts set D2V=%save%*.d2v set AAC=%save%*.aac set AVS=%save%*.avs set LOG=%save%*.log if exist %TS% %GB% %TS% if exist %D2V% %GB% %D2V% if exist %AAC% %GB% %AAC% if exist %AVS% %GB% %AVS% if exist %LOG% %GB% %LOG% |
「*(アスタリスク)」は0文字以上の任意の文字列を表すワイルドカードです。
「if exist %TS% %GB% %TS% 」の意味は"%TS%が存在するなら%TS%をゴミ箱に移動する"です。
わざわざソフトをインストトールするのはコマンドプロンプトにゴミ箱に移動するコマンドが無いからです。
%GB%でなくて「del」でもいいのですが、「del」は完全に削除してしまうので、復元が困難になります。
mp4作成後ならいいですが、作成前に誤って実行してしまうとTSが消えてしまうので念のためGBにしました。
ゴミ箱なら元に戻せますからね。
これで必要な.batファイルは揃いました。後はTVrockの後処理設定ですが、それは次回に。
- 関連記事
-
- 今更ながらGPGPU(CUDA)でTSをmp4にエンコードしてみた
- Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その4
- Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その3
- Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その2
- Avisynth+バッチファイル+αで簡単にアニメ高速エンコード その1
| エンコード | 13:42 | comments:0 | trackbacks:0 | TOP↑