第伍話 avisynth bat出力編

ここでは、「第伍話 avisynth bat出力編」 に関する記事を紹介しています。

お世話になってるサイト様の新着記事

相互RCC設置しました。申請はこちらからお願いします→相互リンク/相互RCC
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ほんと更新遅くて申し訳ないです

やっとこさ今回、最後の出力について説明します

ここまでで、出力する前までは既に出来上がっているかと思いますので、もしまだでしたら、前回までの記事を読み返しておくことを推奨します

第陸話 avisynth 複数のavsをまとめてbat処理編
第伍話 avisynth bat出力編
avisynth バンディング低減フィルタ GradFunkMirror
第肆話 avisynth スクリプトとフィルタ2
第参話 avisynth スクリプトとフィルタ1
第弐話 avisynth エンコードの流れ編
第壱話 avisynth 導入編
序章 avisynthを使用したCLIエンコード

お待たせしました、では続きをどうぞ
●batファイル作成
まずは、テキストファイルを作成します
その後、拡張子を.txtから.batに変換し、自分に分かりやすい名前をつけて保存します

●注意事項
ここからは、batファイルの基礎コマンドが多少は分からないと厳しいかもしれません
私も、少しは説明しますが、コマンドについてはご自分で調べていただきたいと思います
また、人によっていろんな記述方法があるので、私の記述が全てではありません



ここがかなり参考になります→コマンドプロンプト基礎説明サイト


■初期設定

●echoのoff
一番初めに @echo off というふうに記載します
echoコマンドはコマンドプロンプトの画面にメッセージ等を出力するコマンドです
デフォルトではonになっているので、まずはこれをoffにするために記述します

●x264パラメータ設定
次は、x264のパラメータ設定をしておきます
このように記述します→set x264=--profile high --level 4.1 --crf 21 --aq-mode 1
(例なので、ここまでしか記述しません)

●出力ファイルの設定
次は、出力するファイルの場所や、ファイル名を決めます
とりあえず、私のバカテスのbatファイルを例に出して説明します

rem ### 出力ファイル ###
set subtitle=bakatesu12             ・・・ファイル名指定
set outfile_264="e:%subtitle%.mp4"   ・・・ファイルの出力場所指定
set subtitle=bakatesu12             ・・・これより下のファイル名指定
set outfile_264a="%subtitle%.mp4"    ・・・画面にタイトルを出力させるために記述
set outfile_aac="e:%subtitle%.aac"   ・・・aacファイルの保存場所指定
set outfile_wav="e:%subtitle%.wav"   ・・・wavファイルの保存場所指定
set outfile_log="e:%subtitle%.log"    ・・・ログ出力指定(別に必須ではない)
set subtitle=bakatesu12Union         ・・・音声と映像合成後のタイトル指定
set outfile_264b="保存したい場所のフルパス%subtitle%.mp4"  ・・・音声と映像を合成したファイルの出力場所指定

remコマンドを使用することで、コメントを記述したり、処理させないようにできます
setコマンドで、変数を定義することが出来ます。定義した変数は変数名を指定して呼び出したり出来ます
%subtitle%の部分で、ファイル名の「bakatesu12」を呼び出しています
つまり、Eドライブにbakatesu12.mp4というものが出来るようになっています
一番最後は、mp4とm4aを合成したファイルの保存場所とファイル名を指定しています
最終的には「bakatesu12Union.mp4」というファイルが出来るようになってます


●各exeファイルの指定
ここでは、x264.exeやneroAacEnc.exeのパスを指定します

rem ### x264 のステータス ###
set x264_status="x264-statuslog"

rem ### コマンドライン版 x264(x264.exe)のパス ###
set x264_path="D:atencfilesetfilex264.exe"

rem ### avs2wav.exe パス ###
set avs2wav_path="D:atencfilesetfileavs2wav.exe"

rem ### FAW.exeパス ###
set FAW.exe_path="C:Program FilesfaketowavFAW.exe"

rem ### MP4Box のパス ###
set mp4box_path="D:atencfilesetfileMP4Box.exe"

ここは、各exeファイルの場所をフルパスで指定してあげればいいので、説明は不要と思います
オプションの指定については申し訳ありませんが、自分でお調べになってください


●コマンドプロンプトにファイル名を表示させる
以下のように上で指定した変数を呼び出せば、コマンドプロンプトの画面に出力させることができます
特に必須ではないですが、私は見た時にすぐ分かるように設定しています
echo %outfile_264a%


