MPlayerでMedia Playerコンテンツを再生!

1.はじめに
2.インストール
3.rpmについて
4.最適化
5.mozillaからの起動
6.Media Playerコンテンツを録音・録画する
7.まとめ

1.はじめに

私は仕事でパソコンを使うなどということはまったくないし、コンピュータゲームなども基本的にはやらないので、Windowsフリーな環境でもとくに支障 はないのですが、唯一、Linuxではネット上のMedia Playerコンテンツを視聴できないという問題だけは、なんとかしたいと常々思っていました。

聞くところによると、WineからMedia Playerを動かすことができるらしいのですが、Windowsに関する知識がまったくない私にとってWineは鬼門です。なんとか、Wineは動かせ たのですが、Media Playerまでは動かせませんでした。また、NetshowなるMicrosoftが配布したLinux用の再生ソフトも私の環境ではダメでした。 codecがインストールされていないのが原因らしいとわかったものの、これってどうやってインストールするのでしょうか?結局、これもわかりませんでし た。

そんなこんなで諦めていたのですが、Yahoo!BBに加入してみるとYahoo!BBのブロードバンドコンテンツの多くが、Media Player用なのです。加えて、いままでReal Playerで配信していた某サイトがMedia Playerに変わってしまいました。これはなんとかせねばと情報を集めてみると、ほどなくMPlayerにたどりついたワケです。MPlayerは、な んとstreaming再生も可能とのこと!どうやら、『Linuxではネット上のMedia Playerコンテンツを視聴できない』というのは私の間違った認識だったようです。

使ってみた感想は、『なかなか良好』です。Linuxは画像があまり美しくないと言われることがあるようで、実際、私もそう思っていたのですが、 MPlayerを使ってみて、特にそんなことはないなぁと思い直しました。結局のところ、私がこれまで『画像があまり美しくない』と思った原因は、単純に 56kbpsな環境だったからのようです。やっぱり、ブロードバンドってすごいんですね。

※※※ 2003年1月12日 追記 ※※※
なんと、Wine+Media Playerでも、Media Playerコンテンツを再生可能のようです!!!興味のある方は、wineMP.htmlも 見てください。

*** 2003年9月22日追記 ***
mplayerの更新はなかなか速くて追い付くのが大変です。このページの内容も古くなっているかもしれません。一応、現時点での最新版、 1.0pre1に合わせて、書き直してみましたが、厳密な検証は行っていません。なにか不具合などありましたら、お教え下さいますよう御協力お願いしま す。

このページを書いた当初は、MPlayerで試聴できないweb上のMedia Playerコンテンツは少数派だったのですが、最近は、その率が落ちてきて、再生できるかどうかは半々ぐらいの感覚になってしまいました。最初の頃は、そういうMPlayerで再生できないコンテンツにはWine+Media Playerが活躍していたのですが(content type "application/x-mplayer2"をのぞく)、最近は、Windows95上のMedia Playerでも再生できないコンテンツがままあり、それらのコンテンツはLinuxでも再生できないようです。単純にフォーマットやプロ トコルの問題なら、少し待てば誰かがなんとかしてくれそうですが、ことがセキュリティに関するものだとするとあまり期待は持てないのかなぁ…なん て思ってしまいます。

いずれにせよ、MPlayerは優秀なソフトです。このページでは、web上のMedia Playerコンテンツの試聴に特化した話題しか取り上げていませんが、その他の機能も盛り沢山です。誤解のないように。


2.インストール

まずはじめにMPlayerのインストール方法ですが、特に複雑なこともなく、とにかく必要なものを拾って来て、インストールしていくだけです。ただ、そ の数がちょっと多すぎるような気がしないでもないですが…。MPlayerの公式サイトは、http://www.mplayerhq.hu/homepageで す。そこから、もしくはそこからたどって以下のものをもってきます。また、私家版のrpmもつくってみたので、rpmを使いたい人は、rpmの項から読んでください。

MPlayer-1.0pre4.tar.bz2
mp-arial-iso-8859-1.zip
Blue-1.0.tar.bz2
win32codecs.tar.bz2
divx4linux-std-20030428.tar.gz

MPlayer-1.0pre4.tar.bz2は、MPlayerそのもので、mp-arial-iso-8859-1.zipは、GUIを使うときの フォントです。 Blue-1.0.tar.bz2は、GUIのSkinです。win32codecs.tar.bz2とdivx4linux-std- 20030428.tar.gzは、ライブラリです。

適当な所で、win32codecs.tar.bz2を解凍し、できたxxx.dllを/usr/lib/win32/以下にコピーするなりなんなりして 下さい。次にdivx4linux-std-20030428.tar.gzを解凍し、できたインストールスクリプト(install.sh)を実行しま す。これらの作業は、当然、rootで実行する必要があります。

