面倒臭がりな人のための半自動化エンコーディング(4):その他のavs
Base.avs以外に、フィルタ設定用のavs(PV.avs)とユーザー定義関数のavs(MyFunction.avs)を用意。
PV.avsは、フィルタ設定部分を記述したavsファイルです。もちろん、これらの設定をBase.avs内に書いてもいいのですが、後々、手抜きするために、あえて別ファイルにしています(笑)
MyFunction.avsは、ユーザー定義関数を羅列しただけのファイルです。Base.avsの中に全部書いてしまうと、スクリプトが長く、見づらくなってしまうので、これも別ファイルにしています。ユーザー定義関数を使わない場合はいらないです。
ちなみに、今回、半自動化作業(通称:手抜きエンコ)を進めるにあたって、FPDust関数を少しいじりました。
[追記:2004/07/27]: ver. 0.2。変更点は下記参照。
[追記:2004/07/29]: ver. 0.3。FPDustV2関数に関する記事は、こちらのページに移動しました。
PV.avsは、フィルタ設定部分を記述したavsファイルです。もちろん、これらの設定をBase.avs内に書いてもいいのですが、後々、手抜きするために、あえて別ファイルにしています(笑)
MyFunction.avsは、ユーザー定義関数を羅列しただけのファイルです。Base.avsの中に全部書いてしまうと、スクリプトが長く、見づらくなってしまうので、これも別ファイルにしています。ユーザー定義関数を使わない場合はいらないです。
ちなみに、今回、半自動化作業(通称:手抜きエンコ)を進めるにあたって、FPDust関数を少しいじりました。
[追記:2004/07/27]: ver. 0.2。変更点は下記参照。
[追記:2004/07/29]: ver. 0.3。FPDustV2関数に関する記事は、こちらのページに移動しました。
面倒臭がりな人のための半自動化エンコーディング(3):基本のavs(Base.avs)
基本となるavsファイル(Base.avs)を作成。
こんな感じ。
少し解説。
キャプチャファイル(m2v/wav)とvcfファイル(VirtualDubの設定ファイル)の名前を、最初にfilenameとして設定しておきます。ちなみに、001以外のキャプチャファイルがある場合は、後でバッチファイルで書き換えます。
AddRangeプラグインとvcfファイルを利用して選択範囲を指定するのですが、当然、設定を行う前にvcfファイルは存在しませんので、先頭に#を付けて、コメント化しておきます。
フィルタは、全部、別のavsに書いておいて、インポートします。
こちらもコメントアウト。選択範囲を決めるときに、フィルタがかかった状態だとシークが重いので。また、こうしておくとと、フィルタのON/OFFの切り替えが楽だったりします。
こんな感じ。
#####ファイル名の指定#####
filename = "001"
#####初期設定#####
SetMemoryMax(256)
#SetWorkingDir("D:\AviSynth\")
#####プラグイン等の読み込み#####
#//---Avisynth2.5x用プラグイン---//
LoadPlugin("warpsharp.dll")
LoadPlugin("AddRange_for_25.dll")
LoadPlugin("De.dll")
LoadPlugin("DeCross.dll")
#//---Avisynth1.0x/2.0x用プラグイン---//
LoadPlugin("LoadPluginEx.dll")
LoadPlugin("DustV5.dll")
#//---関数定義ファイル---//
#Import("MyFunction.avs")
#####ソース入力#####
#//---MPEG-2ファイルを開く(warpsharpとm2v.vfpを使用)---//
LoadAviUtlInputPlugin("C:\Program Files\m2v_vfp-0.6.47\m2v.vfp", "MPEG2VIDEO")
MPEG2VIDEO(filename + ".m2v")
#//---ビデオとオーディオの合成---//
AudioDub(last, WavSource(filename + ".wav"))
#####フィールドオーダーの設定#####
#//---トップファースト---//
AssumeFrameBased().ComplementParity()
#####選択範囲の指定#####
#//---AddRangeプラグイン---//
#AddRange(filename + ".vcf")
#####プロファイルのインポート#####
#Import("PV.avs")
return last
少し解説。
#####ファイル名の指定#####
filename = "001"
キャプチャファイル(m2v/wav)とvcfファイル(VirtualDubの設定ファイル)の名前を、最初にfilenameとして設定しておきます。ちなみに、001以外のキャプチャファイルがある場合は、後でバッチファイルで書き換えます。
#####選択範囲の指定#####
#//---AddRangeプラグイン---//
#AddRange(filename + ".vcf")
AddRangeプラグインとvcfファイルを利用して選択範囲を指定するのですが、当然、設定を行う前にvcfファイルは存在しませんので、先頭に#を付けて、コメント化しておきます。
#####プロファイルのインポート#####
#Import("PV.avs")
フィルタは、全部、別のavsに書いておいて、インポートします。
こちらもコメントアウト。選択範囲を決めるときに、フィルタがかかった状態だとシークが重いので。また、こうしておくとと、フィルタのON/OFFの切り替えが楽だったりします。
面倒臭がりな人のための半自動化エンコーディング(2):のための環境作り
まず、キャプチャしたファイル、avs、プラグイン、バッチファイル、vcfファイルなど、すべてを同じフォルダに置くことにしました。
これは、バッチファイルで、いちいちディレクトリを切り替えるのが面倒なためです。とことん、面倒くさがりです(笑)。
キャプチャファイルは、エレメンタリ・ストリーム(m2v+wav)でキャプチャし、000.m2v, 001.m2vなどのように00*.m2v(.wav)というファイル名にします。
0**.m2vとすれば、もっとたくさん処理できるのですが、実際10個以上を一気にエンコすることはないので、000-010までとしました。
後で紹介するバッチファイルも、このことを前提として書かれています。
あと、コマンドラインツール(avs2aviとか)も、キャプチャファイルと同じフォルダに置きます。環境変数でPATHが通っているところに置いてもよいです。
下準備は以上です。
これは、バッチファイルで、いちいちディレクトリを切り替えるのが面倒なためです。とことん、面倒くさがりです(笑)。
キャプチャファイルは、エレメンタリ・ストリーム(m2v+wav)でキャプチャし、000.m2v, 001.m2vなどのように00*.m2v(.wav)というファイル名にします。
0**.m2vとすれば、もっとたくさん処理できるのですが、実際10個以上を一気にエンコすることはないので、000-010までとしました。
後で紹介するバッチファイルも、このことを前提として書かれています。
あと、コマンドラインツール(avs2aviとか)も、キャプチャファイルと同じフォルダに置きます。環境変数でPATHが通っているところに置いてもよいです。
下準備は以上です。
面倒臭がりな人のための半自動化エンコーディング(1):まえがき
「AviSynthのページやめるかも」と言ってからの方が、更新ペースが上がってます。いや、気のせいです、きっと。
ところで、久々にキャプチャ&再エンコードしちゃいました。
「動画やめたって言ってたのは、ウソだったの?」とか、「おいおい、もう方針転換かよ」とか、「もう離婚しちゃったんだね」とか思われるかもしれませんが、いわゆるビデオやMD代わりということで、好意的に解釈してやってください(※註:にーやんは未婚です)。
今流行りの(?)DVDレコーダーもなければ、MDデッキはもう何年もぶっ壊れたままという状態なので、必然的にキャプチャせざるをえないわけでして。見たい番組があればビデオデッキで録画したり、ラジオでお気に入りの曲が流れれば録音したり・・・そういった感じの動画生活を始めたわけです。
私の場合、ハードウェアMPEG-2キャプチャボードを使っているので、たとえばDVD化するにしても再エンコの必要はない(しなくても可能な)わけですが、そこはほら、かつての動画ヲタの血が騒ぐってやつですか?(笑)最低限のフィルタだけでもかけて、再エンコードしたい、いや、せずにはいられない!んですよね。画質云々とかいう問題ではなく、悲しいまでの性です、もうこれは(涙)。
が、一度(本当は二度)、動画の世界から足を洗った身。面倒なことはできるだけ避けたい。ていうか、面倒だからやめた、ってのもあるわけですし・・・。
そこで、コマンドプロンプトを利用して、再エンコードの作業を、なるべく自動化してしまおうじゃないか、と考えました。
3番は、どうしても手動になってしまいますが、2, 4, 5はバッチファイルをダブルクリック -> 実行のみ。バッチファイル自体は、最初に作った状態のまま、一切、変更無し。なので、何となく、半自動化したような気分になれる。(゜д゜)ウマー。
実際、かなり楽です。
まあ、フィルタもかなり妥協してますし、対象がPVだけなので、選択範囲の指定も先頭と最後の2箇所をカットするだけというのもありますけどね。
で、これ、あくまでも個人的な必要に迫られてやってることなんですが、もしかしたら何かの参考になるかもしれないので、何回かに分けて、スクリプトとバッチファイルの内容を紹介することにします。
ところで、久々にキャプチャ&再エンコードしちゃいました。
「動画やめたって言ってたのは、ウソだったの?」とか、「おいおい、もう方針転換かよ」とか、「もう離婚しちゃったんだね」とか思われるかもしれませんが、いわゆるビデオやMD代わりということで、好意的に解釈してやってください(※註:にーやんは未婚です)。
今流行りの(?)DVDレコーダーもなければ、MDデッキはもう何年もぶっ壊れたままという状態なので、必然的にキャプチャせざるをえないわけでして。見たい番組があればビデオデッキで録画したり、ラジオでお気に入りの曲が流れれば録音したり・・・そういった感じの動画生活を始めたわけです。
私の場合、ハードウェアMPEG-2キャプチャボードを使っているので、たとえばDVD化するにしても再エンコの必要はない(しなくても可能な)わけですが、そこはほら、かつての動画ヲタの血が騒ぐってやつですか?(笑)最低限のフィルタだけでもかけて、再エンコードしたい、いや、せずにはいられない!んですよね。画質云々とかいう問題ではなく、悲しいまでの性です、もうこれは(涙)。
が、一度(本当は二度)、動画の世界から足を洗った身。面倒なことはできるだけ避けたい。ていうか、面倒だからやめた、ってのもあるわけですし・・・。
そこで、コマンドプロンプトを利用して、再エンコードの作業を、なるべく自動化してしまおうじゃないか、と考えました。
1.キャプチャ - ファイル名は000.m2v-009.m2vの連番にする。
2.avs作成 - ベースとなるAVSを作成しておいて、バッチファイルでコピーを作成&リネーム&置換。
3.vcf作成 - VirtualDub(Mod)で、選択範囲を指定して、vcf保存。ファイル名はキャプチャファイルと同じにする。
4.avs修正 - 文字列置換バッチで、フィルタ設定と外部ファイルの行を有効にする。
5.再エンコ - 中間ファイル出力 -> MPEG-2再エンコ -> 音声の調整・周波数変換 -> mp2/mp3エンコ -> 中間ファイルの削除、までを自動化。
3番は、どうしても手動になってしまいますが、2, 4, 5はバッチファイルをダブルクリック -> 実行のみ。バッチファイル自体は、最初に作った状態のまま、一切、変更無し。なので、何となく、半自動化したような気分になれる。(゜д゜)ウマー。
実際、かなり楽です。
まあ、フィルタもかなり妥協してますし、対象がPVだけなので、選択範囲の指定も先頭と最後の2箇所をカットするだけというのもありますけどね。
で、これ、あくまでも個人的な必要に迫られてやってることなんですが、もしかしたら何かの参考になるかもしれないので、何回かに分けて、スクリプトとバッチファイルの内容を紹介することにします。



