on bti2c0
 bktr0: Card has no configuration EEPROM. Cannot determine card make.
 bktr0: Pinnacle/Miro TV, Philips NTSC tuner.
(page 17)
Linuxでのカーネル再構築手順(Bt8x8編)
	
	- 一般的な手順と同じでよい
		
		- カーネルの設定変更
 # cd /usr/src/linux
 # make menuconfig (あるいはmake xconfig)
 
- カーネルのコンパイルとインストール
 # make dep clean bzImage modules modules_install
 # cp arch/i386/boot/bzImage System.map /boot/
 
- デバイスファイルの作成
 # cd /dev
 # ./MAKEDEV video  ← キャプチャー用
 # ./MAKEDEV audio  ← サウンド用
 
- /etc/modules.confの設定
 # vi /etc/modules.conf
 
- 再起動
 # reboot
 
 
(page 18)
カーネルの設定変更(Bt8x8編)
	
	- Multimedia devices → Video 4 Linuxをmに
		
		- その下のVideo 4 Linux → BT848 Video 4 Linuxをmに
		
 
(page 19)
カーネルの設定変更(Bt8x8編)(つづき)
	
	- Video 4 Linuxを使うために必要な設定
		
		- Character devices → I2C support
			
			- I2C support, I2C bit-banging interfacesをmに
			
 
 
- サウンド関係の設定
		
		- Sound Card Supportをyに
		
- 持っているサウンドカードに対応した設定をする
		
- デバイスドライバはOSSを使用
			
		
 
(page 20)
/etc/modules.confの設定(Bt8x8編)
	
	- BT878A-STVPCI2使用時の追加項目
 alias char-major-81 bttv  ←デバイス番号
 options bttv  card=78      ←キャプチャーカード番号
 options tuner type=2       ←TVチューナー番号
 
- カード/チューナーの番号は
	/usr/src/linux/Documentation/video4linux/bttv/CARDLISTを参照
	
- キャプチャーカード番号の例
 card=0   -  *** UNKNOWN/GENERIC ***
 card=78 - Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF
 card=81 - GV-BCTV5/PCI    (IO/DATA)
 card=99 - AD-TVK503       (アルファデータ)
 
- TVチューナー番号の例
 type=2   - Philips NTSC (FI1236,FM1236 and compatibles)
 type=4   - NoTuner
 type=31 - SHARP NTSC_JP (2U5JF5540)
 type=40 - HITACHI V7-J180AT
 
(page 21)
bttvドライバ使用時のデバイス認識
	
	- モジュールとして組み込んだときは、デバイス使用時に認識される
	
% dmesg
 (抜粋)
 Linux video capture interface: v1.00
 bttv: driver version 0.7.104 loaded
 bttv: Bt8xx card found (0).
 bttv0: using: BT878(Jetway TV/Capture JW-TV) [card=78,insmod option]
 i2c-core.o: adapter bt848 #0 registered as adapter 0.
 bttv0: using tuner=5
 i2c-core.o: driver i2c TV tuner driver registered.
 tuner: probing bt848 #0 i2c adapter [id=0x10005]
 tuner: chip found @ 0xc0
 tuner(bttv): type forced to 2 (Philips NTSC (FI1236,FM1236 and ..)) [insmod]
 bttv0: registered device video0
 bttv0: registered device vbi0
 bttv0: registered device radio0
(page 22)
Linuxでのカーネル再構築手順(SAA713x編)
	
	- 普通の再構築に比べて手間が増える(※の部分)
		
		- ※カーネル2.4のソースコードにパッチを当てる
		
- カーネルの設定変更
		
- カーネルのコンパイルとインストール
		
- デバイスファイルの作成
		
- (慎重にやるならここで再起動)
		
- ※saa7134ドライバのインストール
		
- /etc/modules.confの設定
		
- 再起動
		
 
(page 23)
カーネル2.4のソースコードにパッチを当てる
	
	- カーネル2.4.22以上のソースコードを用意
 # cd /usr/src
 # tar xfj linux-2.4.22.tar.bz2
 # ln -s linux-2.4.22 linux
 
- Video for Linux 2を使うためのパッチを入手
		
	
- パッチをあてる
 # bzip2 -dc patch-2.4.22-kraxel.gz | patch -p1
 