### Sat Jul 17 2004.追記
codecのデフォルトのディレクトリは、/usr/lib/codecsに変更されたようです。現状、/usr/lib/win32も使えるようですが、対応しておくのが吉と思います。

また、divx4linux-std-20030428.tar.gzは、 libstdc++のバージョン2.xでコンパイルされているようです。Vine3.xでは、標準のlibstdc++は3.xになると思われるので、別 途、libstdc++2_10、libstdc++2_10-compatをインストールしておかないとdivxが動作しません。

加えて、Vine Linux 2.6r1の場合、SDL関係とQT関係をVine Plusから持って来て、あらかじめインストールしておきます。でないと、MPlayerのmakeが通りません。なお、Vine Linux 2.6r1の場合、SDLやQTをインストールするのにも依存関係を解決する必要があるので、他にもインストールしておく必要のあるパッケージがありま す。ということで MPlayer-1.0pre4のmakeに必要なパッケージは、Vine Linux 2.6r1フルインストールの環境では以下のとおりです。

arts-1.0.4-0vl2.i386.rpm
arts-devel-1.0.4-0vl2.rpm
SDL-1.2.5-0vl1.rpm
SDL-devel-1.2.5-0vl1.rpm
libmng-1.0.4-0vl2.i386.rpm
libmng-devel-1.0.4-0vl2.rpm
qt-3.0.5-0vl2.i386.rpm
qt-devel-3.0.5-0vl2.rpm

なお、Vine Linux 2.5の場合、SDLをインストールするには、依存関係を解消するためにaudiofileおよびaudiofile-develをインストールする必要 があります、たぶん。


ようやく、準備が整ったところで、mplayerのmakeです。

$tar xjvf MPlayer-1.0pre4.tar.bz2
$cd mplayer-1.0pre4
$./configure --enable-gui
$make
$su
#make install

これで終りです。Pentium 133MHz、RAM 64MBで、30分以上はかかります。今時、こんな環境でコンパイルする人はいないと思いますが…。

これで、CUIからは使えるはずです。なにか適当なファイルを読み込ませてみてください。

$mplayer -vo x11 -ao sdl hoge.mp3

こんな感じです。-voオプションは、描画に関するもの(video output)で、個々の環境に合わせて最適化が必要、または有効です。x11は汎用みたいな ので、ここではとりあえず使ってみました。もっとも、この例で再生しているのは、mp3なので-voは関係ありません。また、-ao(audio output) も、なくてもmplayerが適当に処理くれると思いますが、せっかくSDLをインストールしたので顔を立ててやりました。

MPlayerの動作を確認したら、次はGUIの設定をします。GUIに必要なものは、Skinとフォントです。Skin、Blue- 1.0.tar.bz2およびフォント、 mp-arial-iso-8859-1.zipは、/home/hogeにあるものとします。

$cd /usr/local/share/mplayer/Skin
$su
#tar xjvf /home/hoge/Blue-1.0.tar.bz2
#chmod 755 Skin/default
#chmod 644 Skin/default/*
#cd ..
#unzip /home/hoge/mp-arial-iso-8859-1.zip
#rm -rf font
#ln -s iso-8859-1/arial-18/ font
#exit

これで、とりあえずGUIの設定はおしまいです。試しに起動してみます。GUIで起動するときは、gmplayerで起動します。

$gmplayer -vo x11 -ao sdl


どうでしたか?動かなかった人には申し訳ないですが、これより、ちゃんと起動したものとして話をすすめたいと思います。

『ちゃんと起動』などと書いてしまいましたが、GUIがちゃんと起動しても端末に流れるエラー(?)メッセージに驚いた人もいることでしょう。でも、だい じょうぶです。その多くは、個人の設定ファイル、その他がないからデフォルトの設定を使うよと言っているだけです。

各ユーザ固有の設定ファイルは、~/.mplayer/以下におきます。このディレクトリは自分でつくらなくともmplayerを一度起動すると、 mplayerが勝手につくってくれます。いくつかの設定ファイルもつくってくれますが、中身はほとんどありません。ですので、とりあえず、これらには手 をつけず、mplayerまかせでも問題ないと思います。唯一気になるのは、-voオプションですが、これについては最適化の項で取り上げます。

また、端末に流れるメッセージを注意深く見ていると設定ファイルの有無以外のエラーもあることに気づきます。それは、mplayerが最初、RTCに直接 アクセスしようとするからです。mplayerは直接、RTC(ハードウェア)とやりとりして、RTCを最適化しようとするのですが、通常、ハードウェア との直接のやりとりは一般ユーザには許されていません。よって、Permission deniedと言われてしまうのです。もちろん、ここではじかれても動作はしますが、最適化できなかった分、多少、性能が落ちます。これに関して も最適化の項で取り上げます。


