所以可能參考價值也很低就是了.
先聲明, 我是個 "自由軟體" 愛好者. 所以 "非自由軟體" 我是一點也不想用.
也因此我的 OS 目前是 Linux.
Slingbox 絕對不在我的考慮之內, 理由可從英文版的 Wikipedia 得知
http://en.wikipedia.org/wiki/Slingbox#SlingPlayer_software
有一段有指出有人寫了相容的 player, 能多做某些功能, 於是 slingbox 官方用韌體更新並把協定加密,
讓那個 player 失效.
但是我真的很想要在我的電腦上面看電視上的動畫.
於是我開始 survey 其他家的產品.
為了避免 Slingbox 的那種事在我身上發生, 我決定購買之前先問客服
我的信樣板如下:
XXX 客服部你們好,
我對你們的 XXXXX 產品相當感興趣, 也有意購買,
但是在網路上搜尋後發現 XXXXX Player 必需使用 Windows XP 或 Windows Vista.
因為我只使用 Linux 及自由軟體.
想請問您是否有開發 Linux 版本 player 的計畫.
另外, 我目前也是 Linux 及自由軟體的開發者,
如果您能提供一些電腦主機與 XXXXX 主機間網路溝通的協定,
我願意免費幫您開發 Linux 上面的 player,
只是最後的程式碼將使用 GPL 或其他 OSI 認可的授權釋出.
我的名字 敬上
最早找到的是 Upmost NetTV. 把信寄給他們客服說明我的來意後
客服回答:
親愛的客戶您好:
目前該產品並不支援Linux的系統,不便之處,還請見諒。
謝謝您的來信, 很抱歉造成您的困擾.
若您有操作或安裝不清楚的地方,歡迎您來電詢問UPMOST工程部.
TEL:(02)2883-7222 轉工程部
ok. 放棄.
過了幾個月之後我同時找到了 AnyX 與 Digizon.
同樣的信改一改又發了過去.
結果 Digizon 沒有任何回應. (後續回應)
AnyX 在數天後回應如下.
您好,
TV Player目前尚未有Linux的版本, 但是我們的確有興趣支持開放軟體的發展.
不過產品中使用的AMR及3gpp等規格的授權模式是可能與GPL有所衝突,
雖然仍然有MPlayer這類軟體發展的計畫有支援這些規格,
所以也許可以基於這類軟體計畫開發skin或shell來連接anyX.
另外如果anyX產品所運用之相關技術授權確認不會與GPL或是LGPL等衝突,
我們將非常期待與您合作.
感謝您對anyX產品的興趣!
看起來誠意是夠..
所以我就立刻去網路商店用刷卡買了 AnyX, NT$ 3600 元
結果我後來又寄兩封信希望他們能公佈一些資訊, 結果是石沉大海
雖然最後還是沒拿到文件, 不過本來也沒說非得一定要靠他們就是了..
結果就像樓主說的, 他的 Windows player 並不穩定. 不過只要它能跑一秒對我而言也就夠了
況且樓主的一半問題其實是出在那個 Windows player.
(另外 Wine 沒辦法跑那個 player, 得要安裝一台 Windows 才行)
首先打開 sniffit(或 tcpdump) 觀測他的操作協定.
重點是他是使用 Digest 認證方式, 而且必須重複使用 nonce.
http://en.wikipedia.org/wiki/Digest_access_authentication
我不知道 curl 怎麼重複使用 nonce, 如果有人知道怎麼弄, 可否教我一下或是直接 patch 吧.
IRC #dot 上面提問等幾個小時沒解答, 最後這邊我就用 socket 硬幹了.
詳細的協定我就懶得寫了, 請參考原始碼 smuc_net.c, 其實這邊很容易用"聽"的解決.
至於視訊跟音訊是分別用兩個 HTTP connection 來傳.
而且所有的資料都被加上同步 header.
所以同步 header 要移掉先
同步 header 格式如下:
"2WP\xa0" + <資料長度: 4 bytes> + <不知道幹啥的資料: 4 bytes> + <sequence: 4 bytes> + <timestamp: 4 bytes> + "2WP\xa0"
移除同步信號後, 很容易就可以看出視訊資料是 raw mpeg4, 所以送給 gstreamer. Pipeline: src->queue->mpg4videoparse->ffdec_mpeg4->ffmpegcolorspace->xvimagesink
音訊資料我從設定頁中看到有 AMR 跟 G.726, 因為我不熟這兩個音訊, 卡了一段時間, 幸好某 J. Huang 大人給了我一個 AMR 的文件.
不過重點是 AnyX 把 3 個 AMR 的 raw packet 擠在一起. 所以除了拆掉同步信號, 還要重組這三個 raw packet.
然後又因為 Debian Lenny 裡面似乎沒有解 AMR 的 codec, 所以重組後, 再傳到那份文件裡面的 reference code 解成 raw audio (8khz, 16bits signed, 1channel).
然後 Pipeline: src->queue->audioparse->audioresample->audiorate->autoaudiosink. 就可以播啦
我做的筆記, 基本上就是這樣猜出來
http://apps.sourceforge.net/mediawiki/xynaplayer/index.php?title=ANYX_AUDIO_FRAMESIZE
參考程式碼如附檔 xyna-player-beta.tar.gz
我寫的大部份是 GPLv3 授權, 但是那個 AMR codec 因為有專利. 所以最後我整個從 source tree 中移除, 改用 dlopen 來外掛 libamrnb.
http://www.penguin.cz/~utx/amr
所以就算 ffmpeg 及 gstreamer 更新, 因為專利問題, Debian main 也不會包含 AMR codec,
http://en.wikipedia.org/wiki/Adaptive_multi-rate_compression#Licensing_and_patent_issues
所以要用 AMR 請自行編譯 libamrnb 或是從 Debian-multimedia 抓 libamrnb 套件安裝.
我建議從 AnyX 設定介面把 AnyX 改用 G.726 吧, 這樣就是 free 的.
使用方式: ./xynaplayer ip port user password
或是直接去 setting.c 裡面改預設值也可以..
操作方式: 方向鍵上下選台, 數字鍵+enter 跳台. f-全螢幕. a-切換AV
歡迎改進, (最好把 patch 寄給我)..
計畫網頁: http://sourceforge.net/projects/xynaplayer/
PaulLiu(Ying-Chun Liu)
林懷民、林百里的故事
關閉廣告