MPlayer

MPlayer は Linux 上で動作するマルチメディアプレーヤー。

各種ライブラリのインストール

MP3 を再生するため、 LAME をインストール。/usr/local/ 以下に入る。

$ cd /usr/local/
$ tar zxvf lame-3.93.1.tar.gz
$ cd lame-3.93.1
$ ./configure
$ make
# make install

DVD を観るために、 libdvdcss と libdvdread ( UNIX 上で動作する DVD Player Ogle のページからダウンロードできる ) をインストール。両者とも /usr/local/ 以下に入る。

$ cd /usr/local/src
$ tar jxvf libdvdcss-1.2.8.tar.bz2
$ cd libdvdcss-1.2.8
$ ./configure
$ make
# make install
$ cd /usr/local/src
$ tar zxvf libdvdread-0.9.4.tar.gz
$ cd libdvdread-0.9.4
$ ./configure
$ make
# make install

Windows Media などのコーデックのファイルを再生できるように、 MPLAYERHQ.HU から w32codec をダウンロードし、 /usr/local/lib/codecs 以下にインストール。

# cd /usr/local/lib
# tar jxvf extralite.tar.bz2
# mv extralite codecs

MPlayer のコンパイル & インストール

MPLAYERHQ.HU から CVS snapshot をダウンロードして、/usr/local/src/ 以下に展開。

$ cd /usr/local/src
$ tar jxvf MPlayer-current.tar.bz2

CVS 版の MPlayer をコンパイルするためには、 FFMPEG に含まれている libavcodec が必要。 FFMPEG の CVS snapshot をダウンロードし、 その中に含まれている libavcodec ディレクトリを MPlayer のディレクトリの中へコピー。 (もしくは、FFMPEG をコンパイルするつもりがなければ移動)

$ cd /usr/local/src
$ tar zxvf ffmpeg-cvs-2003-08-22.tar.gz
$ cd MPlayer-20030822
$ mv ../ffmpeg-cvs-2003-08-22/libavcodec .

あとは ./configure ; make ; make install/usr/local/ 以下に入る。

$ ./configure
$ make
# make install

DVD 再生

基本的には以下のようにする。

$ mplayer dvd://1

-v オプションを付けて起動すると、 音声や字幕に関する、DVD に記録されているいろいろな情報が出力される。 例えば、音声を指定する場合には -alang オプションを指定する。

$ mplayer dvd://1 -alang 130

DVD → AVI

DVD の動画を DivX で 2 pass エンコード、 音声を MP3 でエンコードして AVI ファイルに出力。

まず音声だけ MP3 にエンコードし、frameno.avi というファイル名で出力。後々 2 pass エンコードする時に、 この名前のファイルがあれば音声として使われる。

最初の nice はプログラム実行の優先度の設定。 +19 は最低に設定されるので、他のプロセスが優先される。

$ nice -+19 mencoder -ovc frameno -o frameno.avi \
> -oac mp3lame -lameopts abr:br=128 dvd://1

音声のエンコードが終わった時点で、 1枚の CD-R にこのコンテンツを収めるために 最適な動画のビットレートが表示されるので、参考にする。

動画をエンコード。

$ nice -+19 mencoder -oac copy -o /dev/null \
> -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1300:vhq:vpass=1 \
> -vop scale=352:240,crop=708:480:7:0,pp=lb dvd://1

1度エンコードが終わると、 divx2pass.log という名前のファイルが作成される。 2度目のエンコードはこのファイルの情報を元に行われる。

$ nice -+19 mencoder -oac copy -o hoge.avi \
> -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1300:vhq:vpass=2 \
> -vop scale=352:240,crop=708:480:7:0,pp=lb dvd://1

-vop 以下は出力される動画のオプション。 後ろから前に処理されるらしい。この例では、

の意味。

crop の大きさを決めるためには -vop cropdetect オプションが使える。

$ mplayer dvd://1 -vop cropdetect

上のコマンドを実行すると、 コンソールに crop で抜き出す推奨サイズがプリントされるので、 それを元にカットアンドトライで値を決める。

あるファイルから欲しい部分だけ切り抜く

hoge.avi の1分〜31分までの30分を hoge2.avi に保存する場合。

$ mplayer hoge.avi -ovc copy -oac copy -ss 60 -endpos 1800 -o hoge2.avi

コーデックが DivX の場合、切り抜きだけなら作成されたファイルに問題は無いが、 切り抜いたファイル同士を連結するとおかしなことになる。

本格的な編集には avidemux を使う方がいいかもしれない。

ストリーミングデータのダウンロード

まずはリンクの張られている asx ファイルをダウンロード。 XML のような文法になっているので、 その中から href で指定されている URLを見つける。 そして、以下のように実行。

$ mplayer mms://somewhere/hoge.asf -dumpstream

すると、実行したディレクトリに stream.dump というファイルが 作成される。これを適当にリネームする。

$ move stream.dump hoge.asf

TV 観賞

TV を観るためには、以下のコマンドを実行。

$ mplayer tv:// -tv driver=v4l2:device=/dev/video0:input=1:norm=NTSC\
> :width=640:height=480:chanlist=japan-bcast:channel=1

driver=v4l だと音が出ない。
device=/dev/video0 を指定しないと、 /dev/video がデフォルトで使用され、 Red Hat Linux 9 ではこれはディレクトリなのでエラーになる。
入力を S-Video にしたければ input=0 にする。

modprobe で saa7134 関係のドライバを組み込んだ直後 mplayer で TV を観ようとすると、画面が乱れたり音が出なかったりする。 ドライバを組み込んだ後、一度 xawtv を起動させてからだとちゃんと動作する。

VHS → AVI

ビデオデッキから PC にデータを取り込む。 コーデックには huffyuv を使用。 vstrict=-1 オプションを併用しないとエラーになる。

mencoder tv:// \
 -tv driver=v4l2 \
 -tv device=/dev/video0 \
 -tv norm=NTSC \
 -tv input=0 \
 -tv forceaudio \
 -tv width=640 \
 -tv height=480 \
 -tv amode=1 \
 -ovc lavc \
 -lavcopts vcodec=huffyuv:vstrict=-1 \
 -oac pcm \
 -endpos 4560 \
 -o huffyuv.avi

huffyuv で取り込んだデータを DivX で 2pass エンコード。

mencoder huffyuv.avi \
 -oac copy \
 -ovc lavc \
 -lavcopts vcodec=mpeg4:vbitrate=1800:vhq:vpass=1 \
 -vop scale=640:480,crop=622:462:8:0,pp=lb \
 -o /dev/null
mencoder huffyuv.avi \
 -oac copy \
 -ovc lavc \
 -lavcopts vcodec=mpeg4:vbitrate=1800:vhq:vpass=2 \
 -vop scale=640:480,crop=622:462:8:0,pp=lb \
 -o vpass2.avi

ここで必要なら avidemux で編集。その後、音声を MP3 でエンコード。

mencoder vpass2.avi -ovc copy -oac mp3lame -lameopts cbr:br=128 -o final.avi

最初から MP3 で音声を記録しないのは、 avidemux で編集する時に音声がずれるからだそうだ。 以上の情報は Linux でビデオ録画 [2ch 691] のコピー。

PC の電源を入れ、Linux が起動する前にビデオデッキの電源を入れておいたら、 ドライバの動作がおかしくなった。

参考リンク


viusulce@hotmail.com
Last modified: Sun Sep 14 14:51:34 JST 2003