3.rpmについて

ということで、rpmです。まぁ、単に、フォントとスキンを一緒にしただけです。rpm化に際し、ディレクトリ構造は、/usr/localを使う make時デフォルトのディレクトリ構造ではなく、/etc、/usr以下を使うrpmの慣習に沿うよう変更しました。また、最適化を優先し、 mplayerの実行ファイルにはデフォルトでrootのSUIDビットがたっています。セキュリティが気になる人は、インストール後、変更してくださ い。

ところで、もっと先に記述するべきだったかもしれませんが、ここでは基本的な実行環境をVine Linux2.6r1フルインストールと想定し、src.rpmから自分でrebuildしてrpmをつくることを前提にしています。よって、これ以外の 環境では、ここに書いてあることが再現できないかもしれません。その場合は、個々、適宜対応してください。

実は、src.rpmがある場所にはrpmも用意してはあります…。ただし、これは素のPentium 133MHzでrebuildしたものであり、素のPentium以外を使っている場合は、src.rpmから自分でrebuildしてインストールする ことを強くお勧めします。ただし、1.0pre4に関してはPentium !!!でコンパイルしてあります。これはPentiumではコンパイルできなかったためです。それでももちろん、ご自分でリビルドすることをおすすめしま す。


やっと本題です。まず、mplayerをrebuildおよびインストールするのに足りないパッケージを追加します。Vine Plusから以下のものをもってきてインストールしてください。

arts-1.0.4-0vl2.i386.rpm
arts-devel-1.0.4-0vl2.rpm
SDL-1.2.5-0vl1.rpm
SDL-devel-1.2.5-0vl1.rpm
libmng-1.0.4-0vl2.i386.rpm
libmng-devel-1.0.4-0vl2.rpm
qt-3.0.5-0vl2.i386.rpm
qt-devel-3.0.5-0vl2.rpm

次にバイナリのライブラリをインストールします。バイナリなのでrpm化することをためらったわけですが、まぁ、少しぐらいなら、こういう手作業で入れるのも、なんかLinuxぽくっていいでしょう。

win32codecs.tar.bz2

win32codecs.tar.bz2は、mplayerの公式サイト、http://www.mplayerhq.hu/homepage にあります。divx4linux-std-20030428.tar.gzは、http://www.divx.com/ にあります。二つともそれっぽいリンクをたどっていけば、目当てのモノにたどり着けると思います。

これらの具体的なインストールの一例(あくまで一例)は、以下のとおりです。ホームディレクトリおよびPWDは/home/hoge、 win32codecs.tar.bz2、divx4linux-std-20030428.tar.gzともに/home/hogeにあります。

$tar xjvf win32codecs.tar.bz2
$su
#rm -r /usr/lib/win32
#mv win32codecs /usr/lib/win32

#rm -r /usr/lib/win32 は、そもそも/usr/lib/win32が存在しなければ、もちろん実行する必要はありません。

### Tue Jun 8 2004.追記
最新のヴァージョン(1.0pre4)では、codecのデフォルトのディレクトリは/usr/lib/codecsになっているようです。今のところ/usr/lib/win32も使えるようですが、変更した方がいいでしょう。

次にdivx4linuxです。

### Sat Jul 17 2004.追記
divx4linux-std-20030428.tar.gzは、 libstdc++のバージョン2.xでコンパイルされているようです。Vine3.xでは、標準のlibstdc++は3.xになると思われるので、別 途、libstdc++2_10、libstdc++2_10-compatをインストールしておかないとdivxが動作しません。


$tar xzvf divx4linux-std-20030428.tar.gz
$cd divx4linux-20030428
$su
#./install.sh
#exit

これでdivx4linuxのインストールは終了ですが、divx4linuxを./install.shによりインストールした場合は、 MPlayerをrpmでインストールしようとするとき、依存性の欠如と言われるので、この場合、--forceでMPlayerをインストールしてくださ い。

#rpm --force -ivh MPlayer-1.0pre4.i386.rpm

また、依存性の欠如と言われるのがイヤな人は、別途、divx4linux-std-20030428.tar.gzのrpmパッケージをつくる必要があ ります。SPECファイルdivx4linux.specを ダウンロードして、任意のRPM_SPEC_DIRにおいてください。そしてdivx4linux-std-20030428.tar.gzを RPM_SOURCE_DIRにおき、rpmを作成します。下記は、デフォルトのrpm作成用ディレクトリが、~/rpmにあるVine 2.6の例です。

