mattintosh note

どこかのエンジニアモドキの備忘録

Wine で MPEG-1 ムービーが再生できない場合の対処方法

MPEGSplitter_query_accept MPEG-1 system streams not yet supported. エラーの回避方法。

Wine で Windows ゲームを実行したときにゲーム内のムービーが正しく再生されないことがある。これは Wine 内蔵の quartz.dllMPEG-1 ビデオの再生に対応していないため。

fixme:quartz:MPEGSplitter_query_accept MPEG-1 system streams not yet supported. fixme:quartz:AMGetErrorTextW (80004005,0x33ddb0,160) stub

ネイティブの quartz.dll は以下の方法で入手することができる。

  • Winetricks を使用する
  • DirectX エンドユーザランタイム(February 2010)を使用する
  • Windows XP Service Pack 3 ネットワークインストールパッケージを使用する

Winetricks を使用して quartz.dll をインストールする場合

winetricks quartz

ライブラリのオーバライド設定と regsvr32.exe による登録は Winetricks が行うため不要。

DirectX エンドユーザランタイム(February 2010)を使用する場合

Winetricks は DirectX エンドユーザランタイム(February 2010)からライブラリを抽出している。このランタイムは日本語サイトからは既に削除されているので英語サイトからダウンロードする。

curl でダウンロードする場合。

curl -O http://download.microsoft.com/download/E/E/1/EE17FF74-6C45-4575-9CF4-7FC2597ACD18/directx_feb2010_redist.exe

p7zip や cabextract を使用してファイルを展開する。Wine 上で 7-Zip などのアーカイバを使用してもかまわない。quartz.dlldxnt.cab に含まれている。

7z x directx_feb2010_redist.exe dxnt.cab
7z x dxnt.cab quartz.dll

展開した quartz.dllC:\\windows\\system32 へコピーする。

引き続きライブラリのオーバライド設定を行う。

Windows XP Service Pack 3 ネットワークインストールパッケージを使用する場合

7z x WINDOWSXP-KB936929-SP3-X86-JPN.EXE i386/quartz.dl_
7z x quartz.dl_

展開した quartz.dllC:\\windows\\system32 へコピーする。

引き続きライブラリのオーバライド設定を行う。

ライブラリのオーバライド設定

wine regedit - <<!
[HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides]
"quartz"="native"
!
wine regsvr32 quartz.dll