●avsファイルを変数定義
avsファイルをINPUTFILEという名前で定義し、それが「現在処理しているファイルだよ」っていうのを表示させています
echo.と指定すると空白表示になります

set INPUTFILE=%~1  ・・・ここの~は半角~になります
echo 入力ファイル: %INPUTFILE%
echo.


●x264エンコード設定
ここで、x264のオプション設定を記述します

rem ###x264エンコード###
%x264_path% %x264% -o %outfile_264% %INPUTFILE%

最初にx264.exeを呼び出さないといけないので、%x264_path%を記述して呼び出します
後は、最初に変数定義したパラメータを呼び出すだけです
次は出力するために-oを指定します。-oは出力を意味します
-oの後には出力場所の指定と入力ファイルの指定をします
出力場所は先ほど変数定義したので、変数を呼び出します。入力ファイルになるavsも変数定義したので呼び出します


●avsファイルからwav出力
ここも同じです
まずはavs2wav.exeを呼び出し、avsファイルからwavを出力しています
exeの場所、avsファイルの場所、wav出力場所は事前に変数定義してあるので、呼び出してあげるだけです
※音声は別に編集して後で映像と合成させる場合は、この処理は必要ありません

rem ###wav出力###
%avs2wav_path% %INPUTFILE% %outfile_wav%


●偽装化していたwavをaacに戻す
ここも同じです
まずはFAW.exeを呼び出し、入力ファイルのwavを最初に指定し、後に出力ファイル指定を行ないます
変数定義しているので、すべて変数名を記述するだけでOKです

rem ###wav偽装→aacに戻す###
%FAW.exe_path% %outfile_wav% %outfile_aac%


●mp4boxで結合
最後に、mp4boxで合体させたい映像と音声を指定して、出力場所を指定します
はじめにmp4box.exeを呼び出します
次に-addの後に合体させたいファイルを指定します。変数定義してるので変数名を指定
次の-addでは1つ目で指定したファイルと合体させたいファイルを指定します。これも変数名指定
この例では、1つ目に映像を指定。2つ目に音声を指定しています

rem ###mp4boxで結合###
%mp4box_path% -add %outfile_264% -add %outfile_aac% -new %outfile_264b%


以上で、batファイルの設定は終了です 後は、処理したいavsファイルを作成したbatファイルにドラッグ&ドロップすれば、コマンドプロンプトが起動して、処理が開始されます
ただ、この方法ではまとめてたくさんのファイルを処理することができませんorz
ですが、もちろん方法はあります。現在私も5つぐらいまとめて処理させて、終了したらシャットダウンするように設定しています
説明が長くなるので、複数同時処理に関しては次回に説明したいと思います
かなり適当な説明だと思いますが、もし気になるところや質問があれば気軽にコメントでもしてください
分かる範囲でお答えします(できないかもしれないorz)
ではでは、



関連タグ : bat処理, avisynth, 出力, コマンド,