$cp divx4linux.spec rpm/SPECS
$cp divx4linux-std-20030428.tar.gz rpm/SOURCES
$rpm -bb rpm/SPECS/divx4linux.spec

で、できたら、suして、インストールします。

$su
#rpm -ivh rpm/RPMS/i386/divx4linux-5.0.5-0pe1.i386.rpm
#exit

ライブラリに変更があったときは、ldconfigをお忘れなく!いちおう、お約束として言っておきますが、divx4linuxのインストール時に実行されているので、ここではldconfigを実行しなくてもだいじょうぶなはずです。

これで、すべての準備が整いました。MPlayer-1.0pre4-2pe6.src.rpm(2004年7月17日現在の最新版は、MPlayer-1.0pre5-2pe7.1.src.rpm)を持ってきて、

$rpm -i MPlayer-1.0pre4-2pe6.src.rpm
$rpm -bb rpm/SPECS/mplayer.spec

$su
#rpm -ivh rpm/RPMS/i386/MPlayer-1.0pre4-2pe6.i386.rpm
#exit

先述したようにdivx4linuxをinstall.shでインストールした場合、libdivxdecore.so.0および libdivxencore.so.0がrpmのデータベースに存在しないので依存性の欠如と言われてしまいます。そのときは--forceオプションを つけてインストールしてください。

ここまでエラーが出なければ、めでたく終了です。とりあえず、起動させてみましょう。mplayerは、CUI時、gmplayerで起動するとGUIで起動します。

$gmplayer -vo x11 -ao sdl

さぁ、どうだったでしょうか?

4.最適化

このページの目的は、LinuxでWeb上のMedia Playerコンテンツを再生することにあります。そのため、MPlayerに可能なすべての機能を取り上げてはいません。たぶん、DVDの再生など decodeに関しては一通りのことはできるはずですが、encodeに関しては、もっと多様なフォーマットをサポートしたいと思うかもしれません。たと えば、ここで紹介している方法では、mp3のencodeはサポートされていません。これらの機能拡張は、MPlayerをrebuild(make)す る前に、それらのライブラリやソフトをインストールしておくだけで可能であり、特に難しいことではないと思います。ですので、MPlayerの機能拡張に ついては、ここでは取り上げません。これらの機能拡張については、それらについて書かれたホームページ等、多々あるようなので、そちらを参考にするといい でしょう。

さて、ここで取り上げる最適化の最重要項目は、vo(video output)オプションです。テスト起動では、

$gmplayer -vo x11 -ao sdl

というふうに、-vo x11で実行しました。x11は汎用の設定らしくXがちゃんと動いていれば利用可能なもののようです。しかし、X経由で描画されるため速度は遅くなりま す。また、MPlayerは、X経由のオーバーヘッドを避け、直接ハードウェアを制御して描画する機能も有しています。この機能を使えれば、当然、X経由 の描画よりも高速な描画が実現可能です。とは言え、ハードウェアとの直接のやりとりは一般ユーザには禁じられているので、一般ユーザでこの機能を使うには なんらかの対策が必要です。通常は、SUIDを利用するのが一般的だと思います。私家版rpmではデフォルトでSUIDが有効になっています。ただし、 MPlayerのドキュメントではセキュリティの観点から、SUIDによる実行を推奨していません。

また、瑣末なことですが、もう一つ問題があります。mplayerは個々の設定ファイル(~/.mplayer以下)が存在しない場合、自動的にそれらの 設定ファイルを作ってくれるのですが、SUIDによりmplayerを実行した場合、これらの設定ファイルのownerはrootになってしまうのです。 個々の設定ファイルのownerがrootになっては不都合なこともあるかと思うので、そういう場合は、それらの設定ファイルは、あらかじめつくっておく などしたほうがいいかもしれません。

前置きが長くなってしまいましたが、ここでやろうとしている最適化のやり方は、実はとても簡単です。mplayerの実行ファイルにSUIDビットをた て、x11のかわりにxvを指定してみるだけです。厳密には、xvはroot権限がなくても使えるようですが、他のハードウェアアクセラレーションや RTCのこともあるのでセキュリティが気にならないならば、SUIDで実行したほうがいいでしょう。

xvが使えるかどうかは、

$xvinfo

を実行してみて、

X-Video Extension version 2.2
screen #0
 no adaptors present

とならずに、xvに関する情報がたくさん出力されれば、xvは使用可能です。で、使用可能であったなら

$mplayer -vo xv -ao sdl nantoka.mpg