(page 24)
saa7134ドライバのインストール
	
	- ソースコードを入手
		
	
- コンパイルしてインストール
 % tar xvfz saa7134-0.2.10.tar.gz
 % cd saa7134-0.2.10
 % make KDIR=/usr/src/linux
 # make install
 
(page 25)
/etc/modules.confの設定(SAA713x編)
	
	- SAA7130-STVLP使用時の追加項目
 alias char-major-81 saa7134  ←デバイス番号
 options saa7134  card=10      ←キャプチャーカード番号
 options tuner type=2             ←TVチューナー番号
 
- キャプチャーカードの番号はsaa7134-0.2.10/doc/CARDLIST.saa7134を参照
 0 -> UNKNOWN/GENERIC
 5 -> SKNet Monster TV
 10 -> Kworld/KuroutoShikou SAA7130-TVPCI
 13 -> ELSA EX-VISION 300TV
 14 -> ELSA EX-VISION 500TV
 16 -> AOPEN VA1000 POWER
 
- TVチューナーの番号はsaa7134-0.2.10/doc/CARDLIST.tunerを参照
		
	
(page 26)
saa7134ドライバ使用時のデバイス認識
	
	- モジュールとして組み込んだときは、デバイス使用時に認識される
	
% dmesg
 (抜粋)
 i2c-core.o: i2c core module
 Linux video capture interface: v1.00
 saa7130/34: v4l2 driver version 0.2.9 loaded
 saa7130[0]: subsystem: 1131:0000, board: Kworld/KuroutoShikou SAA7130-TVPCI [card=10,insmod option]
 i2c-core.o: adapter saa7130[0] registered as adapter 0.
 i2c-core.o: driver i2c TV tuner driver registered.
 tuner: chip found @ 0xc0
 tuner(bttv): type forced to 2 (Philips NTSC (FI1236,FM1236 and ..)) [insmod]
 tuner: type already set (2)
 saa7130[0]: registered device video0 [v4l2]
 saa7130[0]: registered device vbi0
(page 27)
TV視聴アプリケーション
	
	- あれこれ紹介せずに、代表的なものを紹介
		
		- FreeBSD: fxtv
		
- Linux: xawtv
		
 
(page 28)
fxtv
	
(page 29)
fxtvの設定方法
	
	- fxtvには設定ファイル(.fxtvなど)がないらしい
		
		- 膨大かつ長いコマンドオプションで設定
		
- Xのリソースファイルで設定
			
			- オリジナルは/usr/X11R6/lib/X11/app-defaults/Fxtv
			
 
 
- 今回はXのリソースファイルで設定
 Fxtv*inputFormat:            ntscj
 Fxtv*defaultInput:            tuner
 Fxtv*defaultAudioInput:  tuner
 Fxtv*tunerMode:             cable   (アンテナの場合はantenna)
 Fxtv*cableFreqSet:           jpncable
 Fxtv*cableStationList:     1-12   (CATVのチャンネル範囲に合わせる)
 Fxtv*antennaFreqSet:      jpnbcst
 Fxtv*antennaStationList: NHK(2) MBS(4) ABC(6) KTV(8) YTV(10)
 
(page 30)
fxtvの使い方
	
	- チャンネルの切り替え: ↓↑ボタン
	
- 入力系統の切り替え: Input → Tuner/S-Video
	
- 画面の拡大
		
		- 起動時はオプションで指定
 % fxtv -geometry 640x480
 
- 起動後は×ボタンで拡大/縮小
		
 
- フルスクリーンで表示する方法は不明(ないかも)
	
- 大画面で見たいときは
		
		- あらかじめXFree86を低解像度で表示できるように設定
		
- xvidtune -nextで解像度を切り替える
		
 
- 画像の取り込み、録音、録画もできる
	
(page 31)
xawtv
	
	- http://bytesex.org/xawtv/
	
- saa7134ドライバと同じ作者によるもの
	
- LinuxでもFreeBSDでも動く
	
- 最新版は3.91
	
- rpm,dpkg,FreeBSDのportsにもあり
		
		- VinePlusで提供されているrpmはバージョンが古い
		
 
