FreeBSDで、テレビを見たりなんだりするメモ

サーバサイドで録画予約ができると便利だねってことで。画質にこだわるなら専用機を買いませうw

一昔前のビデオカード IO-DATA GV-BCTV5/PCIを使う

FreeBSDには、ビデオキャプチャのチップセット bt8x8系に対応したデバイスドライバがFreeBSD2.2時代からある。

そして、手持ちのマシンにもbt8x8系チップを載せている IO-DATA GV-BCTV5/PCIが、同 GV-MPG3TV/PCIと入れ替わりで余っていたり。

と、言うことで、FreeBSDマシンにGV-BCTV5/PCIを差してみました。

今回の環境

今回のFreeBSDのバージョン情報は以下の通り

Copyright (c) 1992-2004 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 4.10-RELEASE-p2 #0: Sat Jul 24 05:11:59 JST 2004
root@fs.local.hari.to:/usr/obj/usr/src/sys/FS
Timecounter "i8254" frequency 1193182 Hz
Timecounter "TSC" frequency 1716912700 Hz
CPU: Intel(R) Celeron(R) CPU 1.70GHz (1716.91-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0xf13 Stepping = 3
Features=0x3febfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM>
real memory = 268369920 (262080K bytes)
avail memory = 257454080 (251420K bytes)

pcm0: <Intel ICH4 (82801DB)> port 0xc400-0xc43f,0xc000-0xc0ff mem 0xe2202000-0xe22020ff,0xe2201000-0xe22011ff irq 11 at device 31.5 on pci0
pcm0: <Avance Logic ALC650 AC97 Codec>

GV-BCTV/PCIは、オンボードサウンドのAUX1(mixerでは、line1につなげました)

KERNELコンフィグ&再コンパイル

とりあえず、以下を追加(4.10-RELEASE)

device bktr
device smbus
device iicbus
device iicbb
device iic
device iicsmb


options OVERRIDE_CARD=CARD_IO_BCTV3
options OVERRIDE_TUNER=PHILIPS_FR1236_NTSC
options OVERRIDE_MSP=1
options BROOKTREE_SYSTEM_DEFAULT=BROOKTREE_NTSC

編集後、make KERNCONF=myKernel buildkernel installkernel ; reboot します。

再起動後に、以下の行が出ればOK。

bktr0: <BrookTree 878> mem 0xe2100000-0xe2100fff irq 9 at device 1.0 on pci2
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicsmb0: <I2C to SMB bridge> on iicbus0
smbus0: <System Management Bus> on iicsmb0
iic0: <I2C general purpose I/O> on iicbus0
iicbus1: <Philips I2C bus> on iicbb0 master-only
iicsmb1: <I2C to SMB bridge> on iicbus1
smbus1: <System Management Bus> on iicsmb1
iic1: <I2C general purpose I/O> on iicbus1
smbus2: <System Management Bus> on bti2c0
bktr0: Detected a MSP3433 at 0x80
bktr0: I/O DATA GV-BCTV3/PCI, Philips FR1236 NTSC FM tuner, msp3400c stereo.
pci2: <unknown card> (vendor=0x109e, dev=0x0878) at 1.1 irq 9

unknown card なのは、PCIのベンダーコード、デバイスコードが、GV-BCTV3/PCIと異なる為でしょう。気になる人は、/usr/src/sys/dev/bktr/bktr_card.c を修正しましょう。修正しなくても動作には支障ないです。

動作確認用にfxtvを入れます。

ファイルサーバなので本来は、Xサーバなんて重いモノは載せませんが、動作確認の為にちょこっと入れます。その後に、/usr/port/multimedia/fxtv/ をそのまま入れます。

インストール後、Fxtvのリソースを日本語環境に合わせて変更します。mixserChannelはサウンドカードに合わせます。

Fxtv*inputFormat:       ntscj
Fxtv*defaultInput: tuner
Fxtv*defaultAudioInput: tuner
Fxtv*tunerMode: antenna
Fxtv*defaultChannel: 58 Fxtv*antennaStationList: NHK-G(50) NHK-E(52) MBS(54) ABC(56) KTV(58) YTV(60) KBS(62)
Fxtv*antennaFreqSet: jpnbcst
Fxtv*cableFreqSet: jpncable
Fxtv*mixerChannel: line1

Xサーバを立ち上げて、スピーカーの調節を行い、fxtvを起動します。 チャンネルに合わせて映像と音声が切り替わります。

動作確認が、終わったら、余分なモノはさっくり削除します。 (^^;

ffmpegを入れる

/usr/ports/multimedia/ffmpeg/Makefile をちょっとのぞいてみて、オプションをチェックします。

WITH_OPTIMIZED_CFLAGS がちょっと有効そうなので /etc/make.conf に入れておきます。

WITH_BKTR_FORMAT と WITH_BKTR_DEV というのがありますが、ffmpeg/files/grob_bktr.c を見ると後から環境変数で設定できるようなので、特に指定しないでもいいかな。

portinstall でさっくりインストールします。

ffserverを立ち上げる

/usr/local/etc/ffserver.conf.example を元に ffserver.conf を作成し、ffserver を別窓で起動しておきます。

更に別窓でつなげて、

mixer =rec line1
mixer rec 10
bsdbktr_tvtune 58
BKTR_DEV=1 export BKTR_DEV
BKTR_FORMAT=6 export BKTR_FORMAT
ffmpeg http://127.0.0.1:8090/feed1.ffm

のような感じで接続します。

あとは、windows上のIEから http://host:8090/stat.html にアクセスして、test.asfをクリックしてメディアプレイヤーからテレビが見られればOK。