コメント
この記事へのコメント
このコメントは管理人のみ閲覧できます
2010/03/27(土) 23:33 | | #[ 編集]
使用できないオプションを記述していると、当然エラーはでますよ。
使用しているx264については、私はバカポ氏のビルドしたr1391を使用しているので、なんともいえない部分があります。
とりあえず、使えないオプションを使用してないか、exeファイルやavsファイルのパスは正しいか?等を1つずつ確認していくしかないと思います。
それと、avisynthのエンコード記事は全てPT1で録画しTSファイルを編集してやる事を前提としています(私の環境がそれの為)
PV4についてはまったく使ったことがないので、どのように行なうかわからないです。申し訳ないです。
PV4で録画した後の、普段の手順等(aviutlでよい)を教えていただければ、少しはアドバイスできるかもしれないです
2010/03/28(日) 01:09 | URL | 管理人 -暁- #6XGrrLw2[ 編集]
TSからのエンコードなら分離したaacをFakeAacWavでwavに偽装してavsに読ませて
BAT内でavs2wavで取り出したあとFakeAacWavで偽装解除の方が劣化がなくてよくないですか?
FakeAacWavはコマンドラインでも使えますし。
何か理由があるのでしたらごめんなさい。
2010/03/28(日) 08:43 | URL | 破壊王 #-[ 編集]
うわっ!FakeAacWavってコマンドラインでも使えたのかorz
今readmeちゃんと見たら書いてあるし・・・
コマンドラインで使えないと思ってました。
音声だけ別処理するのはメンドウと思ってたので、多少劣化してもwav+d2vにして、一気にbat処理してました。
自分でも動作試して、正常に動画作成できたので直す必要がある記事は直しておきました。
適切なアドバイスありがとうございます。なにぶん私もコマンドラインとかにはあまり詳しくないもので・・・
2010/03/29(月) 01:42 | URL | 管理人 -暁- #6XGrrLw2[ 編集]
batファイルにavsファイルD&Dすると
偽装wavのaac化の作業が始るんですけど
それが終わると
「Took 0.12 seconds for the writing pass
Error importing D:test.mp4: Requested URL is not vaild or cannot found」
と出て作業が終わってしまいます
どの辺りの記述ミスかわかりますか?
2010/04/16(金) 19:02 | URL | #-[ 編集]
とりあえず、0.12秒書き込みに時間をとりましたと
その後、Dにあるtest.mp4をインポートできないからエラーにしたよって感じだと思います。
batファイルの中身やavsをどういう風に記述しているか分かりませんが、動画処理は飛ばされていきなり音声処理にはいっていますね。
avsの記述は間違ってないかを確認することと、batファイルのエンコ設定やx264.exeの指定は正しいかを確認したらいいと思います。
2010/04/17(土) 00:14 | URL | 管理人 -暁- #-[ 編集]
お陰さまでエンコードできました!
原因は記述の順番とx264.exeの指定ミスでした…
お手数かけました
2010/04/17(土) 09:11 | URL | #-[ 編集]
いえいえ。
無事できたようで何よりです。がんばってください!
2010/04/18(日) 01:59 | URL | 暁 #-[ 編集]
大変お世話になってます^^
1つ質問なのですが、batのエンコ指定の部分で
set x264=--profile high --level 4.1 --crf 21 --aq-mode 1
は正常に稼動するのですが、これを2パスにしようとするとすべてデフォルト設定??で1パスのみになってしまいます。
※Bを700でも7000でも出来上がりが同じサイズです。

set x264=--profile high --level 4.1 --p 1 --B 700 --aq-mode 1
set x264=--profile high --level 4.1 --p 2 --B 700 --aq-mode 1
ご伝授お願いします。
2011/02/13(日) 02:11 | URL | #-[ 編集]
このコメントは管理人のみ閲覧できます
2011/07/20(水) 05:54 | | #[ 編集]
このコメントは管理人のみ閲覧できます
2011/07/20(水) 06:14 | | #[ 編集]
隼さんへ
返事遅くてすいません。
もう解決したかもしれないけれど、コメントさせていただきます

remはコメント化の部分でしか使用してないのでしょうか?

それと rem###○○### となってますが、remと#の間に半角スペース入っていますか?
関係ないかもしれないけれど、私は入れてますので参考までに

後は、errorの部分にinput fileって記述があるので、ファイルを読み込めてない可能性があります。
avsファイルの中の記述の確認と、avsファイルとaacファイルの指定場所に間違いがないかの確認もしたほうがいいです

とりあえず、remはコメント化でしか使用してないなら、一度remの行は全部削除してみてはどうでしょうか?
それで、remが悪いのか、他が悪いのか、はたまた全体的に悪いのか判断できると思います。

この手のエラーは一個ずつ悪いところを探すしかないのでがんばってください
どうしても無理そうなら、また相談してください
最悪、私の使ってるものをお渡ししますので
2011/08/12(金) 03:18 | URL | 暁 #6XGrrLw2[ 編集]
このコメントは管理者の承認待ちです
2011/11/18(金) 14:10 | | #[ 編集]
こんにちわ
エンコードできるようになってなによりです^^
はじめの方に書いてあるのはあくまで記述例なので気にしないでください。
私はYV12で入力して出力もYV12です。
x264にする場合、どうせ最終的にYV12出力になるので、速度的にも劣化的にもはじめからYV12で
読み込んでおいたほうがいいです。
convert to YV12を記述しておくといいでしょう

infoと記載すれば入力情報とかが確認できますよ
2011/11/28(月) 01:02 | URL | 暁 #-[ 編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://daybreakdeath.blog66.fc2.com/tb.php/118-110af00a
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。