Wine+Media Playerを使ってみる
 

2003-01-12
私 はこれまで、Media Playerコンテンツを再生するため、mplayerを使ってきました。しかしながら、小耳にはさんだところによると、Wine上でMedia Playerが動作可能だというのです。この話については、以前にも聞いたことがあり、やってみたことがあったのですが、そのときは見事撃沈しました。失 敗の最大の原因は私のスキルの低さにありますが、その頃のWineはまだまだの状況だったようです。ところが現在では、Wineもだいぶこなれてきまし た。かつてのWineでは日本語を表示させるだけでたいへんだったのですが、今ではなんの設定もなしにちゃんと日本語を表示してくれます(半角カナ、日本 語入力にはまだ難有り)。

そこで、ふたたびMedia Playerです。現時点でのmplayerによるMedia Playerコンテンツの再生は完全ではありません。接続できないサーバがあり、時折、音声や映像がスムーズに再生できないコンテンツが存在します。も し、Wine上でMedia Playerが動けば、それらの不具合からも開放されるかもしれません…、そう、そして私は開放されたのです。以下が、その記録です。残念 ながら私は、Windowsに関してはまったくの素人同然なので、正確な検証ができないのですが、とにもかくにも、Media Playerコンテンツの再生に関しては、ほぼ完璧だと思います(…なんてことを思っていたのですが、ここで紹介しているMedia PlayerはWindows95のものなので、最近ではけっこう支障が出ています。Windows95上で再生できないものは当然、どうにもなりません、2004年7月21日追記)

1. Wineのインストール
2. Windowsパーティション
3. 設定
4. mozillaからの起動
5. 問題点およびトラブルシューティングについて
6. 終わりに
 
1. Wineのインストール
ま ずはじめに環境についてですが、OSはVine Linux 2.6r1フルインストールです。検証はしていませんが、その他のディストリビューションでも、Wineのrpmが用意されているディストリビューション ならば、そのrpmをインストールするだけで、おそらく問題はないと思います。また、ここで使われているWindowsは、Windows 95(4.00.950.a)で、Media Player 6.4です。ハードは、CPU P2 400MHz,RAM 384MBです。

もちろんWineは非常に奥の深いモノですが、ここではMedia Playerのみに特化した話題となります。何分、私はWindowsというものがわかっていないし、必要でもないので御容赦のほどを。

Wineのインストールはきわめて簡単です。Vine linux 2.6r1の場合、とりあえずarts-1.0.5a-0vl1とarts-devel-1.0.5a-0vl1をVine Plusからもってきてインストールしておきます。

$su
#rpm -ivh arts-1.0.5a-0vl1
#rpm -ivh arts-devel-1.0.5a-0vl1
#exit

