Avisynth」タグアーカイブ

Windows7 64bit に Avisynth エンコード環境を構築する(5) まとめ

準備

Avisynth 2.5.8 MT

Avisynth 2.5.8 MT 64bit

Avisynth 2.6 MT

AVS File のプレビュー

ツール

Avisynthのインストール(Avisynth25MT・Avisynth25MT_x64・Avisynth26MTの共存)

  1. Avisynth25をインストール
    1. Avisynth_258.exeを実行
    2. 関連付けは「Avisynth Script を新規作成メニューに追加」以外はチェックを外す
    3. インストール先をC:\Avisynth\2.5に設定
  2. Avisynth25MT_x64をインストール
    1. avisynth64_4-16-10.rarを解凍し、avisynth64_install.cmdを右クリック
    2. 「管理者として実行」をクリックし、管理者権限でインストール
  3. Avisynth25をアンインストール
    1. C:\Avisynth\2.5をコピーして退避(例:C:\Avisynth\2.5 – コピー)
    2. スタートメニューの「Avisynth のアンインストール」を実行
    3. プラグインディレクトリへのレジストリポインタも削除する
  4. Avisynth25MTを配置
    1. C:\Avisynth\2.5を退避したファイルで上書き(例:C:\Avisynth\2.5 – コピーでC:\Avisynth\2.5を上書き)
    2. avisynth258MTを解凍
    3. avisynth258MT\avisynth.dllをC:\Avisynth\2.5移動(C:\Avisynth\2.5\avisynth.dll)
    4. avisynth258MT\pluginsをC:\Avisynth\2.5移動し、上書き(C:\Avisynth\2.5\plugins)
  5. Avisynth26をインストール
    1. AviSynth_130918.exeを実行
    2. 関連付けは「Avisynth Script を新規作成メニューに追加」以外はチェックを外す
    3. インストール先をC:\Avisynth\2.6に設定
  6. Avisynth26MTを配置
    1. avisynth_20130928.7zを解凍
    2. rrpatch01b.zipを解凍
    3. rrpatch01b\RRPATCH.EXEを実行
    4. [ファイル]にavisynth_20130928\avisynth.dllを設定
    5. [パッチデータ]に「00135987: 35 36」を貼り付け、[処理]を押下し、パッチを当てる
    6. C:\Windows\SysWOW64\avisynth.dllをavisynth.dll.bakに変更(C:\Windows\SysWOW64\avisynth.dll.bak)
    7. avisynth_20130928\avisynth.dllをC:\Windows\SysWOW64\に移動(C:\Windows\SysWOW64\avisynth.dll)
  7. レジストリを修正
    1. regedit.exeを起動
      ([Winキー]+[R]で「ファイル名を指定して実行」を起動し、[名前]に”regedit.exe”を入力して[OK]を押下)
    2. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\AviSynth」を開く
    3. [新規]で[文字列値]を追加し、名前を”plugindir2_6”に設定
    4. [plugindir2_6]の値を[plugindir2_5]の値と同じにする(C:\AviSynth\2.6\plugins)
    5. [plugindir2_5]の値を”C:\AviSynth\2.5\plugins”に修正

これで、Avisynth25MT_x64・Avisynth26MTは使える状態になっているはずです。
Avisynth26MTはAvsPmodで動作確認できます。
Avisynth25MT_x64はVirtualDub-1.10.4-AMD64で動作確認できます。

Avisynth25MT_x64環境プレビュー・編集用のAvsPmodを用意

Avisynth25MT環境をAvisynth25MT_x64環境と同じpluginを用意して、
AvsPmodをAvisynth25MT環境で使用し、エンコードはAvisynth25MT_x64環境で行う。

  1. AvsPmod_v2.5.1を解凍し、C:\AviSynth\2.5\AvsPmodに配置
  2. AvsPmod.exeを実行し、[Option]->[Program settings…]->[Misc]->[Language]->「日本語」に変更し再起動
  3. [オプション]->[プログラム設定…]->[パス]を開く
  4. [カスタム Avisynth ディレクトリを使用 *]にチェックを入れる
  5. [カスタム Avisynth ディレクトリ: *]に”C:\AviSynth\2.5”を設定
  6. [Avisynth ヘルプファイル/URL:]に”C:\AviSynth\2.5\Docs\Japanese\index.htm”を設定