- ソースコードからのインストール手順
 % configure
 % make
 # make install
 
(page 32)
xawtvの設定
	
(page 33)
.xawtv設定上の注意
	
	- 一部の設定項目において、大文字が有効なときと小文字が有効なときがある
		
		- 小文字: ntsc,television,svideo,compisite1
		
- 大文字: NTSC,Television,S-Video,Composite1
		
- 最近のバージョンでは小文字表記らしいのだが…
		
 
- どちらか片方しか有効にならない(もう片方だとエラーになる)
	
- xawtv起動時に怒られたら修正する
	
(page 34)
xawtvの使い方
	
	- チャンネル/入力系統の切り替え: マウス左クリック → 選択
	
- 画面サイズは起動時のオプションで
 % xawtv -geometry 640x480
 
- フルスクリーン表示: 画面内でF
		
		- fxtvの所で紹介した方法でXを低解像度にしておくと大画面になる
		
 
- 画像の取り込み、録音、録画もできる
		
		- XFree86起動時にXvideoを有効にしていると取り込めない
		→ xawtv -noxv で起動すれば取り込める
		
 
(page 35)
xawtv使用上の注意
	
(page 36)
v4lctl  (V4LCTL)
	
	- Video 4 Linuxデバイス操作コマンド
	
- xawtvの付属品
	
- チャンネルの操作
 % v4lctl setchannel 1ch
 
- 入力系統の操作
 % v4lctl setinput svideo
 
- チャンネル名や入力系統は.xawtvを参照して動作する
	
- ところが、v4lctlとxawtvで.xawtvの記法が異なることがある
		
		- ntsc/NTSC,svideo/S-Videoなど
		
- 対策: 設定ファイルを2種類用意し、切り替えて使用
		
 
- リモートで操作するときに役立つ
	
(page 37)
リモートでTVを見る方法
	
	- 基本アイデア
		
		- TVチューナーカードから得た映像/音声を
		ストリーミングで流し、端末で受信する
		
- 今回はRealVideoを使う方法を紹介
		
 
- システム構成
   
- この方法の特徴
		
		- さまざまな接続形態に対応できる
			
		
- 映像だけでなく音声も届き、同期も取れる
		
- 画質は期待できない(特に低速回線で見るとき)
		
 
(page 38)
リモートでTVを見るために必要なもの
	
	- Helix Producer: エンコーダ
		
		- RealVideo9コーデックを使用
		
- 必ずTVチューナーと同一マシンで動かす
		
 
- Helix Universal Server: サーバ
		
		- 今回はTVチューナーと同一マシンで動かすが、別マシンでも可
		
 
- RealPlayer: プレーヤー
		
		- TVチューナーと別マシンで動かす
		
- 同一マシンにもインストールしておくと動作確認時に役立つ
		
 
- 常時接続回線とグローバルIPアドレス
		
	
- TVサーバはLinuxで構築
		
		- Helix ProducerにFreeBSD版がないため
		
 
- 端末はRealPlayerさえ動けばどんなOSでもよい
		
	
(page 39)
RealPlayerのインストール
	
	- Windows, Macの人: RealOnePlayerを使用
		
	
- Linux, BSDの人: RealPlayer8(Linux版)を使用
		
		- BSDの人はLinuxエミュレータ使用
		
- RealVideo9コーデックに未対応
		→ 後からライブラリを追加して対応
		
 
(page 40)
RealPlayer8のRealVideo9コーデック対応方法
	
	- RealVideo9対応パッケージを入手
		
	
- 入手したファイルを展開
	
- RealVideo9用ライブラリを
	    RealPlayer8用ライブラリのディレクトリにコピー
 % cd rv9/codecs
 % cp drv4.so.6.0 rv40.so.6.0 /usr/local/lib/RealPlayer8/Codecs
 
- RealPlayerを起動して動作確認
		
	
- FreeBSDのportsでRealPlayerをインストールすると、
	RealVideo9対応ライブラリが自動的に追加される
	
(page 41)
Helix Producerのインストール
	
	- Helix Producer Basic(無償版)を入手
		
	
- 入手したファイルを実行してインストール
		
	
- 注意: サウンドドライバはOSSを使うこと
		
		- Helix ProducerはALSAに対応していないらしい
		
 
