星期一, 11月 14, 2005

PVR Test ....music streamming

TV 的功能?
TV Card : haugpaug TV Card. 需要Cable 輸入和PAL TV monitor.
==>這個不用試了,因為沒有PAL的信號源。

先測試TV Card的Linux 支援(或許要先測試整個system的Linux支援?)
需要的設備:
  • Hard Disk
  • Monitor
  • Keyboard
  • 硬體支援最多的Linux Distribution (SUSE ?)
==>所以不用試了。
測試Stream Server

需要設備:
  • Hard Disk
  • HUB + Cable x 2
Audio Streamming Server : icecast.
download http://downloads.xiph.org/releases/icecast/icecast-2.3.0.tar.gz
README:
icecast 是streamming media server,支援Ogg, Corbis, MP3 audio streams.可以用來架設internet radio station
需求:
* libxml2
* libxslt
* curl
* ogg/vorbis
Install icecast in Debian

參考http://wiki.debian.org.tw/index.php/Icecast2_Intro
# aptitude install icecast2
會自動安裝icecast2 和 ices2。版本2.0.1(Debian stable)。
設定目錄一樣,在/etc/icecast2。
Debian Wiki中的DarkIce是streamer : 將音效卡的聲音錄下來,encode後送給stream server。所以如果是用來播放音樂,不必裝。
streamer用ices2 (ices支援mp3,ices2支援ogg而已)
因為只支援ogg,所以要將mp3轉ogg : mp32ogg
# apt-get install mp32ogg
icecast2將音樂檔encode後由stream的方式送出,就像是一個file server一樣,不過protocol是stream。所以要聽音樂的話,首先要知道那一首歌的file path,然後在撥放器中開啟類似
http://61.78.111.23:8000/file/image.mp3
這樣就可以。
但是這樣不像電台,所以需要一個能夠依照playlist讀取音樂檔,讓stream server讀取,達到自動播放的功能。
這個程式就是ices2 (或是icecast-client package裡的shout ?)

2.0.1 Document的 筆記:

icecast以同時對許多聽眾服務,每一個聽眾可以選擇不同的音樂(stream source)。
每一個音樂(stream)視為一個mount point。
安裝完icecast後,會有三個目錄(檔案):
conf : icecast.xml,server的設定檔
admin : 含xslt檔,icecast的web interface使用
logs : 存放icecast2的log file
在debian好像有點不一樣:在/etc/icecast2下是:admin目錄,icecast.xml file和web 目錄

修改設定檔:icecast.xml
<source-password> - client使用的password (?) : hackme
<admin-password> - access icecast的admin功能時使用 : hackme
<listen-socket> - port和bind address : 8000
<log-dir> - log file的目錄 : /var/log/icecast2
<webroot> - static的內容(資料)所在目錄 (file serving root) : /usr/share/icecast2/web/
<adminroot>- admin xslt 檔所在目錄 : /usr/share/icecast2/admin/
設定好後(若是Debian 安裝就使用Debian的default set就可以),使用以下command啟動icecast:
#icecast2 -c /etc/icecast2/icecast.xml
如果沒有error message,check log file確認一下有沒有:
[2005-11-16 10:03:49] INFO main/main.c icecast server startd
結果:出現.
ERROR: You should not run icecast2 as root
Use the changeowner directive in the config file
將icecast.xml中changeowner的directive un-comment掉,再run一次:出現:
Change groupid to 65534
Change userid to 65534.
FATAL : could not open error logging(/var/log/icecast2/err.log): Permission denied
FATAL : could not open access logging(/var/log/icecasr2/access.log): Permission denied
FATAL : Could not start logging
看icecast.xml中changeowner directive中,change owner to nogroup:nobody但是/var/log/icecast2的owner是icecast:icecast2。所以....
su成icecast2執行看看...
#sudo -u icecast2 icecast2 -c /etc/icecast2/icecast.xml &
出現:
WARNNING: Can't change user id unless your are root.
所以....再把icecast.xml的changeowner directive comment掉...
再run一次....OK,沒有任何warnning message...
用browser check一下啟動的狀態,在browser輸入以下網址:
http://127.0.0.1: 8000/admin/stats.xml
127.0.0.1改為run icecast的ip address。會跳出login的dialog,輸入admin,密碼hackme後browser會出現代表stats的xml file:
<icestats>
<client_connections>4</client_connections>
<clients>0</clients>
<connections>5</connections>
<server>Icecast 2.2.0</server>
<source_client_connections>0</source_client_connections>
<source_relay_connections>0</source_relay_connections>
<source_total_connections>0</source_total_connections>
<sources>0</sources>
<stats>0</stats>
<stats_connections>0
</icestats>
現在icecast已經啟動,接著要準備音樂檔(mount point?)。
先用mp32ogg轉為ogg格式
如果已經是ogg就不用轉,
其實icecast2也可以直接播mp3,所以也可以不轉。
# mp32ogg *.mp3
接著大概是把這些檔案放在icecast的document root吧....
好像是/usr/share/icecast2/
這樣iceast2就已經準備好了。

接著準備收聽music stream的軟體:VLC.
到 http://www.videolan.org/ download VLC,因為這個player支援ogg.
如果是mp3,用Windows Media Player也可以
用VLC開啟icecast2 server的位置:假設歌曲是Sting的Kite.mp3:
vlcplayer_1
vlcplayer_2
就可以聽到Kite.mp3這一首歌。
從http://10.3.5.154:8000/admin/stats.xml可以看到Client由0變成1

發現Debian的設置和啟動方式是...
Debian的service control script都是在/etc/init.d/下,icecast也一樣,安裝後,會有一個icecast2 script。啟動:
# /etc/init.d/icecast2 start
出現:
icecast2 daemon disable -- read  /etc/default/icecast2
cat /etc/default/icecast2後,看到最後有一項
ENABLE=false
把他改成true後再run /etc/init.d/icecast2後...
Usage: /etc/init.d/icecast2 {start|stop|restart|reload|force-reload}
所以知道和一般service一樣。

Streamer : IceS 2
ices2應該是依照playlist依序將很多歌曲串起來,成為一首歌,讓icecast2播放的程式。
ices2 document的筆記 http://www.icecast.org/docs/ices-2.0.0/
What does IceS do?
IceS 讀取audio資料,resampling (down-sampling以達到比較小的bit-rate)。
What input Can IceS handle ?
  • OSS - Open Sound System , Linux用的,從sound card讀取資料
  • ALSA - Advance Linux Sound Architecture,和OSS類似但是有改進
  • stdinpcm - standard input 作pcm 音源
  • playlist - 從playlist依次讀取很多檔案
  • sun - Sun Solaris, OpenBSD的sound system
How do you start IceS ?
寫好ices的configuration file ,啟動時pass給ices :
# ices /etc/ices.xml

沒有留言:

網誌存檔