Linux 上で VideoCD を再生

SMPEG という MPEG1 ライブラリ(に付属のプログラム)で VideoCD が再生できました. あらびっくり,というわけでこのページ.


VideoCD とは

MPEG1 ビデオのストリームを CD に書き込んだもので,CD-DA と同時間のビデオを記録できます. 日本ではあまり見掛けませんが,アジア圏ではかなり普及しているそうです.

物理的なメディアは CD-DA や CD-ROM と同じものなので,CD-R ドライブがあれば VideoCD を自分で作成することができます. 私の場合,キャプチャしたビデオを VideoCD にしたりしています. (この作業は Windows 上で行っていますが)

プレーヤも専用のものが発売されています(いました?). DVD プレーヤでも再生できるそうです.

PC 上での再生環境

VideoCD は Windows (のエクスプローラ)上では ISO9660 のデータ CD として見えます. MPEGAV/ ディレクトリ以下の (なんとか).DAT というファイルが MPEG1 ストリームファイルのようです(MPEG1 そのままではないようですが). このファイルをメディアプレーヤで開くと再生することができます.

また,専用の MPEG プレーヤソフトや DVD プレーヤソフトを使っても再生することができます. この場合は,VideoCD のメニューを使用することができます.

Linux で VideoCD は ISO9660 ファイルシステムとして mount することができますが,mpegav/ 以下のファイルを読み出そうとするとエラーになります.

実は,VideoCD 上の MPEG ストリームは ISO9660 上のデータファイルとしてではなく,別個のトラックとして記録されており,ISO9660 ファイルシステム上にはそのポインタ(?)があるだけのようです.

Linux での MPEG プレーヤでは,MpegTV というプログラムで VideoCD を再生できます. が,このプログラムはフリーではありません.

インストール

SDL のインストール

SMPEG は,内部で SDL というライブラリを使用しています. というわけで,まずは SDL をインストールします. ソースは http://www.libsdl.org/download-1.1.html から get できます. 私の場合,Vine を使っているので,SRPM を get してきて,rebuild, install しました.

SMPEG のインストール

次に SMPEG 自体をインストールします. こちらのソースは http://www.3ddownloads.com/index.php3?directory=/linuxgames/loki/open-source/smpeg/ から get できます. 私の場合は,同様に SRPM ファイルを get, rebuild, install.

とりあえず再生

なにはともあれ,VideoCD を再生してみましょう. VideoCD をドライブにセットし,

plaympeg /dev/cdrom
と実行します. mount しないで,CD-ROM 全体を MPEG ファイルとして指定してやるのがポイント.

フルスクリーン再生

plaympeg では --fullscreen オプションでフルスクリーン再生もサポートしています. この場合,X の解像度も画像が最大になるものに変更されます. つまり,MPEG1 ビデオの画像サイズが 320x240 の場合,X の解像度も(設定されていれば)320x240 に変更されます.

ところで,VideoCD の場合,ビデオの解像度は 352x240 というのが一般的なようです. (規格上,他の解像度があるのかどうかは知らないのですが) 普通の XFree86 の設定で VideoCD をフルスクリーン再生すると,X の解像度は 640x480 に設定されてしまい,画像が画面真ん中に寂しく,ということになってしまいます. -s オプションで画像サイズを 320x240 と指定しても良いのですが,スケーリング処理があまりよろしくありません(単にドットを間引きしているようです).

というわけで,XFree86 で 352x240 のモードを定義してみました. なお,すべてのビデオカードでこの解像度をサポートしているかは不明ですが,少なくとも私のマシンのカード (nVIDIA RIVA TNT2) では動作しています.

まずは Modeline の定義.

Modeline "352x240"     12.588 352  368  390  450   240  245  246  262 Doublescan

Screen セクションの Display サブセクションにこのモードを追加してやります.

Section "Screen"
    Driver      "svga"
    # Use Device "Generic VGA" for Standard VGA 320x200x256
    #Device      "Generic VGA"
    Device      "nVidia Corporation|Riva TNT2 Model 64"
    Monitor     "Generic Multi Sync Monitor(Hsync 30-107KHz)"
    Subsection "Display"
        Depth       32
        Modes       "1024x768" "800x600" "640x480" "320x240" "352x240"
        ViewPort    0 0
        Virtual     1024 768
    EndSubsection
EndSection

これで,VideoCD でも画面いっぱいに再生されるようになります.


Linux のお部屋のもくじ
いまいくんのページのもくじ
2002 年 8 月 21 日更新
imai@jr0bak.homelinux.net