のように、なにか適当な画像を読み込ませてやり、見事描画できればそれで終りです。おそらく、AGPのビデオカードなら問題なく描画できると思います。と は言え、世代的に大丈夫そうなカードでもハードウェアメーカーが仕様の公開を拒んでいたりすると、ハードウェアによるアクセラレーションが使えなかったり します。ハードウェアによるアクセラレーションは、xvだけではないのですが、xvがもっとも一般的なもののようです。と言うことで、ここでの結論は、 『voは、xvが使えれば、xv。使えないときは、x11。』です。

xvにかわるオプションは、xvidix、gl等々が使用可能です。それらについては、mplayerのドキュメントを参照ください。私家版rpmの場合は、/usr/doc/MPlayer-1.0pre4/以下にあります。

なお、mplayerは起動時にRTCを最適化しようとしますが、root権限がないとPermission deniedではじかれます。はじかれても、RTCを最適化できないだけで動作に問題はありません。とは言え、なんとかしたいと思うのが人情でしょう。私 家版rpmでは、これをSUIDによる実行で克服していますが、再三述べてきたようにMPlayerのドキュメントはSUIDによる実行を推奨していませ ん。そこで、RTCの最適化に関し、SUID以外の方法として、mplayerを実行する前に、

#echo 1024 > /proc/sys/dev/rtc/max-user-freq

とする方法があります。これで一般ユーザもRTCの最適化が可能になります。もちろん、上記のコマンドはrootで実行してください。mplayerが起 動時に出してくるメッセージでは、このコマンドを起動スクリプト(rc.localあたり)などに書いておくこと勧めています。

とすれば、RTCの最適化もハードウェアアクセラレーション"-vo xv"もroot権限無しで実行可能なワケで、私家版rpmのようなSUIDなどという危険な設定は不要かもしれません。Linux的にも断然こちらの方 がカッコイイでしょう。私家版rpmをインストールした人でセキュリティが気になる、rc.localの編集ぐらいは別に苦じゃないという人は、SUID をはずしたほうがいいかと思います。

個人的な興味で低スペックのマシンでのmplayerの動作についてもここで少しふれておきましょう。私のPentium 133MHz、64MBのマシンでmplayerを使った場合、Media Playerコンテンツ(動画、500kbps)の再生では、映像はそれなりに映ってはいますが、音声と映像がまったく同期しません。映像の再生が等速に 追いつけないのです。当然、mplayerはCPUスピードが遅すぎると文句を言ってきます。しかし、まぁ、なんとか、とりあえずの再生はすることができ ます、視聴に堪え得るかどうかは別問題ですが…。これが音声のみの場合は、問題なく使用できるようです。正確な比較ではありませんが、音声のみの Media Playerコンテンツの負荷は、mp3の半分ぐらいの感じです。
 
次にPentium II 233MHzで試してみると、Media Playerコンテンツ(動画、500kbps、WMV7)の再生では音声と映像がちゃんと同期してくれるようになります。ただし、システムにちょとでも 余計な負荷をかけるとすぐさま『CPUスピードが遅すぎる』という警告も出してくれます。というわけでMedia Playerコンテンツのローエンドは、これぐらいなのでしょう。しかし、なかにはハード的には十分でも、まだmplayerの対応が完全ではないために うまく再生できないものもあるようです。このPentium II 233MHzのマシンは、Windows95とLinuxがデュアルブートになっているのですが、同じハード環境なのに、同じMedia Playerコンテンツの再生で、その差が歴然としてしまうものがたまにあります。

少しだけGUIについて。MPlayerの見てくれを変えるには、Skinを換えます。MPlayerの公式サイト、http://www.mplayerhq.hu/homepageなどから、Skinをもってきて、~/.mplayer/Skin/以下に展開します。~/.mplayer/Skin/は自動的には作られないので、

$mkdir .mplayer/Skin

とでもした後、

$cd .mplayer/Skin
$tar xjvf ~/skinhoge.tar.bz2

として、~/.mplayer/Skin/以下に~/.mplayer/Skin/skinhoge(skinhogeはディレクトリ)ができたとすると

$gmplayer -vo xv -ao sdl -skin skinhoge

と、-skinの後にディレクトリ名で指定します。ちなみに、gmplayerを起動するとその設定を自動的に~/.mplayer/gui.confに 記録するので、次回からはオプションを指定しなくとも同様の環境が再現されます。また、コマンドラインからオプションを指定してやれば、その設定は当然上 書きされます。


5.mozillaか らの起動

