Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

MyTV 0.0.1
post by tommy @ 04 三月, 2008 09:54

幾年前, 自從出國工作後, 就在家裡的機器上, 裝上一張電視卡, 然後利用 Helix 的程式, 讓我可以在國外連線回去看國內的電視節目 (請參考這篇). 雖然運作都很正常, 不過... 每次要打開或關閉或切換頻道時, 總要用 ssh 連回去主機操作, 說實在, 也不怎麼方便. 尤其是這一兩年來, 有許多類似的產品出現, 都可以利用 web 介面來操作. 所以.... 決定動手寫個介面來用, 就這樣, MyTV 就這麼產生了.

檔案可以由這兒抓取: http://www.teatime.com.tw/~tommy/files/mytv-0.0.1.7z

首先, 為了安全起見, 不打算直接用 root 來執行這些程式, 所以, 請在你的 Linux 上頭, 建立一個 mytv 的使用者, 然後把這個使用者加入到 video 與 audio 的群組中 (這是在 Debian 上頭的群組, 也許在不同的系統上頭, 會是不同的名字, 總之, 就是要可以讀寫 /dev/video, /dev/audio 及 /dev/dsp 等設備的權限就可以), 並且把這個使用者的 shell 改成 /bin/false, 不允許登入使用.

這個程式主要分成兩部份, 一個是 web 的介面, 放在 /var/www/mytv/ 下頭, 另一個是用來執行的部份, 放在 /var/spool/tvctrl/ 下頭, 而 web 介面的程式會經由 localhost:9991 與後端的執行程式溝通. (如果你的檔案不是放這些路徑, 或要使用不同的 port 時, 請自行更改路徑與相關 script 的內容)

接著把上頭的檔案解開來, 把 etc/cron.d/tvctrl 放到 /etc/cron.d 下頭, 這是每天用來刪除逾時的 session 與 log.

接著在你的 /etc/inetd.conf 中加上壓縮檔內的 etc/inetd.conf 內容, 如:

9991 stream tcp nowait.1000 mytv /var/spool/tvctrl/tvctrl.php /var/spool/tvctrl/tvctrl.php

然後把壓縮檔的 tvctrl 目錄裡頭的東西, 放到 /var/spool/tvctrl/ 底下, 修改 config.php 的內容:

<?php

// 預設的頻寬使用設定檔, 放在 helix producer 的安裝目錄下頭的 audiences 目錄
$default_bandwidth = '256k DSL or Cable';

// 預設的頻道
$default_channel = '56';

// 預設的畫面大小
$default_size = '320x240';

// 使用的檔名
$server_file = 'mytv.rm';

// session 逾時的秒數
$session_timeout = 86400;

// 使用 smtp auth 來認證, 如果設為 false, 表示用 pop3 來認證
$using_smtp_auth = true;

// 允許的使用者
$aUsers = array(
'tommy',
);

?>

接著, 修改 scripts/start.sh 的內容:

#!/bin/sh
 
FILE="mytv.rm"
AD="teatime"
CS="320x240"
 
if [ "$1" != "" ]; then
AD="$1"
fi
 
if [ "$2" != "" ]; then
CS="$2"
fi
 
if [ "$3" != "" ]; then
/usr/bin/v4lctl setchannel $3
fi
 
if [ "$4" != "" ]; then
FILE="$4"
fi
 
/usr/bin/v4lctl setnorm NTSC
/usr/bin/v4lctl setinput Television
/usr/bin/v4lctl setattr 'automute' off
/usr/bin/v4lctl volume mute off
/usr/bin/v4lctl volume 15
/usr/bin/v4lctl setattr 'audio mode' stereo
 
nohup /usr/local/bin/producer -ac 0 -ap 0 -vc 0 -vp 2 -cs "$CS" -ad "$AD" -sp ":livetv@localhost:30001/$FILE" > /dev/null 2>&1 &

把 producer 的 -ac -ap -vc -vp 等參數改成你的機器上所安裝的電視卡與音效卡的設定, 然後把 -sp 的參數改成你的 Helix Server 所設定的使用者與 tcp port.

接著把壓縮檔內的 web 目錄底下的檔案, 放到 /var/www/mytv/ 下頭. 依照你的需求, 更改 channel.dat, bandwidth.dat 與 screensize.dat 的內容. 這些檔案的格式都是每行一筆資料, 有兩個欄位, 用 : 做分隔, 第一個欄位是參數值, 第二個欄位是參數說明.

這樣子處理之後, 就可以利用 web 介面, 來啟動或結束 producer 的動作, 也可以切換頻道 (當然... 通常要等一陣子才會有反應).

另外, 如果你是在 windows 中使用 firefox 的話, 請修改 rtsp.reg 的內容:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\rtsp]
@="URL:RealTime Streaming Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\rtsp\shell\open\command]
@="\"C:\\Program Files\\Real\\RealPlayer\\realplay.exe\" \"%1\""

把上頭的指令改成你所使用的播放器執行檔. 再匯入這個檔案, 這樣 firefox 才能開啟 rtsp:// 的內容.

如果有任何使用上的問題... 請自己研究看看吧, 反正都是一些 php 的東西, 會 php 的應該很容易找出問題來.

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
authimage

迴響

  

Bad Behavior 已經阻擋了 61 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS