2014年7月9日 星期三

stream DVBT by vlc on debian

換了新工作,
第六個工作天,發現新工作好像是比原來想像中還要更深的火坑Q.Q
所以開始要來做長期抗戰的準備...
第一個想到的是,我追了一段時間的連續劇,雨後驕陽

如果可以,凡事最好先準備替代方案...
除了先錄起來以外,所以我又回頭研究DVBT串流的方案...
(之前研究過,當初是為了在家裡的時候,可以很方便的用PAD看不同頻道XD)
最初的想法,DVBT的TS本身就是mpeg2或h264的編碼,
不需要重新轉碼,Pad或手機應該都可以輕鬆處理。

那最大的問題就在串流的部分了...
基本上也是東參考西參考來的,就直接整理如下...


  1. 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
    $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
    接著掛載對應的module
    $sudo modprobe smsdvb
    重新插拔電視棒應該可以在dmesg看到正確的註冊USB裝置了
  2. 安裝vlc,使用台灣的數位電視組態檔
    $sudo apt-get install vlc
    vlc支援數位電視棒,但是要正確播放需要不少設定,包括頻率、頻寬、編碼、調變等等阿哩不搭的
    所以有好心人士整理了一份!
    http://electronmania.blogspot.tw/2012/07/channelsconf-15sd4hd.html
    但是在這邊只是拿來參考用的XD,因為我並不是要直接看,而是要串流出去
    至於如果將整個頻道一起串流出去我還沒想到怎麼幹,需要再花時間研究研究
  3. 透過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,除錯用的參數
    如果功能正常可以移掉這個參數
  4. 最後,用播放軟體,例如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)測試卻沒有這種現象...

以後有空再繼續研究好了
先留個紀錄:)

2014年5月31日 星期六

utorrent server utf8 encoding issue, CJK character will mess up the filename

我的BT機一直在調整...
BT client最初使用Transmission、Deluge,可是libtorrent似乎有bug
常常出現奇怪的link list錯誤,client就整個掛了,最後換成utorrent Linux版

加上ubuntu 12.04一直有些小問題,某些套件始終沒有更新
OS也從ubuntu換成Debian...

utorrent server即使還是Beta版本,但也算是相當穩定,占用的資源也不多
web ui不管是Desktop或是mobile版本都相當好操作
也可以透過utorrent自己提供的remote utorrent進行操作

只是有個問題困擾了我很久
抓謎片的時候,總是會出現奇怪的狀態
例如下載狀態顯示紅色的錯誤,
有一些謎片下載之後進度跑沒多少或是接近完成的時候會自動停止,而且抓不完
或是下載完成後不會移動到指定的下載目錄

進console去看,發現中文或日文都是一堆的問號
大概就可以猜測到,問題是沒有支援utf8,CJK字元造成的亂碼問題
(CJK: Chinese Japanese Korean)
只是環境已經確定有支援utf8了,為啥軟體還是有問題?
一直沒有沒有查到相關的解法...

今天換個關鍵字找到一篇網誌,
解决ArchLinux的utorrent文件名中文乱码问题
雖然OS不同,但問題的根源是一樣的

簡單說就是啟動軟體的時候,Locale的設定不正確

判斷的方式就是檢查utorrent.log
第一行會顯示目前使用的編碼
[20:53:51] Locale C
代表目前使用POSIX標準編碼,這個編碼不支援utf8
[20:53:51] Locale en_US.UTF-8
後面有utf8的後綴字才表示有支援utf8

修正的方式比較髒一點
直接修改utorrent的啟動script,加上切換locale的指令
以debian 7+utorrent server 3.3為例
修改/etc/init.d/utorrent
在執行utorrent前加上export LANG=en_US.UTF-8
強制切換locale

修改之後重新啟動utorrent即可

先前如果曾經下載過有包含CJK字元的種子
因為下載的時候已經造成亂碼無法回復,只能刪除重新下載
已經下載的資料也會因為檔名與torrent中的資訊不同,必須要手動刪除

留個紀錄:D

2014年5月26日 星期一

Hash to Magnet link converter

BT可以不需要torrent,直接透過magnet下載檔案,但magnet的普及一直沒有提升...
起碼比較大型的幾個論壇都沒有要求要放magnet link...

大多數論壇下載種子要扣積分,積分再多總有一天會扣完,
特別是我這種不太喜歡回覆沒有意義的潛水夫...

幸好,大多數論壇的制式文章中要求放驗證全碼...
就是BT torrent的hash值,每個種子都有近乎唯一的hash值可以辨認,
因此透過hash其實可以直接透過BT的DHT網路,直接取回torrent檔案
類似ed2k的KAD功能,缺點是對p2p網路的負擔會比較重一點

而magnet其實就是利用hash值加上預先定義的一些資訊,
供使用者直接下載

我總習慣直接google搜尋hash,另外找可以直接下載的torrent或是magnet直接下載
但其實,hash可以直接轉為magnet連結,只是少了許多資訊
為了省事,所以寫了一個簡單的script,
抓出文章中的hash值,自動加上magnet連結

因為chrome取消了直接安裝user script的功能,需透過tempermonkey之類的user script管理程式安裝
所以可參考這篇網誌的介紹,了解一下TemperMonkey是啥東西...
[How To] TamperMonkey:管理UserScript的Google Chrome擴充套件

Google web store: Tampermonkeyhttps://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=zh-TW

安裝好Tempermonkey後,就可以直接下載User script進行安裝

Hash to Magnet link converter
Download : http://rawgit.com/mosquito520/userscript/master/Hash_to_Magnet_link_converter.tamper.js
螢幕截圖 內容BJ4...
Change List:
v5: 
不知道為啥,漸漸有些文章直接放上不同檔案的Hash,導致判讀的困難
所以增加一個動態的表單,當輸入或貼上hash的時候直接產生magnet link

v6:
更改script source到github


預設支援伊莉與卡提諾兩個論壇
若有其他論壇有類似的內容,可以直接在Tempermonkey中修改應用的網站

若碰到沒辦法支援的論壇或是內容,可以嘗試自行修改
或留言給我,但我不一定會改XD

how do i fix an error with libc6-dev-armhf-cross in linux mint upgrade

先前升級公司用的工作機碰到這個問題 Log就不貼了,我手邊也沒有,可以參考下列連結 https://askubuntu.com/questions/1079797/how-do-i-fix-an-error-with-libc6-dev-armhf-cross-in-ubuntu...