[PR]今日のニュースは
「Infoseek モバイル」

DivXの共存

このページは一切無保証。

2003/04/20

【目的】 任意のバージョンのDivXコーデックを動画作成に使用する。
【問題】 再生や編集ソフトでの読み込みは旧バージョンでは正しくデコードできない。


方法1

再生だけ ffdshow などの別のデコーダを使用し、DivXは旧バージョンをインストールする。
この方法は編集ソフトでの読み込みに問題が生じる。編集ソフトでの読み込みはDSフィルタでなくVFWコーデックを使用するため、最新版で作成されたファイルを編集することができなくなる。

方法2

再生用DSフィルタ(divxdec.ax)と作成用コーデック(divx.dll)を別バージョンで使用する。
編集ソフトのフォルダに任意の divx.dll を入れるか、システムフォルダに上書きする。この方法も編集ソフトでの読み込みに問題が生じる。DivXのバージョンごとに複数の編集ソフトをインストールしてDLLをフォルダに入れれば解決するかもしれないが、使い分けが混乱しそうである。5.0.3を読み込んで5.0.2で出力することもできない。

方法3

FourCCとファイル名を変えて複数のバージョンをインストールする。
自分でINFファイルを書くか手動でインストールすれば何個でも共存させることができる。ただし作成した動画のFourCCが変わってしまうので、FourCCを直さないと環境によっては再生できない可能性がある(特にWindows以外の環境でどうなるかわからない)。編集ソフトによっては正常に作動しない(TMPGEncは駄目)。
ここではこの方法を紹介する。

VirtualDub の選択画面


予備知識

FourCC


左がDivX5.x、右がDivX4.x の本来のFourCC。二箇所のFourCCのうち二番目が再生時のデコーダを指定する。


共存インストールしたDivX5.0.2でエンコードしたファイル。システムへ登録したFourCCはd502で、DX50はコーデックが勝手に書き出してくれる。このままでもWMPで再生できるが d502/DX50 を divx/DX50 に直しておいたほうがいい。ツールを使えばFourCCを自由に書き換えることができる。

システムへの登録方法

VCMとDirectShowFilterのシステムへの登録方法の基本はこちら

INFの書式

Creating an INF File
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/install/hh/install/create-inf_4l47.asp
INF Version Section
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/install/hh/install/inf-format_2fzm.asp


DivXの共存

DivXのDLL

DivX5.x(Adware版)がインストールするDLL
ファイル名機能4.x5.05.0.15.0.25.0.3SchizoBeta5.0.4
divx.dllVFWコーデック(VCM)本体
mp4fil32.dllMPEG-4 file reader/writer××××
PSIKey.dll詳細不明××××××
divxdec.ax再生用DSフィルタ

mp4fil32.dll のレジストリ
HKEY_CLASSES_ROOT\CLSID\{634f0d74-0dda-4344-be44-8b1c35ee3296}
5.0.2をインストールした状態でエクスポートしておく。

INF形式にした物
HKCR,CLSID\{634f0d74-0dda-4344-be44-8b1c35ee3296},,,"MPEG-4 file reader/writer"
HKCR,CLSID\{634f0d74-0dda-4344-be44-8b1c35ee3296}\AVIFile,,,3
HKCR,CLSID\{634f0d74-0dda-4344-be44-8b1c35ee3296}\InprocServer32,,,mp4fil32.dll
HKCR,CLSID\{634f0d74-0dda-4344-be44-8b1c35ee3296}\InprocServer32,ThreadingModel,,Apartment

インストール

これを書いている時点での最新版は5.0.4。ここから下は最新版と5.0.2を共存させる場合で説明する。Adware版の使用が前提。
5.0.2を普通にインストールした状態でシステムフォルダから divx.dll と mp4fil32.dll をコピーして保存、レジストリはエクスポートしておく。

インストールするファイル
最新版の
divxdec.ax
プレーヤーでの再生、および一部の編集ソフト(Windows Media エンコーダなど)での読み込みに使用する。最新版を使わないと正常にデコードできない。
最新版の
divx.dll
一般的な編集ソフトでの読み込みに使用する。最新版を使わないと正常にデコードできない。FourCC(DIVX)を変えてはいけない。もちろんエンコードもできる。
5.0.2の
divx.dll
エンコードおよび.mp4コンバートに使用する。ファイル名が重複しないように divx502p.dll のようにリネームしておく。FourCCは DIVX 以外にしてインストールする。
5.0.2の
mp4fil32.dll
これが無いと.mp4コンバート(Advanced Parameters の DivX MP4 Creator)ができない。5.0.3以降はなくなったのでファイル名は変えなくていい。

通常の場合は最新版をインストーラからインストールし、5.0.2の二つのDLLだけを手動でインストールすればいい。INFを使う場合は適当なINFを書き換えるだけでも使えるが、INFの書式を研究するよりはレジストリに直接書き込んだほうが早いかもしれない。mp4fil32.dll はシステムフォルダに入れて前述のレジストリを書き込む。


動画再生