(page 42)
Helix Producerが使うデバイスの検出
 % producer -pd
 VIDEO
 Device 00: Kworld/KuroutoShikou SAA7130-TV /dev/video0
 Port 00: S-Video         ← スカパー
 Port 01: Composite1
 Port 02: Television     ← TVチューナー
 AUDIO
 Device 00: Sound Blaster /dev/dsp
 Port 00: synth
 Port 01: line               ← スカパー
 Port 02: mic               ← TVチューナー
 Port 03: cd
(page 43)
Helix Producerの動作確認
	
	- v4lctlでTVを起動
 % v4lctl setstation 1ch
 
- Helix Producerでファイルに出力(つまり録画)
 % producer -ac 00 -ap 02 -vc 00 -vp 02 -cs 240x180 -ad '150k' -o test.rm
 
		- -ac: オーディオデバイス番号
		
- -ap: オーディオポート番号
		
- -vc: ビデオデバイス番号
		
- -vp: ビデオポート番号
		
- -cs: 画面サイズ
		
- -ad: 帯域
		
- -o: 出力ファイル名
		
 
- 適当な所でCtrl-Cを打って録画終了
	
- RealPlayerでtest.rmを再生できればOK
	
(page 44)
Helix Universal Serverのインストール
	
	- Helix Universal Server Basic(無償版)を入手
 http://licensekey.realnetworks.com/rnforms/products/servers/eval/index.html?ulf=b
 
- 入手したファイルを実行してインストール
	
- インストール時にいろいろと指定する
		
		- ライセンスキー: 入手するとXML形式のファイルがメールで届く
		
- インストール先のディレクトリ
		
- ユーザ名とパスワード: エンコーダからの
		ストリーム受付や管理画面での認証に使用
		
- 各種ポート番号: 
		PNM(デフォルト: 7070)、RTSP(デフォルト: 554)、
		HTTP(デフォルト: 80)、MMS(デフォルト: 1755)、
		管理画面(デフォルト: 乱数)
		
 
- 起動
 # cd (インストール先)
 # Bin/rmserver rmserver.cfg
 
- RealPlayerで動作確認
		
		- rtsp://serverhost.domain.jp/real9video.rm が再生できればOK
		
 
(page 45)
Helix ProducerからHelix Serverへの送出
	
	- 同一マシンでProducerとServerを動かすとする
 % producer -ac 00 -ap 02 -vc 00 -vp 02 -cs 240x180 -ad '28k,56k,256k' -sp username:password@localhost:80/stream.rm
 
	- -ad: 帯域
		
		- 複数指定すると、回線状況に応じて帯域が動的に変化(SureStream)
		
- 指定できる数字は、$INSTALLDIR/audiences/ を参照(最大3つ)
		
 
- -sp: Helix Serverとの接続方法、ストリーム名など
		
		- 書式: username:password@serverhost.domain.jp:port/stream.rm
		
- username,password: Helix Serverインストール時に指定したもの
		
- serverhost: Helix Serverのホスト名かIPアドレス
		
- port: Helix Serverインストール時に指定したHTTPポート番号
		
- stream.rm: ストリーム名(自由に指定)
		
 
- RealPlayerで動作確認
		
		- rtsp://serverhost.domain.jp/broadcast/stream.rm
		が再生できればOK
		
 
 
(page 46)
外出先からの接続
	
	- 必要なもの
		
	
- システム構成
		
		- TVサーバがグローバルIPアドレスを持っているとき
			
			- 端末からは、そのIPアドレスのHelix Serverにアクセスする
			
 
- TVサーバがプライベートIPアドレスを持っているとき
			
			- 例えば、自宅にLANがあるとき
			
- たいていルータが入っているので、そこで細工する
			
 
 
(page 47)
自宅にLANがあるときの構成
	
	- システム構成
	
- ルータでの設定
		
		- IPマスカレードの設定により特定ポートへのアクセスをTVサーバに向ける
		
 
- IPマスカレードを設定するポート
		
		- RTSPのポート(デフォルト: 554/tcp)
		
- HTTPのポート(デフォルト: 80/tcp)
		