あとは、Wineのサイト(http://www.winehq.com/)からソースを持ってきてmakeしてインストールします。私がここでインストールしたのは、wine-20021219.tar.bz2です。

$tar xjvf wine-20021219.tar.bz2
$cd wine-20021219
$./configure
$make depend && make
#su
#make install
#exit

で終わりです。コンパイルには少々時間がかかります。気長に待ちましょう。

rpmを作りたい方は、wine.specを任意のRPM_SPEC_DIRにコピーして、wine-200xyyzz.tar.gzをRPM_SOURCE_DIRにコピーし、wine.specの一行目をリリース番号(日付け)にあわせます。

%define version  200xyyz

artsをインストールしてない場合は、artsをインストールして

$su
#rpm -ivh arts-1.0.5a-0vl1
#rpm -ivh arts-devel-1.0.5a-0vl1
#exit

ビルドします。

$rpm -ba rpm/SPECS/wine.spec
$su
#rpm -Uvh rpm/RPMS/i386/wine-20030107-0.i386.rpm
#exit

こんな感じで終わりです。とくに難しいことはなにもないと思いますが、これらのビルドでは、ソースツリーがなんと400MB以上にふくれあがるのでディスクの空き容量には注意が必要です。
 
2. Windowsパーティション

Wineは最終 的にはWindowsそのものを必要としないのが建前です。とは言え、そう簡単にはいかないのが世の常です。私の持っているWindows 3.1用のゲーム類は、nativeなWindowsがなくても平気のようですが、Media Playerは残念ながら、そうはいかないようです。というわけで、nativeなWindowsをLinuxのファイルシステム上に持ってくる必要があ ります。さて、ここでどうするかです。個人的には、WindowsのC:をまるごとLinuxのパーティション上にコピーしてしまって、そこをWineの C:としてしまうことを勧めたいと思います。たとえばデュアルブートの環境でC:をmountしてそれをWineのC:とするのは、危険だとは思いません か?

しかし、私のようにC:が100MBちょっとしかない場合はまるごとコピーも簡単ですが、そうでない場合はどうすればいいんでしょうか?ここらへんは Windowsに詳しい人に聞いてください。私にはわかりません。とりあえず、C:\WINDOWSがあれば問題がないようです。あと当然、C:\ Program Files\Windows Media Player\です。削れるものは削れそうですが、何分、Windowsビギナーの私にはよくわかりません。ディスク容量や手間暇といったものと相談して 色々やってみてください。
 
 
3. 設定

Wineの設定は、~/.wine/configで行います。必要な設定は、Wineにおける各ドライブの設定のみ…と言っても過言ではないぐらい簡単で す。configファイルはけっこう大きいのであまり簡単そうには見えないかもしれませんが、各ドライブの設定以外はほとんどデフォルトで問題ないと思い ます。このconfigファイルの雛型は、makeでインストールしたときは、documentation/samples/configで、先述した rpmの場合は、/usr/share/doc/Wine-200yxxzz/documentation/samples/configです。以下は、私のconfigファイルのドライブ設定です。設定といっても 雛型からパスだけを自分の環境に書き換えただけです。
 
なお、ファイル名、ディレクトリ名の大文字、小文字の違いがWindowsでどう扱われ、Linux上でどう反映しているかについては私はまったくわからないので、各自、適宜対応してください。

[Drive A]
"Path" = "/mnt/floppy"
"Type" = "floppy"
"Label" = "Floppy"
"Filesystem" = "win95"
"Serial" = "87654321"
"Device" = "/dev/fd0"

[Drive C]
"Path" = "/home/yoshino/tmp/win95"
"Type" = "hd"
"Label" = "MS-DOS"
"Filesystem" = "win95"

[Drive D]
"Path" = "/mnt/cdrom"
"Type" = "cdrom"
"Label" = "CD-Rom"
"Filesystem" = "win95"
; make sure that device is correct and has proper permissions !
"Device" = "/dev/cdrom"

[Drive E]
"Path" = "/tmp"
"Type" = "hd"
"Label" = "Tmp Drive"
"Filesystem" = "win95"

[Drive F]
"Path" = "${HOME}"
"Type" = "network"
"Label" = "Home"
"Filesystem" = "win95"

各ドライブの設定が終わったら、次はデフォルトの設定に合わせ、そのディレクトリを作ります。別にこれらのディレクトリを作らなくとも、Media Playerについてだけ言えば、まったく問題はないようですが、気持ちが悪いので作っておきましょう。

[wine]
"Windows" = "c:\\windows"
"System" = "c:\\windows\\system"
"Temp" = "e:\\"
"Path" = "c:\\windows;c:\\windows\\system;e:\\;e:\\test;f:\\"
"Profile" = "c:\\windows\\Profiles\\Administrator"
"GraphicsDriver" = "x11drv"
;"ShowDirSymlinks" = "1"
;"ShowDotFiles" = "1"
"ShellLinker" = "wineshelllink"

すでに、"c:\\windows"と"c:\\windows\\system"はあると思うので、新しくつくるのは"c:\\windows\\ Profiles\\Administrator"ぐらいです。また、実害はないのですが、"c:\\windows\\Fonts"がないと起動時にエ ラーメッセージが出てきます。気になる人はこれも作っておきましょう。まぁ、たぶん、すでにあると思いますが…。

そして、このページのキモ、Media Playerを動かすためのdllの設定です。

"quartz" = "native, builtin"
"devenum" = "native, builtin"
"msdmo" = "native, builtin"
"urlmon" = "native, builtin"

上記の四行を

"*" = "builtin, native"

の前に入れてください。都合、以下のようになります。
 
"quartz" = "native, builtin"
"devenum" = "native, builtin"
"msdmo" = "native, builtin"
"urlmon" = "native, builtin"
"*" = "builtin, native"

これら、dllの設定はWineのヴァージョンによって異なる場合があるので、もし、なにかエラーを出してくるようだったら、そのエラーに合わせて、書き変えてみて下さい。

2004.2.28 追記
wine-20040213では、雛型の下記部分を

"oleaut32" = "builtin, native"
"ole32" = "builtin, native"

         

"oleaut32" = "native, builtin"
"ole32" = "native, builtin"

と、する必要があるようです。ついでにwine -20040213は、alsa-1.0.2ではうまくいかないようです。私の環境、sb16ではMedia Playerを起動させることができても再生はできませんでした。ちなみにkernel付属のOSSだと、Media Playerを起動するたびにPCMのヴォリュームが最大になってしまうようです。

2004.6.28 追記
上記、alsaドライバで音声を再生できない問題は、sb16のドライバに起因する問題のようです。es1983に変更したところ、再生可能でした。ただし、Media Player起動ごとにPCMのヴォリュームが最大になってしまう不具合(?)はOSSと共通です。

最後にフォントの設定です。Wineのconfigファイルで設定したC:にWindowsから持ってきたC:\windows\Fontsがある場合は、デフォルトのままの設定でもかまいませんが、とりあえず以下の行をアンコメントします。

;"dir1" = "/usr/X11R6/lib/X11/fonts/TrueType"

上記の行の『;』をはずして以下のようにしてください。

"dir1" = "/usr/X11R6/lib/X11/fonts/TrueType"

このパスは、Vine 2.6では対応していますが、そうでない場合は各自対応してください。ただし、このパスを変更すると起動できなくなる場合があるようですので、気をつけて ください。もっとも、ちゃんとした"C:\\windows\\Fonts"さえあればフォント関連で問題が生じるようなことはないようなので、現実的な 問題にはなりえないとは思います。なんらかの理由でマイクロソフトのフォントを使いたくない場合でも、"C:\\windows\\Fonts"に、 Wineから明朝もしくはゴシックと認識できるTrueTypeフォントさえあれば、問題は生じないようです。kochi-mincho.ttf、 kochi-gothic.ttfもこの条件を満たしますが、"C:\\windows\\Fonts"のフォントとして使うときは、リンクではなく必ず コピーするようにしてください。

また、Wineに関する記事等に、Wine初回起動時はcachedmetrics作成のためしばらく時間がかかるというような記述が出てくることがあり ますが、configファイルでTrueTypeフォントがあるディレクトリが有効になっている場合、および、ちゃんとした"C:\\windows\\ Fonts"がある場合、つまり有効なTrueTypeフォントがあるディレクトリが、Wineに見えている場合は、cachedmetricsは作成さ れません。日本語を有効に表示するには、なんらかの方法でTrueTypeフォントがあるディレクトリがWineから見えなくてはいけないので、ここで cachedmetricsが作成されないのは正常な動作です。

逆に言えば、cachedmetricsが作成されるということは日本語が表示できないということと同義です。cachedmetricsが作成されるよ うであれば、設定を再確認してください。また、どうしても、cachedmetricsが作成されるのが見たいという人は、WineのC:\ windows\Fontsを削除または空にし、かつ、configファイルからTrueTypeフォントのディレクトリが書いてある行をすべてコメント アウトして、Wineを再起動させれば、cachedmetricsは作成されます。もちろん無意味ですが…。

Wineは現状、特別なことをしなくとも、半角カナと日本語入力以外は問題がないところまできているようです。ただし、これはWineの問題ではありませ んが、Windowsオリジナルのフォントがないとフォントの表示される位置がずれるときがあります。気になる人は、やはり、C:\windows\ Fontsも持ってきた方がいいんじゃないかと思います。
 
これで、最低限の設定は終わりです。あとは各自、マニュアルとにらめっこしてください。では、ちょっと起動してみましょう。

$ wine /home/yoshino/tmp/win95/Program\ Files/Windows\ Media\ Player/mplayer2.exe

さぁ、どうだったでしょうか?SuSEのrpmでインストールした場合、初回起動時にconfigファイルの設定を行うGUIが起動するようですが、ここまで設定してきたことを上書きされないよう注意してください。

めでたく起動するようだったら、適当にファイルを開いて再生してみましょう。たまに映像は出ているのに音が出ないときがありますが、二回目の再生からはだいじょうぶなようなので、そういうときは落ち着いてやり直してください。なお私の手元にあるmpeg、Quick Timeのいくつかは音がぶつ切れでまともに鳴りませんでした。また、サポートされていないフォーマットに出会うと動的にそのcodecをweb上からダウンロードしようとする機能は動作しないようです。"urlmon" = "native, builtin"がその機能の一部をになっていますが、現状では正常に動作しないので、この設定は無意味と言えば無意味です。これがあるとエラーは吐かなくなりますが、ダウンロードしようとしたまま、動かなくなってしまいます。
 

screen shot of Media Player on WINE これがスクリーンショットです。タイトルバーの文字がちょっとだけ文字化けしているのは、御愛敬。リンクは800x600のフルサイズ画像になっています。 
 

4. mozillaからの起動
 
mozillaからの起動はいたって簡単です。ここでの要点は、マイクロソフトが提唱し ているASXファイルの扱いになります。ASXファイルは、Media PlayerコンテンツのURLを含む十行前後の小さなテキストファイルです。多くの場合、Media Playerコンテンツへのリンクは、このASXファイルになっています。つまり、Media Playerコンテンツへのリンクを開くと、コンテンツそのものではなく、このただのテキストファイルでしかないASXファイルを開くことになります。 Media Playerは、このASXファイルを開き、そこに書いてあるURLを読み込んでコンテンツの再生を行うわけです。mozillaは、このASXファイル を/tmpにダウンロードし、その/tmp/hoge.asxをアプリケーションにわたします。mplayer2.exeは/tmp/hoge.asxと いうUnixライクなパスは読めないので、mplayer2.exeにも読めるようにしてやらねばなりません。具体的には以下のようなスクリプトで、 /tmp/hoge.asxをe:\hoge.asxに変換してやります。

#!/bin/sh
ASX=e:'\\'`echo $1 |cut -d'/' -f3`
wine /home/yoshino/tmp/win95/Program\ Files/Windows\ Media\ Player/mplayer2.exe $ASX

これを適当な場所に保存します。もちろん、mplayer2.exeのパスは自分の環境に合わせてください。また、仮にこのファイルをmplayer2.shとすると

$chmod 755 mplayer2.sh

こんな感じで実行権限をつけることをお忘れなく!

ここで、e:は/tmpになります。これは、~/.wine/configで設定することになりますが、たぶんデフォルトでそうなっているはずです。な お、このスクリプトには、バックスラッシュ、クォート、バッククォートなど間違いやすいものが満載ですので写すときは気をつけてください。しかし、ディレ クトリ名、ファイル名に空白を使うのはやめてほしいと思っているのは私だけでしょうか…。とにかく間違いやすくてしかたがないです。
 
次にmozilla側の設定です。Edit->Preferences->Navigater->Helper ApplicationsでNew Typeを登録します。





































an image of new type dialog おおむね左記のようにします。Application to use:だけは最初に作ったスクリプトを自分の環境に合わせて指定します。Chooseから選択することができます。

これが完了するとHelper Applicationsにvideo/x-ms-asfが登録され、ASXファイルヘのリンクをクリックするとこのスクリプトを実行するかどうかmozillaが聞いてくるようになります。まぁ、登録しなくても、どうするかは聞いてはきますが…。

最近のメタファイル(ASXファイルのようなもの)には、waxというものもあるようです。本質的にASXファイルと同じものなので、これも登録 しておくといいでしょう。拡張子は、wax、MIMEタイプは、audio/x-ms-waxになります。使用するアプリケーションは、ASXファイル同 様でかまいません。

さて、mozillaからMedia Playerを動かすことは難しくはないのですが、mozillaに関する制限が二つあります。一つはMIME typeがapplication/x-mplayer2のコンテンツは視聴できないこととmmsサーバのURLへ直にリンクがはってある場合、 mozillaはなにもしてくれないことです。直リンクの問題は、リンク先を手打ちまたはコピーしてターミナルから別に動かしてやれば再生は可能ですがと ても面倒です。確か、マイクロソフトは、ASXファイルの使用を推奨していたはずなので、Media Playerコンテンツの配信者の方々には、それを徹底してもらいたいものです。もしくは、mozillaになんらかの対応をとってほしいものです。

ついでと言ってはなんですが、httpなサーバ上にあるwmvやwmaのファイルについてもふれておきます。wmvやwmaのファイルはhttpサーバ上 にはないのが普通です。ただし、個人でwmvやwmaなコンテンツを公開している場合は別で、この場合はhttpサーバ上にあるのが普通でしょう。もっと も、mplayer2.exeにしてみれば、mmsサーバもhttpサーバも違いはないので、この場合でも、ASXファイルを使ってくれてさえいれば面倒 はありません。ただし、まれにナマのファイルにリンクをはっているケースもあったりします。この場合、mplayer2.exeにアドレスを教えてやる か、一旦、ダウンロードしてから再生するかということになってしまいます。まぁ、mmsサーバに直リンクをはられるより、httpの方が通常のダウンロー ドが効く分、楽な気はしますが、なにか腑に落ちないのがホントのきもちです。

本筋は、wmaやwmvなコンテンツのときは、httpサーバがそれにふさわしい"Content-type"を出し、ブラウザ側もそれに合わせて対応す ることなのですが、現状はそうなっていないことがほとんどのようです(そもそも、wmaやwmvなコンテンツはhttpサーバ上には存在しないという前 堤だったりするのでしょうか…?)。ほとんどの場合、wmaやwmvのときは、"Content-type"はtext/plainとなるようです。実際、このサーバ(www.karing.jp apache-1.3.27-0vl2)もそうなっています。

mozillaはストリーミングでヘルパーアプリケーションにわたせるよう実装されていますが、それよりもリンクのURLをアプリケーションにわたせるよ う実装する方がはるかに簡単だし、かつはるかに実用的であるように私には思えます。そもそも、ASXファイルの使用をマイクロソフトが推奨しているのも同 様の考え方によるもののはずです。ある特定の拡張子がついたURLへのリンクは、そのURLをヘルパーアプリケーションにわたしてくれるといった設定はで きないものなのでしょうか。そうすれば、相手側のお行儀もあまり気にせずにすむようになるだろうし、mozillaにもそこらへんを考えてもらえるとうれ しいんですが…。

 
5. 問題点およびトラブルシューティングについて

これまで、いくつかWine+Media Playerで生じる不具合を取り上げました。再確認してみると、mpeg、Quick Timeの一部のもので音声がスムーズに再生されず、ぶつ切れになること、ストリーミング再生以外のネットワーク機能が動作しないこと、初回起動時に音声が出ないことがあることなどです。また、Media Playerのメニューのうち、オプションとネットワーク関連は実行できないようです。

これら実行できないメニューを実行させるとMedia Playerを正常終了できなくなるときがあります。エラーが起きるとつい何度も再起動させたりしたりするものですが、そうしているうちにWineが突然 起動しなくなったりします。これは正常終了できなくなったWineのプロセスがたまってしまうことが原因で、この場合は、これらのプロセスを強制終了させ ることで、再びWineが使えるようになります。とりあえず、

$ps ax

で動いているプロセスを確認し、wineがたくさん起動しているようだったら、

$killall wine

としてきれいにしてやりましょう。これで再び起動できるようになるはずです。その他のエラーでも同様の状態になることがあるので、そのときも同様に、killall wineを実行してください。

まれに、うまく接続できないコンテンツがあり、Media Playerが固まってしまうことがあります。このときも、killall wineを実行してWineを終了させ、再試行してみてください。何度か再試行すれば、そのうちつながります。とりあえず、今のところ私は、これで再生できなかったMedia Playerコンテンツはありません。

また、ターミナル上から起動すると、wineは膨大なエラー(?)メッセージを出してきますが、その多くは実害のないもののようです。いや、もしかして実 害はあるのかもしれませんが、ユーザーレベルでどうこうできるものではないように思います。というわけでターミナル上に出されるメッセージの多くは無視し ても構わないでしょう。ただし、configファイルに関する間違いを教えてくれることもあるのでそのときはエラーメッセージの指示にしたがって修正して ください。
ターミナル上のメッセージはさほど重要ではありませんが、インタラクティブにダイアログで教えてくれるエラーもあります。多くは、dllに未実装の関数が呼び出されたので実行できない…ということを教えてくれるものです。
 

an image of errdialog ここでは、quartz.dllに問題有りと言われているので、configファイルでwineのbuiltinのdllよりWindowsのnativeなdllを優先するよう設定したわけです。

このダイアログでなく、直接デバッガが起動する場合もあるようですが、とりあえずの対応は同様です。
 


ほかにうまく起動できなくなる原因としては、シンボリックリンクの問題があります。Linuxユーザにとってシンボリックリンクは普通のモノですが、 Windowsには存在しない概念です。ですので、wineはデフォルトの状態ではシンボリックリンクを読まないようになっています。wineがうまく起 動しないときは、アクセスしようとしているファイル、ディレクトリがシンボリックリンクになっていないかどうかを確認してください。
 
 
6. 終わりに

ついでなので、mplayerと比較してみると、描画速度、安定性はあきらかにmplayerの方が上です、あたりまえですが…。Wine+Media PlayerはmpegとQuickTimeの音声に不具合がありますが、mplayerでは問題がありません。ただし、mplayerはMedia Playerコンテンツの再生については完全ではありません。こうして考えてみるとうまい具合に補完しているようです。多少なりともmplayerの顔もたっているようなので、Wine+Media Playerがこともなげに動いたときの動揺も少しはおさまりました。mplayerに関しては、mplayer.htmlに書いてあるので興味のある人は見てみてください。

一番最初、Wineをmakeしたとき、ディスクの空き容量をすべて喰い尽くして失敗したことをふと思い出します。当時(と言っても二年ほど前のことです が)、Pentium 133MHz、RAM 32MB、HDD 1.6GBでした。今考えれば、そりゃ無理だという環境ですね。もはや、記憶はさだかではありませんが、延々と続くコンパイル、300MB以上にふくれあ がったWineについに音をあげる我が愛機…懐かしい思い出です。今回試したもの、make installした方は400MBをこえていました。つい最近まで、主機のHDD交換、OSアップデートを実行するまでは、OSも古かったし、ディスクの 空き容量も逼迫していたので、とてもWineをいじれる状況にはなかったのです。なんとかこの正月に一挙に片付け、こうしてWine+Media Playerを動かせるようになったことは、ちょっとしたお年玉、ってな感じでしょうか。

Wine+Media Playerが動いたので、調子にのってマルチメディア関係の土台、サウンドドライバ、alsaも試してみました。あー、これは、しかし撃沈…。 sound braster vibra16では、音声出力の終了時にピーッという発振音がけたたましく鳴ってくれます。バージョン、リビジョンは違いますが、ISAなカードではこれ で四連敗です。しかし、alsaでそういう不具合があるという話は聞かないのですが、なんでなんでしょうか。単に私の設定が悪いのかなぁ…。手元に動作確 認済みのSB Live!もあるので交換してしまおうかと思わなくもないのですが、主機のハード交換は、一旦、棚を壊さなくてはならないので面倒なんですよね。やっぱ り、HDDを交換したとき、サウンドカードも一緒に交換するんだったかなぁ。つい、もう少しねばれるか…とためらってしまいました。

なんだかんだと、パソコンはじめて、はや三年…。Media PlayerがLinux上で動いたというこの事実、今までで一番感動しました。これで、当面、クリアしなくてはならない課題というものはなくなった感じ です。強いて言えば、DVDかなとも思いますが、いずれにせよ、DVDそのものもDVDを動かすに十分なハード的環境もないので、これはしばらく先の話で す。

なにはともあれ、Wine、バンザーイ!!!
 
 
2003年1月12日 よしのぶ
e-mail:yoshino@rita.karing.jp