玩式草子─ソフトウェアとたわむれる日々

第19回 Linuxとマルチメディア環境[その1]

この記事を読むのに必要な時間:およそ 5 分

64ビット用Plamo Linux(Plamo64)の開発作業も佳境に入り,手元では日常の生活環境も64ビット上に移行しました。

ソフトウェアの世界では自分のドッグフードを食べる(Eating your own dog food)という表現があります。これは,自分で作ったソフトウェアを自分で実際に使って,使い勝手や問題点を経験してみる,という意味です。Plamo64も「ドッグフードを食べる」段階に入り,現在は日常作業をPlamo64上で行いながら,作成したパッケージの動作を確認したり,必要な機能を随時追加する作業に追われています。

そうなると欲くなるのは作業中に流すBGMです。最近のLinuxでは,VLCやMPlayer,xine,Totem等のメディアプレイヤーが充実し,CDやDVD,あるいはインターネット上のたいていのマルチメディアコンテンツを再生できるようになっています。

しかしながら,このような便利な環境は一朝一夕にできあがったものではなく,さまざまなオープンソースソフトウェア(OSS)プロジェクトが積み上げてきた成果のおかげです。今回は,そのようなLinuxのマルチメディア環境について紹介してみましょう。

マルチメディアと各種CODEC

人間の聴覚や視覚は,空気や光の振動の高低や強弱といったアナログデータを認識しますが,アナログデータはそのままではコンピュータで処理することができず,符号化という処理を行ってデジタルデータ化してやる必要があります。一方,コンピュータで処理したデジタルデータを人間が視聴する際には再度アナログデータに戻してやる必要があり,この作業を復号化といいます。この「符号化(COding)⁠復号化(DECoding)⁠の処理を行うソフトウェアをCODECと呼びます。

符号化のことをエンコード(encode)⁠復号化のことをデコード(decode)とも呼びます。

アナログデータをいかに符号化,復号化するかはコンピュータ科学にとっての古くからの研究テーマで,画像や音声,動画といった元データの種類,あるいは利用目的や用途,前提とするコンピュータやネットワークの能力などに応じてさまざまに異なる方法が考案され,その方法を実装したソフトウェア(CODEC)が開発されてきました。

たとえば,画像を扱うBMPやGIF,JPEG,音声を扱うPCMやWMA,ATRAC,MP3,動画を扱うMPEG-1/2/4,MotionJPEGなどが代表的なCODECです。多くのCODECには符号化と共にデータを圧縮する機能も組み込まれています。

これらの方法の中には,特定の企業が開発して自社の製品のみで使っているものもあれば,ボランティアの個人やグループが開発してフリーに公開しているもの,既存の技術を整理して規格化団体が提唱したものなどさまざまですが,広く普及している方法では,たいていOSSなCODECも開発されています。

CDやDVDの専用プレイヤーでは,CODECはハードウェア的に組み込まれてあらかじめ決められた形式のデータしか処理できないのに対し,ソフトウェアのメディアプレイヤーでは必要なCODECを追加することで新しい形式のデータにも随時対応できます。そのため,ソフトウェアのメディアプレイヤーを前提としたインターネット上の動画コンテンツでは新しい形式が積極的に採用され,再生するために必要なCODECも増えていくことになります。

これら増え続けていくCODECにどのように対応していくかがメディアプレイヤー開発者の悩みどころで,それらをどのように収録していくかがディストリビューション作成者の悩みどころになります。その一例を,MPlayerというメディアプレイヤーで紹介してみましょう。

MPlayerメディアプレイヤー

今回取りあげるMPlayerは,www.mplayerhq.huで公開されているメディアプレイヤーです。MPlayerは当時の既存のメディアプレイヤーに不満を持った原作者が2000年ごろから始めたプロジェクトで,10年を越える歴史を持ち,いよいよ正式版の公開が近づいているそうです。

MPlayerは,LinuxだけではなくWindowsやMacOSなど,さまざまなプラットフォームで動作するように,メディアの選択や各種操作を行うGUI部分はオプション機能として本体から切り離され,本体部分はコマンドラインから起動するCUIなコマンドとして作られています。また,広く利用されているCODECについては,OSSとして開発されているソースコードを内蔵して外部ライブラリへの依存を減らすように考えられているので,Plamo64のような開発途中の環境でも何とかなるでしょう。

MPlayerのソースコードを展開し,設定用の configure スクリプトを動かしてみたところ,無事終了してビルド可能にはなりましたが,気になるメッセージもいくつか表示されています。

demo@P-Plamo64:$ ./configure
Checking for cc version ... 4.5.2
Detected operating system: Linux
Detected host architecture: x86_64
...
Config files successfully generated by ./configure  !

  Install prefix: /usr/local
  Data directory: /usr/local/share/mplayer
  Config direct.: /usr/local/etc/mplayer
...
  Enabled optional drivers:
    Input: dvdnav(internal) ftp pvr tv-v4l2 tv-v4l tv libdvdcss(internal) dvdread(internal) vcd dvbnetworking
    Codecs: ffmpeg(internal) real xanim libmpeg2(internal) mp3lib(internal) treor(internal) gif OpenJPEG
    Audio output: alsa oss v4l2 sdl mpegpes(dvb)
    Video output: v4l2 matrixview opengl sdl gif89a pnm jpeg mpegpes(dvb) fbdev xvidix cvidix dga xv x11 xover yuv4mpeg md5sum tga

 Disabled optional drivers:
   Input: vstream radio tv-dshow librtmp live555 nemesi cddb cdda bluray smb
   Codecs: libvpx libschroedinger libdirac x264 xvid libdv libopencore_amrwb libopencore_amrnb qtx win32 faad2 
           faac musepack libdca liba52 mpg123 libtheora libgsm speex toolame twolame libmad liblzo
   Audio output: sun openal jack pulse nas esd arts ivtv dxr2
   Video output: zr zr2 ivtv dxr3 dxr2 vesa svga caca aa ggi winvidix 3dfx xmga vdpau xvmc directfb dfbmga bl xvr100 tdfx_vid wii s3fb tdfxfb mga
...

この表示のうち,Enable optional driversの部分に表示されているのが利用可能なドライバのリスト,Disabled optional driversの部分に示されているのが現在は利用できないドライバのリストです。

リストのうち,Input:に示されているのがデータの入力元に関する機能,Codecs:に示されているのがメディアの形式に関する機能,Audio output:が音声データの出力先に関する機能,Video output:が動画データの出力先に関する機能になります。ドライバのうち,(internal)と付記されているのはMPlayerが内蔵しているドライバで,DVDメディアに関する機能やffmpeg,mpeg2, mp3といった広く使われているCODECはMPlayer自身で提供していることがわかります。

"Disabled optional drivers"のリストに示された機能は,本来 MPlayerが対応しているものの,何らかの理由で現在は利用できない機能で,これらの機能を利用するには外部のライブラリなどが必要になります。

上記ではCodecs:の部分にffmpeg(internal)と表示されていますが,ffmpegは特定のCODECの名称ではなく,OSSのソフトウェアプロジェクトの名称です。ffmpegプロジェクトは多種多様なCODECを統一的に操作可能にすることを目指したソフトウェアプロジェクトで,きわめて多数の動画,音声CODECに対応したライブラリ(libavcodec)を提供しており,MPlayerだけでなく,VLCやxineといったメディアプレイヤーもffmpegを利用して多数のCODECに対応しています。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html

コメント

コメントの記入