投稿者「yobane@WebAdmin」のアーカイブ

yobane@WebAdmin について

対人恐怖な引籠りシステムエンジニア。 C#やJavaで仕事していても趣味ではDelphiな人。 基本何でもやる人でHTML/CSSの実装やUI/UX絡みと戯れていたかと思えば、 Javaでバッチを作ったり、C#でクライアントアプリケーションを作ってみたり。 趣味は3DCGや写真なんかの鮮やかなもの。 読書や散歩などおとなしいものが好き。 あとは食べて寝ていられればそれが幸せ。

[Tool]Windows入り仮想ストレージファイルを圧縮する(VMware)

前回の記事を実行した後に行うと場合によっては数GBほど小さくなります。

手持ちのVMwareはVMware Workstation 10だけれどもVMware Playerにも同じ機能がついてたと思うので探してみてください。

手順

  1. 仮想マシンを選ぶ
  2. 「仮想マシンの設定を編集する」を押下し、設定画面を開く
  3. 「ハードディスク」を選択
  4. (「ユーティリティ」を押下し、「ディスクの最適化」を実行)
  5. 「ユーティリティ」を押下し、「圧縮」を実行
  6. 「ユーティリティ」を押下し、「ディスクの最適化」を実行
  7. (ホスト側でディスクの最適化を実行)

注意

  • 手順4は個人の判断でお願いします。
    「ディスクの最適化」の詳細はわかりませんがディスクパフォーマンスを向上させることが目的なので、
    仮想ストレージファイルに何らかの処理をしてるのでは?と思い、一応実行しています。
  • 手順7は最高のディスクパフォーマンスを得たい場合に実行してください。
  • 手順4~7は時間がかかります。
  • 以下の場合は実行できません。
    • 対象仮想マシンが実行中の場合
    • スナップショットが存在する場合

[Tool]Windows入り仮想ストレージファイルを圧縮する(下処理)

VMwareやVirtualBoxで可変サイズの仮想ストレージ(仮想HDD)を少しでも小さくするための下処理です。

可変サイズの仮想ストレージのイメージファイルは、作成時は非常に小さなサイズですが仮想マシンのディスクの使用量により肥大化し、最終的には指定したディスクサイズまで大きくなります。
そして肥大化した仮想ストレージ内のファイルを整理し、削除してもイメージファイルが小さくなることはありません。
つまり、一度イメージファイルの領域を広げてしまうと未使用分の領域も確保されたままになり、自動的に小さくなることはありません。
そのため、手動で仮想ストレージのイメージファイルを圧縮します。

対象となるゲストOSはWindows XP以上を対象としています。(使っているソフトウェアの制限であり、原理は応用可能です)

原理

原理は単純です。

仮想ストレージ内のデータをできるだけ一か所に集め、未使用箇所は0x00を書き込む。

これだけです。
NTFSではファイルを削除する場合、実際にはファイルのインデックス情報を削除するだけで、ファイルの実体は削除されません。
そのため、未使用領域には意図的に0を書き込みます。

実践

使用するソフト

手順

  1. JkDefrag.exe –a 5 でデータを詰める
  2. JkDefrag.exe –a 3 でデータを最適化
  3. JkDefrag.exe –a 5 でデータを詰める
  4. CClean で空スペースを抹消を実行

たったこれだけですが、仮想ストレージのサイズが大きいと時間がかかります。

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の両方があるプラグインしか利用できない。)
とりあえず、これをもうちょっと詳細にしてみる。

[CGO]CGOptimizer麦茶v1.0.0

CGOptimizer麦茶の正式版を公開します。

Download(CGOptimizer.zip)

Beta3からの更新は下記のとおりです。

  • JpegOptim処理結果をJpegtranの欄に表示していた不具合の修正
  • コマンドオプション手動入力欄の有効/無効が正しく動作していない不具合を修正
  • 「PNGRewrite」と「cPNGC」のタブを統合し「その他」のタブへ変更
  • プログレスバーを追加
  • helpファイルの作成

外部ソフトウェアのうち更新が止まっているもの、効果が期待できないものは次回のバージョンで削除します。

[ZCFS]ZenCoding for SakuraEditor Ver 0.1.1

ZenCoding for SakuraEditor を更新しました。

更新内容

  • Zen-Coding for SakuraEditor Plus ver 1.0.1を取り込み
    • “html:5″の展開コードを修正
  • サクラエディタのマクロ命令の表記を統一
  • CSS展開機能の動作条件を変更

Download(Zen.Coding-SakuraEditor.v0.1.1.zip)

Zen-Coding for SakuraEditor Plus ver 1.0.1はZenCoding for SakuraEditor Ver 0.0.6に隠居小屋さまが機能追加および修正を行っていただいたものです。