導入完了

[HKEY_LOCAL_MACHINE\SOFTWARE\AviSynth]の最終状態

SOFTWARE_AviSynth

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\AviSynth]の最終状態

SOFTWARE_Wow6432Node_AviSynth

3環境が動作しているスクリーンショット

Avisynth SS

Windows7 64bit に Avisynth エンコード環境を構築する(4)

よくよく考えてみると、レジストリの記述としてはAvisynth 2.6がplugindir2_5を参照しているのがすっきりしない。
というわけで、実際に利用するAvisynth 2.6 MTのavisynth.dll内にplugindir2_5の記述を探してをplugindir2_6にできないかみてみる。

バイナリエディタで文字列検索

とりあえず、”2_5”で検索してみる・・・

バイナリエディタ画面

はい、あっさり見つかりましたね。
ほかに該当部分ないし、とりあえず、ここを下記のように書き換えて実験してみましょう。

* MD5 852068A8926AE91BF9B15B499A67AD7D *
FILENAME avisynth.dll
00135987: 35 36

使用ソフト

レジストリの追加

avisynth.dllのレジストリキー名を書き換えたので下記のレジストリを追加します。

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\AviSynth]

plugindir2_6 = C:\AviSynth 2.6\plugins

2.6用プラグインのパスを格納

フォルダの追加

レジストリに記載したとおり、Avisynth 2.6 MT用のプラグインフォルダを作成

C:\AviSynth 2.6\plugins

結果

無事動きました!

というわけで、次回は新規インストールで環境を作れるように手順を書きます。

方向性としては、めんどくさくてもしっかりと環境を作ります。

まぁ、環境づくりに必要な情報はここまでに書いているので次回は構築例って感じです。

Windows7 64bit に Avisynth エンコード環境を構築する(3)

とりあえず、わかる範囲で調べて推理してみる。

Avisynthの動作イメージ

Avisynth は、フレームサーバーということで、読み込みは大まかに下記のようになっているはず。
Avisynth動作概念図

  1. 32bit ApplicationでAVSファイルを読み込む
  2. 32bit Applicationからの呼び出しなのでAvisynthも32bitのほうが呼ばれる(Windowsの動作)
  3. avisynth.dll(32bit)は、レジストリに記録されているプラグインフォルダをオートロードする
  4. avisynth.dll(32bit)は、AVSファイルに書かれているソースを読み込み、AVSファイルの記述どおりに処理をしながら32bit Applicationにデータを返す

Avisynthのレジストリアクセス先

こちらもこんな感じになっている

Avisynth 2.5.8

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\AviSynth]
(規定) = C:\AviSynth 2.5
インストールパスを格納
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\AviSynth]plugindir2_5 = C:\AviSynth 2.5\plugins プラグインのパスを格納

Avisynth 2.5.8 MT 64bit

[HKEY_LOCAL_MACHINE\SOFTWARE\AviSynth]
(規定) = C:\AviSynth 2.5\plugins
プラグインのパスを格納
[HKEY_LOCAL_MACHINE\SOFTWARE\AviSynth]
plugindir2_5 = C:\AviSynth 2.5\plugins64
プラグインのパスを格納

Avisynth 2.6

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\AviSynth]
(規定) = C:\AviSynth 2.5
インストールパスを格納
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\AviSynth]
plugindir2_5 = C:\AviSynth 2.5\plugins
プラグインのパスを格納

上記を見てのとおり、Avisynth 2.5.8とAvisynth 2.6は完全に衝突している。(ま、そうだろうね。現時点でAlpha5だし。)
逆に、Avisynth 2.5.8 MT 64bitは64bitのためレジストリも64bit側が呼ばれるため独立しているからそのままでよさそう。

というわけで、Avisynth 2.5.8とAvisynth 2.6のavisynth.dll内のレジストリキー指定箇所を探してみる。

Windows7 64bit に Avisynth エンコード環境を構築する(2)

たぶんこんな感じでできるんじゃないかな??