このページの最大の目的は、web上のMedia Playerコンテンツの再生にあります。通常、こういう場合はブラウザからリンクを開くとpluginでhelper applicationが起動というカタチになっていると思います。mplayerの場合、Pluggerなどでpluginとして動作させることも可能 ですが、実際のところ使い勝手はあまりよくありません。Pluggerを使っている場合はMedia Playerコンテンツはコメントアウトすることをお薦めします。と言うことで、ここではスマートではありませんが、未設定のファイルタイプに対するアプリケーショ ンの選択で対処することにします。なんのことはないデフォルトの動作です。まぁ、こうしたからと言って、さほどの手間でもないし、こうしておけば、通常の 再生やWine+Media Player、または次項で取り上げる録音・録画をその時々に選択できるというメリットもあるでしょう。

ここでの要点は、マイクロソフトが提唱しているASXファイルの扱いになります。ASXファイルは、Media PlayerコンテンツのURLを含む十行前後の小さなテキストファイルです。多くの場合、Media Playerコンテンツへのリンクは、このASXファイルになっています。つまり、Media Playerコンテンツへのリンクを開くと、このただのテキストファイルでしかないASXファイルを開くことになります。mplayerは、このasx ファイルを開いてそこに書いてあるURLを読んでweb上のコンテンツを再生します。

mozillaは、未定義ファイルをヘルパーアプリケーションにわたす場合、一時ファイルとして、/tmpへダウンロードし、そのファイルをヘルパーアプ リケーションにわたします。ですので、アプリケーションの選択でmplayerを選択すれば、件のASXファイルもmplayerにわたされ、なんの問題 もないはずなのですが、残念ながら今のところうまくいきません。なぜなら、それは、mplayerはバックグランドからは起動できないという制限があるた めで、mozillaは、それらのアプリケーションをバックグランドから起動させようとするからです。これをやると、mozillaが固まります。

これを回避するため、一旦、端末を起動させ、そこからmplayerを動かしてやります。具体的には、以下のようなスクリプトを書いて適当なところに保存 します。実行権限をつけることをお忘れなく。

#!/bin/sh
kterm -e mplayer -vo xv -ao sdl $1

もちろん、-voなどのオプションなどは個々の環境に合わせてください。

2004.2.19 追記
mplayerのヴァージョン(1.0pre3で確認)によっては、ASXファイルからうまくmmsサーバのURLを取り出せないようです。この場合、自分で切り出してわたしてやります。上記のスクリプトの代わりに下のようなスクリプトで対応します。

#!/bin/sh
asx=`grep -i '<ASX version' $1`

if [ "$asx" ];then
mms=`awk 'BEGIN{RS="<"}{print}' $1 |grep -i 'Ref href' |cut -d'"' -f2`
else

echo "this is not ASX file."
mms=$1

fi

echo $mms
kterm -e mplayer -vo xv -ao sdl $mms

このスクリプトはASXファイルでないときは、そのファイルをそのままmplayerにわたしますが、その場合、なぜか1.0pre3は、端末から起動することができないようです。つまり、端末から、

kterm -e mplayer test.mpeg

が実行できません。ASXファイル(再生元がURLの場合)ではこの問題はないようです。ならば端末をいちいち起動せず直接、

mplayer test.mpeg

というようにしてやればよさそうなものですが、端末を起動し、そこから mplayerを実行させるようなスクリプトでないとmozillaではmplayerを実行できません、mozillaが固まります。ただし、これらの問 題は、mplayerをpluginから起動するときには生じないようです。

このファイルをつくったら、mozillaからMedia Playerコンテンツへのリンクを開いてみます。ただし、直接mmsサーバへリンクのはってあるものはダメです。ASXファイル(または、WAXファイ ル)へのリンクです。そうすると、未定義ファイルを開くアプリケーション選択ウィンドがでて来ると思います。そこで、今作った実行ファイルを選択してくだ さい。デフォルトではxanimになってるかと思いますが、″詳細″からこれを変更しておくのもいいでしょう。MIMEタイプは、video/x-ms- asfにでもしておいてください。これで再生されるはずです。ただし、mplayerでは一部接続できないサーバもあるようです。


さて、ここまで二つの問題点についてふれましたが、ここで再度ふれておきます。一つは、直前に言及した一部接続できないサーバがあることで、この問題は残 念ながら単純には解決不能のようです。もう一つの問題は、リンク先が直接mmsサーバのURLになっている場合、mozillaはなにもしてくれないこと でした。リンクのプロパティからURLを調べることはできるので、これを見て手打ちでmplayerを起動させてやればいいだけの話ですが、ちょっと面倒 です。ここらへんはmozillaになんとかしてもらいたいものです。

