第六個工作天,發現新工作好像是比原來想像中還要更深的火坑Q.Q
所以開始要來做長期抗戰的準備...
第一個想到的是,我追了一段時間的連續劇,雨後驕陽
如果可以,凡事最好先準備替代方案...
除了先錄起來以外,所以我又回頭研究DVBT串流的方案...
(之前研究過,當初是為了在家裡的時候,可以很方便的用PAD看不同頻道XD)
最初的想法,DVBT的TS本身就是mpeg2或h264的編碼,
不需要重新轉碼,Pad或手機應該都可以輕鬆處理。
那最大的問題就在串流的部分了...
基本上也是東參考西參考來的,就直接整理如下...
- FunUV數位電視棒的Linux支援
Siano MDTV receiver(usb vid:187f pid:0202)
http://cateee.net/lkddb/web-lkddb/SMS_SIANO_MDTV.html
Linux Kernel support的範圍2.6.31–2.6.39, 3.0–3.6,基本上都有支援
但插上去的時候會有錯誤,因為缺少正確的Firmware
https://forums.mageia.org/en/viewtopic.php?f=23&t=4353
下載firmware,更名為對應的檔案名稱
以我的為例$cd /lib/firmware
接著掛載對應的module
$sudo wget http://www.steventoth.net/linux/sms1xxx/sms1xxx-hcw-55xxx-dvbt-02.fw
$sudo mv sms1xxx-hcw-55xxx-dvbt-02.fw dvb_nova_12mhz_b0.inp$sudo modprobe smsdvb
重新插拔電視棒應該可以在dmesg看到正確的註冊USB裝置了 - 安裝vlc,使用台灣的數位電視組態檔
$sudo apt-get install vlc
vlc支援數位電視棒,但是要正確播放需要不少設定,包括頻率、頻寬、編碼、調變等等阿哩不搭的
所以有好心人士整理了一份!
http://electronmania.blogspot.tw/2012/07/channelsconf-15sd4hd.html
但是在這邊只是拿來參考用的XD,因為我並不是要直接看,而是要串流出去
至於如果將整個頻道一起串流出去我還沒想到怎麼幹,需要再花時間研究研究 - 透過cvlc與vlm在console下直接進行串流轉送
基本上參考這篇網誌
http://evilshit.wordpress.com/2013/08/10/how-to-stream-multiple-tv-channels-with-a-single-dvb-t-tuner-using-vlc/
建立dvbstream.vlm時有些地方需特別注意new dvbt1 broadcast enabled
這部分可以對照著上面參考的網誌來看
setup dvbt1 input "dvb-t://"
#第一個電視棒,如果有一個以上的電視棒,這邊需要注意
setup dvbt1 option dvb-adapter=0
#指定頻率,因為tuner一次只能設定一個頻道,怎樣才能動態切換這個還要研究研究XD
#頻率請參考上一段的台灣電視組態檔
#這裡以台視為例,台視的頻率是581MHz
setup dvbt1 option dvb-frequency=581000000
#頻寬,台灣使用的頻寬為6MHz
setup dvbt1 option dvb-bandwidth=6
#頻道ID,數位電視當中一個頻道可以放很多節目,以台視為例
#頻道ID為400,401,402,403 其中403為HD頻道
setup dvbt1 option programs=400,401,402,403
setup dvbt1 option ts-es-id-pid
#這裡使用的是走http通訊協定,http格式的寫法就不多解釋了
#需特別注意的是,output的設定必須要同一行
#否則cvlc會有vlm錯誤的訊息
setup dvbt1 output #duplicate{dst=std{
access=http,mux=ts,dst=:8080/400},select="program=400",dst=std{access=http,mux=ts,dst=:8080/401},select="program=401",dst=std{access=http,mux=ts,dst=:8080/402},select="program=402",dst=std{access=http,mux=ts,dst=:8080/403},select="program=403"}
control dvbt1 play
最後執行cvlc來進行串流$ cvlc -vvv --extraintf telnet --vlm-conf dvbstream.vlm
-vvv是verbose,除錯用的參數
如果功能正常可以移掉這個參數 - 最後,用播放軟體,例如vlc、windows media player,或是android上的vlc、mxplayer,開啟網路串流
輸入網址就可以看到畫面了
以我的為例,輸入http://192.168.1.10:8080/400
就可以正常播放!!!!
不過在測試的過程中,播放HD頻道時,
似乎因為我的CPU太虛弱(VIA C7-1500),
第一次還因為verbose的訊息,疑似當掉的現象
第二次移掉verbose後,用不同的播放軟體播放HD頻道時,有各種奇怪的狀況
例如沒有畫面,但網路有在動
或是只有聲音沒有畫面
透過手機、平板的mxplayer播放時,手機是完全不會動
平板的話,使用軟體解碼器播放時,畫面有出現,但是花屏非常嚴重
使用硬體解碼器播放時,則是直接閃退...
但是先前在主要的工作機上(Intel e6420)測試卻沒有這種現象...
以後有空再繼續研究好了
先留個紀錄:)
請問~不知道支援Linux,那有沒有支援android。不知道有沒有考慮研究一下?
回覆刪除不知道有支援android的可能性?是否考慮研究一下?
回覆刪除Android有,但實現的難度更高
回覆刪除因為大多數的Android裝置,底層kernel沒有開啟dvb裝置的支援,如果你要用Android實現的話,可能你得先弄到完整的source自己編image。
如果想要用這種嵌入式的方案
便宜的可以參考Rasberry Pi,網路上有不少資源
不介意花點錢,要省事一點
可以直接參考一些現成方案
例如Android可以考慮iDTV
或圓剛的數位電視分享盒
或群暉的nas就已經包好一個可以直接使用的方案