FreeBSD上のマルチメディア環境構築

マノレチメディア〜なことをするためだけにMS-Windowsというのはなんか敗北な感じで悔しいじゃないですか。 ということでFreeBSDでその手の環境を構築するのに戦った記録をまとめます。

といっても、今までコツコツやってきたことはわざわざ思い出して書く気はほとんどないので、日記頁の方にいろいろ書き散らかしているのをGoogleとかで検索して調べるのがよいでしょう。 新たにしたことはなるべくここに自分の備忘録として書き留めていく予定ですけど。

ということでここに書いてあることは無保証です。 もちろん嘘を書くつもりはないですけど、全く同じ構成でもうまく行くかどうかは全く不明です。 最悪、利用機器が壊れてもしりません。 全部自己責任で情報をお使い下さい。


PC構成

CPU
Intel Pentium 4 2.8GHz
mother board (video card、sound card、network interface card相当機能を含む)
Intel D865GLC
主記憶
DDR-SDRAM 512MB PC3200 CL3×3
IEEE 1394
I-O DATA 1394-PCI3
HD
Maxtor DiamondMax 10 (6B250R0/BAH41BM0)×2
DVD-ROM/CD-RW
HLDS GCC-4520B
video capture
kworld Mpeg TV Station/PCI w/o FM (KW-TV878R-PRO III/M-P)
I-O DATA GV-MVP/IDV
display
IO DATA LCD-A15H (PDF 1.6MB)
基本ソフト
FreeBSD 5.3-RELEASE + XFree86-4.4.0

OS

最近のカードとかだったらkernel configで
device		pcm
で十分じゃないのかなと、思っていたら5.3Rからちょっと変わっていた。 /sys/conf/NOTESsnd_で始まるのを検索して、自分のところにあったのを探すのから始める。 どれかよく分からない場合は「pciconf -vl」で、それっぽいのを探す。 多分
    class    = multimedia
    subclass = audio
となっているのが正解。 で、その情報を元に
device		sound		# sound: The generic sound driver.
device		snd_ich		# Intel ICH PCI and some more audio controllers
				# embedded in a chipset.
とか追加する。 loadable moduleでも出来るのかもしれないけど、やったことないので知らない。 「cat /dev/sndstat」で
pcm0: <Intel ICH5 (82801EB)> at io 0xffa7f800, 0xffa7f400 irq 17 bufsz 16384 (1p/1r/0v channels duplex default)
とか出たらうまくいっているのでしょう。

MP3 decode

やっぱりmpg123でしょう。 mplayerで聞くこともあるけど。 MP3が散らかっているディレクトリで「mpg123 -v *」とかすれば十分。

MP3 encode

やっぱり午後のこ〜だでしょう。 cdrtoolsのcdda2wavと組み合わせると便利かな。 CD driveにdiscを入れて「cdda2mp3.gogo」一発でOK。 ただ、最後のtrackを取り損なう問題があるので注意。 cdrtools中のcdda2wavの別名のlist_audio_tracksの些細なbugの問題。 ちょっとパッチを作ってみた。 ports/sysutils/cdrtools/filesディレクトリにおけばOk。 作者と、portsのメンテナに修正法をemailでずいぶん前に送ったけど反応無しなのが悲しい。

次の問題が今の所未解決。

streaming

[工事中]
keyword: mplayer -dumpstream, -dumpfile, realplay, liveMedia, mmsclient, HTML source, ffmpeg asf→mp3

CD観賞

[工事中]
keyword: cdcontrol p 1

動画視聴

avifileに入っているaviplayを使うこともあるけど、大抵はmplayerを使う。 portsで自動的に入っているのを調べてそれを組み込むとかなっている部分もあるのでMakefileに書いてあるPORTSDIRを検索して、それを事前に入れておくと吉。

使ったことがあるキーボード操作は次のとおり:

→: 10秒進む
←: 10秒戻る
↑: 1分進む
↓: 1分戻る
PgUp: 10分進む
PgDn: 10分戻る
q: 終了
space: 一時停止・再開
f: 全画面表示・戻し
+ -: 音と映像のずれの調整
但し、動かすのもkey frameがある単位でなので、ない場合は「→」がいきなり30秒進んだりすることもある。

起動時optionで指定したことあるのは次のとおり:

-ss sec: sec秒だけ頭をskip。hh:mm:ssもアリ。
-nosound: 音無し
あと、縦横比が狂っているのをなんか指定したことあったけど忘れた。 online manualを見ればいいんだけど長いんだよなぁ。

既知の問題点:

streaming

keywords: ports/www/youtube_dl -f 5, tagiri

動画圧縮

[工事中]
keyword: mencoder, ffmpeg, FMP4, DIVX

DVD VIDEO

とりあえず楽に使うために/etc/devfs.conf
link acd0 dvd
とか書いておくといいかも。 反映するには「sh /etc/rc.d/devfs restart」。

とりあえずDVDの色々な操作を含めて見るのはogleで出来る。

いわゆる動画ファイルに落すには mplayer附属のmencoderを使って

mencoder dvd:// -chapter 1-1 -o 1-01.avi -oac mp3lame -lameopts cbr:preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=1536
というところか。 数字とかはmencoderのonline manualを見て、最適なのを選ぶべし。 動きが激しいとか流れる画面が時々混じるとかの偏った映像の場合は2 passにするのがいいかも:
1回目: mencoder dvd:// -chapter 1-1 -o 1-01.avi1 -passlogfile 1-01.log -oac mp3lame -lameopts cbr:preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=1536:vpass=1
2回目: mencoder dvd:// -chapter 1-1 -o 1-01.avi -passlogfile 1-01.log -oac mp3lame -lameopts cbr:preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=1536:vpass=2
1回目と2回目の違いは生成ファイルと、最後の数字だけなんだけど。

TV+Video [工事中]

とりあえずGV-MVP/IDVのチャンネル+音声変更プログラム書いてみた。

とりあえず現在はこの録画予約script tvreccronから起動して使っている。 時々手を入れていっているんだけど、なかなか満足する出来にならんなぁ。


外付HD [工事中]

やっぱ、動画ってdisk食うし、だからといって内蔵HDをそんなに入れるのもってのもあるし、外付HDはUSBだとIEEE1394だのいうとそれなりの値段するので、何とか内蔵bulk HDで済ませたい。 内蔵HDの抜き差しとなると、通常OSに起動・停止を伴うので、これもイヤ。 とすると、外付HD caseになるのだが、これもOSを止めるまではいかないがそれなりに装着とかが面倒。 世の中には、5 inch bayとかに装着、また、内蔵bulk HDにも皮をかぶせてonline抜き差しが可能になる製品もあるようだけど、「皮」部分の値段も馬鹿にならずこれもイヤ。

ということで、内蔵電源の余裕もないということからK3500TEAに細工をして使ってます。 case内の基盤にもともとついている短いATA cableを外して、通常のATA cableに差し替え、 電源cableは延長cableを買ってきて使ってます。

K3500TEAの中 K3500TEA利用中の様子

ATA cableは外し難いので、ねじりっこをつけてます。 外しやすいATA cableないかなぁ。

これで今のところIEEE1394接続でそれなりに快調に動いてます。 但し、数時間以上の長時間利用をすると暴走して挙動不審になりOS道連れの再起動になった経験あり。 1度はfsckで直らないほど中身が壊れたことも。 週に一回、一回1時間程度、最大でも連続6時間の利用で、半年ぐらいの運用ではHDの中身を論理破壊したことはありません。


リンク


最終更新日: 平成20年4月17日
作成日: 平成16年6月14日