全体手順予想イメージ

  1. Avisynth25をインストール
    1. Avisynth25のインストールをD:\Avisynth\2.5.8(以降2.5.8\)にインストール
      (プラグインを操作しやすいようにデフォルトではなくUACで保護されていないフォルダにインストールする。)
  2. Avisynth25MT_x64をインストール
    1. 2.5.8\plugin64(以降plugin64)にAvisynth25MT_x64で利用する64bit用のDLLを入れる
    2. Avisynth25MT_x64でエンコードできることを確認する(処理FPSを比較用にメモ)
  3. Avisynth25をAvisynth25MTに変更
    1. Avisynth25MTを指示通りにインストール
  4. Avisynth25MT_x64と同じプラグインを用意したAvisynth25MTを利用してAvsPmod用環境を作る
    1. 2.5.8\にAvisynth25MTのavisynth.dll(C:\Windows\SysWOW64\avisynth.dll)をコピー
    2. 2.5.8\plugin(以降plugin)にplugin64に用意したDLLの64bit用のDLLを入れる
    3. AvsPmodを2.5.8\AvsPmodに格納
    4. AvsPmodで2.5.8\avisynth.dllを利用するように設定する
    5. AvsPmodでAvisynth25MT_x64でエンコードしたAVSファイルがプレビューできることを確認
    6. Avisynth25MT_x64でエンコードできることを確認する(処理FPSを比較用にメモ)
    7. 2-2のFPSと4-6のFPSがほぼ一致していることを確認してAvisynth25MT_x64で動いていることを確認
  5. Avisynth26MTを別途作成する
    1. Avisynth2.6のインストールをD:\Avisynth\2.6(以降2.6\)にインストール
    2. Avisynth26MTを指示通りにインストール
    3. 2.6\pluginにAvisynth26MTで利用するDLLを入れる
    4. AvsPmodを2.6\AvsPmodに格納
    5. AvsPmodでAvisynth26MTにしか入っていないDLLを利用したAVSファイルがプレビューできることを確認
    6. Avisynth26MTでエンコードできることを確認する
    7. Avisynth25MT_x64で5-5で使ったAVSファイルをエンコードしてエラーになることを確認する

で、こうやって書き出していて、気になる点を抽出。

要調査

  • Avisynth25MTとAvisynth26MTはどこを参照してプラグインフォルダを認識しているか
  • Avisynth25MT_x64は64bit動作のため32bitと関係なく動くことに間違いはないか

根本的なことを調べてなかった。
Avisynthの動きをある程度確認しないと。

Windows7 64bit に Avisynth エンコード環境を構築する(1)

タイトルは新規でインストールするように感じるかも知れないけど、実際は環境を再構築です。

目標

  • x264 64bit + Avisynth 2.5.8 MT 64bitx264 64bit + Avisynth 2.6 MT 32bit のエンコード環境を共存させる
  • Avisynth 2.5.8 MT 64bit 用のAVSファイル編集に AvsPmod を使えるようにする

この二つをクリアしたいのだけれど、正直、できるのかね?
主なエンコードはx264 64bit + Avisynth 2.5.8 MT 64bit(以降Avisynth25MT_x64)で行うけれど、
特殊なエンコードを行うときは対応プラグインの多いx264 64bit + Avisynth 2.6 MT 32bit(以降Avisynth26MT)を使いたい。
そして、AvsPmodでプレビュー見ながら作業したい。とりあえず、実現できそうかどうか考えてみた。

解決案

  1. Avisynth 2.5.8 32bit(以降Avisynth25)をインストール
  2. Avisynth25MT_x64をインストール
  3. Avisynth25をAvisynth 2.5.8 MT 32bit(以降Avisynth25MT)に変更
  4. Avisynth25MT_x64と同じプラグインを用意したAvisynth25MTを利用してAvsPmod用環境を作る
  5. Avisynth26MTを別途作成する

こんな感じで動かないかな?
Avisynth25MT_x64とAvisynth25MTを同じプラグインを用意して、
AvsPmodはAvisynth25MTを、 エンコードはAvisynth25MT_x64を利用する。
(もちろん64bit環境は64bit版で用意する。つまり、32bitと64bitの両方があるプラグインしか利用できない。)
とりあえず、これをもうちょっと詳細にしてみる。