また、ここで取り上げている方法は、MIMEタイプがvideoやaudioならば問題ないのですが、application/x-mplayer2とか だと対応できません。少なくとも私はできていません。Yahoo! BBのホームページ、http://bb.yahoo.co.jp/にmozillaなどでアクセス したことのある人はわかると思いますが、いつもpluginをインストールするか?と聞かれてしまいます。こういうのは、どうも私の力ではどうにもならな さそうなので不愉快ではありますが、ほっといてあります。


ひとまずこれで、mplayerによるMedia Playerコンテンツの再生に関しては終わりです。



6.Media Playerコンテンツを録音・録画する

個人的には、なにかを記録しておくということにはあまり関心がないのですが、乗りかかった船なので多少考えてみました。そもそも、mplayerでちゃん と再生できるのですから、それをそのままファイルにできてもよさそうなものです。しかし、なかなか思ったとおりにはいきません…。

MPlayerでMedia Playerコンテンツを記録、ファイル化するには、単純にはmencoderを使います。基本は以下のようになります。

$mencoder -ovc hoge -oac piyo -o output.wmv mms://www.karing.jp/tobepen/20021213.wmv

この意味は、mms以下のコンテンツを映像は、ovc(output video codec)で指定されたフォーマットhogeでエンコードし、音声は、oac(output audio codec)で指定されたフォーマットpiyoでエンコード し、まとめてoutput.wmvへ出力するということです。そこで問題は具体的にそれぞれどのフォーマットで記録するかになるわけですが、私がやりたい のは単純なコピーです。ですので、エンコードなどということは考えず、

$mencoder -ovc copy -oac copy -o output.wmv mms://www.karing.jp/tobepen/20021213.wmv

ということになります。しかしながら、ファイルにして再生してみるとストリーミングで再生したときと同じになりません。なにか不安定です、どうも正常に再 生されないのです(もっとも、これはPentium 133MHzという環境のせいかもしれませんが…)。ついでに言うと、私はここでできたファイルは、ASFファイルになることを期待しているのですが、

$file output.wmv
output.wmv: RIFF (little-endian) data, AVI

となってしまいます。ホントは、

$file output.wmv
output.wmv: Microsoft ASF

となってほしいのです。でも、なぜ?

そろそろ、馬脚をあらわしてきました。そう、私、映像関係には詳しくないのです。mencoderは、エンコードに関して、非常に柔軟なオプションを提供 してくれますが、私には、猫にコンバンワです。面倒がらずにオプションを設定すれば、mplayerで再生できるコンテンツは、mencoderで録音、録画が可能です。ただ、ここで紹介しているやり方で は、音声に関しては、現状、copyとpcmしかサポートされていないので、mp3のためにlameぐらいは入れておいた方がいいと思います。サポートさ れているcodec(フォーマット)は、映像、音声、それぞれ、mencoder -ovc help、mencoder -oac helpで表示されます。

というわけで、柔軟なオプションより、単純なコピーを優先する私は、Media Playerコンテンツの録音・録画に関しては、mencoderを使うことはあきらめました。そこで登場するのが、このasfrecorderです。

asfrecorderの公式サイトは、http://sourceforge.net/projects/asfrecorder/で す。asfrecorderは、もともとWindows用のアプリケーションですが、ANSI Cで書かれており、Linuxのgccでもコンパイルがとおります。ただし、LinuxではGUIは使えません。もう、乗りかかった船なので、イキオイこ れもrpmにしてみました。asfrecorder-1.1-0pe3.i386.rpmで す。

使い方は、いたって簡単です。

$asfrecorder mms://streaming.karing.jp/tobepen/20021213.wmv

とか、

$asfrecorder /home/hoge/penguin.asx

とか、してやれば、後はダウンロードが終わるのを待つだけです。mozillaからの起動もmplayerと変わりありません。未定義ファイルを開くアプ リケーションの選択で、/usr/bin/asfrecorderを選べばいいだけです。しかし、mozillaを使う以上、mmsサーバへの直リンクの 問題は、mplayer同様です。

なお、ストリーミングによる制限として、等速でしかダウンロードできません。一時間のコンテンツをダウンロードするには、一時間かかります。このブロード バンド時代には、ちょっとメゲますね。また、mplayerでは接続できてもasfrecorderでは接続できないところもあるようです。まぁ、逆もあ るようですが…。

ほかに、一次出力先を選択できないということも問題になるかもしれません(WindowsのGUIからは選択可能らしいです)。asfrecorder は、URLから適当な名前をつけて、カレントディレクトリにファイルを出力するようになっていますが、同じ名前のファイルが存在するとうまくいかない場合 があるので気をつける必要があります。この状況は同じコンテンツを再度ダウンロードするときに起こりがちです。通常は、以前にあったファイルに付け足して くれるので時間の節約になりますが、絶対ではありません。また、端末から操作しているときは問題にはならないと思いますが、mozillaから起動させた 場合、自分が今いる場所(PWD)をおぼえていないとダウンロードしたファイルはどこに行った?と後で探し回ることになるでしょう。