- 管理画面のポート(デフォルト: 乱数/tcp)
		
- モニター画面のポート(デフォルト: 9090/tcp)
		
- SSHのポート(デフォルト: 22/tcp)
			
		
 
(page 48)
自宅LAN内TVの視聴方法
	
	- sshでルータのアドレスを指定(アドレス変換されてTVサーバへ)
 % ssh 200.1.1.1
 
- TVを起動
 % v4lctl setstation 1ch
 
- Helix Producerを起動しストリーム送出開始
 % producer -ac 00 -ap 02 -vc 00 -vp 02 -cs 240x180 -ad '28k,56k,256k' -sp username:password@localhost:80/stream.rm
 
- RealPlayerで動作確認
		
		- rtsp://200.1.1.1/broadcast/stream.rm
		
 
- 実際にはTV視聴用シェルスクリプトを作成し、TVサーバにて実行
 % ./stream.sh 1ch 28k,56k,150k
 
		- cronやatコマンドで指定時刻に起動することも可能
		
 
(page 49)
TV視聴用シェルスクリプト
 #!/bin/sh
 #$1: チャンネル名、$2: 帯域
 channel=$1
 bitrate=$2
 #すでにxawtvが動いていたらkillする
 killall xawtv
 #v4lctlでTVを起動
 cd $HOME
 cp .xawtv-big .xawtv
 /usr/local/bin/v4lctl setstation $channel
 #入力系統に応じた設定
 case $channel in
 skapa) #スカパー
 	# audio from line
 	audioport="01"
 	/usr/bin/aumix -l 60
 	/usr/bin/aumix -m 0
 	# video from S-Video
 	videoport="00"
 	;;
 *)     #地上波
 	# audio from mic
 	audioport="02"
 	/usr/bin/aumix -l 0
 	/usr/bin/aumix -m 50
 	# video from Television
 	videoport="02"
 	;;
 esac
 
 #producerを起動
 /usr/local/bin/producer -ac 00 -ap $audioport -vc 00 -vp $videoport -cs 240x180 -ad $bitrate -sp username:password@localhost:80/stream.rm
(page 50)
回線状況に応じた設定
	
	- サーバ〜端末の回線状況を推測し、エンコーダの帯域を設定する
	
- 低速回線で接続しているとき(PHSなど): 28k固定で設定
	
- 高速回線で接続しているとき(ホテルのLANなど): 150kぐらいの固定で設定
		
	
- 回線状況が大きく変化するとき(会社のLANなど): 幅広く3種類選んで設定
		
	
(page 51)
映像素材に応じた設定
	
	- 動きの多い素材(スポーツ中継など): フレーム数を重視する
		
		- 画面サイズを小さくする
		
- producerコマンドで-vm smoothを追加する
		
- ただし低速回線のときは、フレーム数を稼ぐのはあきらめる
			
		
 
- 動きの少ない素材(ニュース、ドラマなど): 各コマの画質を重視する
		
		- producerコマンドで-vm sharpを追加する
		
 
(page 52)
まとめ
UNIXマシンでTVを見る方法を紹介
	
	- UNIXマシンでTVチューナーカードを動かす
		
		- FreeBSD
			
		
- Linux
			
			- Bt8x8系チップとbttvドライバ
			
- SAA713x系チップとsaa7134ドライバ
			
 
 
- TV視聴アプリケーションを動かす
		
		- FreeBSD: fxtv
		
- Linux: xawtv
		
 
- リモートでTVを見る
		
		- RealVideoによるライブ配信(見るのは自分だけ)
		
 
(page 53)
参考文献
	
	- BSD magazine 第9号(2001年): bktrドライバ、fxtvの紹介
	
- UNIX magazine 2001年8月号「UNIX便利帖」: fxtvの紹介
	
- Software Design 2003年3月号「Linux, ビデオデッキ化計画」
	
- 「Linuxカーネル設定ガイド」翔泳社
	
- 「Helix Universal Server Advanced Book」BNN新社
	
- Linuxでのハードディスクレコーダ構築の記事
		
		- 日経Linux 2003年12月号
		
- Software Design 2004年2,3月号
		
 
	
(page 54)
質問受け付けます
	
	
(page 55)