端末から使っている場合、なにか不都合が起きて、ダウンロードを中止したいときは、端末を落としてください。mozillaから起動している場合は、 mozillaを終了させるしか思い浮かびません…。そんなこんなを考えてみると、mozillaからasfrecorderを起動させるときも、 mplayerのように一旦、端末を起動させ、そこからasfrecorderを起動させた方がなにかと都合がいいような気がしてきました。一例として

#!/bin/sh

cd
kterm -T "asfrecorder" -e asfrecorder $1

こんな感じです。こうしておけば、端末に出力される情報もわかるのでダウンロードの進行状況も一目でわかります。くわえて、上記の場合、ファイルの出力先 はホームディレクトリになることがわかっているので、後で探し回るなんて心配もいりません。どこか適当なディレクトリにファイルを出力したいときは、cd の後にそのディレクトリを指定してください。このスクリプトに多少手を加えたモノが、asfrecorder-1.1-0pe3.i386.rpmに も、/usr/bin/asfrecorder.shとして入っています。mozillaから使うときは、例のごとく、未定義ファイルを開くアプリケー ションの選択で、/usr/bin/asfrecorder.shを選択してください。これを使う場合、~/.asfrecoderに出力先のディレクト リを書いておくと、ファイルはそこに出力されます。ごく単純に余計なものを書かず、

/home/hoge/ASF

などのように絶対パス(absolute path)で書いてください。デフォルトの出力先はホームディレクトリです。

あまりに単純なことなので言い忘れてしまいましたが、ここでダウンロードしたファイルは、mplayerで視聴できます。まぁ、そんなことは言わなくても 大丈夫でしょうが…いちおう。


7.まとめ

あー、思ったよりも随分と長いページになってしまいました。最初は、こんな大きなページにするつもりはなかったのです…。なぜなら、ここで紹介しているこ とは、所詮小細工であり、本来なら、mplayerやmozillaがちゃんとしてくれればどうでもいい話だからです。どちらも、まだ、開発途上のソフト なので、文句を言うつもりはサラサラありませんが、過度期に翻弄される迷える小羊としては、怨みゴトの一つも言いたくなります、もちろん自分自身に対し て…。

しかし、MPlayerの更新は速いですねぇ!これを書きはじめた時は、pre8だったのですが、もうrc3です。これを書いてる途中で、pre9、 pre10に合わせて、その都度、rpmを作り直し、製作途中のこのページを書き直しました。この分だと、過度期にしか意味を持たないこのページが陳腐化 するのも時間の問題かもしれません。とりあえず、私家版rpmは、MPlayerの更新に合わせてアップデートしようと思っています。ということで、ftp://ftp.karing.jp/pubをのぞいてみると新しい私家 版rpmがあるかもしれません。

さて、mplayerはDVDも視聴可能らしいです。しかしながら、何分、私はDVDを持っていないので、確認することができません。このページでつくっ たmplayerでも再生可能なはずなんですが、実際はどうなのでしょうか…?もし、確認した人がいたならば、動作の可否にかかわらずお教え願いたいとこ ろです。でも、なんですね、先日、秋葉原に行って、ちょっとDVDというものを見てみたんですが、DVD初心者の私にはさっぱりわかりませんでした。 DVDとはなにか?という問題は、もはや、哲学的命題なのでしょうか…。

前の方で、私がLinuxでMedia Playerコンテンツの再生を試みた一つの理由は、Real Playerで配信していた某サイトがMedia Playerに鞍替えしたことだと書きました。で、こうしてメデタク、LinuxでもMedia Playerコンテンツを視聴できるようになったわけなのですが、実は、この最初の問題は依然解決されていないのです。そうです、たびたび出てきた接続で きない一部のサーバとはココのことです!とりあえず、私が試したサーバで接続できなかったのは、今のところここだけです。あー、オレの人生、こんなんばっ かだー!

最後にお詫びと言うか、なんと言うか…。こういうページには、動作を確認するためのテスト用のサンプルもしくはテスト用のサンプルへのリンクなどがあると なにかと便利ですが、我が家には、mmsのストリーミングサーバなんてものはないし、また、リンクに関しては、モノがモノだけに、すぐリンク切れを起こす であろうことは容易に想像がつくので、そういうモノは用意しませんでした。多少、不便だったのではないかと思います。お許しくださいませ。



最終更新日 2004月2月19日 よしのぶ
yoshino@rita.karing.jp


index.html  一つ戻る