作者: K歌之王 2009 - 12 -16 轉載請註明出處,謝謝。
本文介紹如何快速的搭建符合3GPP標準的流媒體伺服器,並能用手機內建的播放器(如realplayer)進行點播。對目前主流的REAL Helix和APPLE darwin分別介紹。
1. HELIX Streaming SERVER
先介紹REAL的helix streaming server,real提供了從採集編碼(helix mobile producer),流媒體播發(helix streaming server),到用戶端播放(RealPlayer)的一整套方案, 可以使你很方便地搭建出一個手機流媒體伺服器應用平台,而且支援的格式很全(包括Real Media , Windows Media, QuickTime和MPEG4)。但由於license昂貴,不開源,所以helix對我們一般開發人員而已 恐怕只適合做DEMO而已。 但這裡還是簡單介紹一下如何搭建HELIX伺服器。
步驟1: 下載 Helix server 11 for Windows。 對應的用戶端版本是RealPlayer 11. 安裝程式。
注意: 預設的RTSP連接埠是554, 預設的HTTP連接埠是80, 注意RTSP 554連接埠可能導致基於UDP的RTP包無法穿過電訊廠商的防火牆。 RTSP PORT可以改大一些。 而SERVER如果伺服器上運行了360安全衛士/迅雷等程式, 使用者可能無法訪問HELIX SERVER的HTTP服務,那可以把HTTP連接埠改成8080。
步驟2: 啟動HELIX SERVER, 把你要播發的檔案拷貝到C:/Program Files/Real/Helix Server/Content路徑下。 在瀏覽器輸入rtsp://localhost/mpg4video.mp4 會啟動RealPlayer播放。
步驟3: 如果你的電腦在內網的話, 需要設定靜態連接埠映射或者DMZ(把本機完全暴露給廣域網路 以實現雙向通訊)。 當然你需要有路由器的管理員帳號:)。
步驟4: 路由器的外網IP經常變動 給用戶端帶來不便。 可以註冊花生殼的網域名稱服務 (DNS), 在路由器的“動態DNS”裡綁定你的花生殼帳號,這樣你就可以使用類似lius1984.gicp.net這樣的次層網域。
步驟5: 使用手機上內建的用戶端進行點播, 輸入類似rtsp://lius1984.gicp.net/test.3gp 這樣的地址。 比如nokia內建的Realplayer, 如果wm手機 可以安裝pvplayer 也可以觀看。
注意事項:
1. 如果Realplayer無法串連或者提示“頻寬不足”,說明你要點播的檔案規格過高,無法在GPRS/EDGE下正常傳輸。 可以把檔案的碼率和幀率降低, 降到可以播放為止。
2. 如果提示“MPEG-4 在被伺服器發布以前必須被添加線索”, 說明測試檔案沒有被"流化"(建立索引), 解決方案是下載MP4BOX, 輸入命令列 mp4box test.3gp -hint
2. Darwin Streaming SERVER
Darwin是由APPLE推出的開源流媒體伺服器,可擴充性好。 下面轉載一個博友的文章,對於DARWIN的搭建和使用他已經介紹的十分詳細。他的部落格地址:http://huacnlee.com/blog/deploy-mobile-streaming-server-by-dss
最近研究了一下手機流媒體伺服器的搭建,目的是實現通過3G手機看線上視頻。
開始的時候研究了一下 Tudou手機版 ,可它哪並沒有實現線上播放,因為視頻地址是 http 協議的。參看了許多文章,終於瞭解到要用 RTSP 、MMS 這類。
RTSP 有一個來自 Apple 的開源項目:Darwin Streaming Server (DSS)
DSS 是跨平台的軟體,可以在Linux、Mac OSX 或 Windows 等上面部署。
一、DSS Windows 安裝教程:
- 從:http://dss.macosforge.org/downloads/DarwinStreamingSrvr5.5.5-Windows.exe (只有5.5的) 這裡下載 DSS for Windows
- 下載後解壓,會看到一個 Install.bat 的檔案,直接運行它就會安裝到 C:/Program Files/Darwin Streaming Server/ 並還會在 系統服務裡面加一個號 Darwin Streaming Server 的服務程式,這個就是 DSS
的 RTSP 伺服器。
- 接下來你要安裝 Perl 解譯器,可以從 http://www.perl.org/get.html 這裡下載到,然後安裝
- 裝好 Perl 後就可以在 CMD 下面使用 perl **.pl 來運行程式了
- 接下來在CMD下面做如下操作:
- # 根據提示建立 WebAdmin 的帳號和密碼
- C:/Program Files/Darwin Streaming Server>perl WinPasswdAssistant.pl
- # 運行 WebAdmin 管理器
- C:/Program Files/Darwin Streaming Server>perl streamingadminserver.pl
- # 現在可以開啟 http://127.0.0.1:1220/ 來對 DSS 伺服器進行管理了
- 在 DSS WebAdmin 裡面修改 General Settings -> Media Directory ,將它改為你的 Media 目錄,當然也可以使用預設的,把自已的視頻檔案放到 C:/Program Files/Darwin Streaming Server/Movies 裡面
- 現在你可以使用 QuickTime 或 VLC 開啟 rtsp://127.0.0.1:554/sample_100kbit.mp4 來測試視頻了,(注
sample_100kbit.mp4 是 DSS 5.5.5 內建的視頻)
二、如何將自己的視頻轉換為流媒體格式?
研究這個東西費了我好大的勁,一開始不知道視頻還有專門針對流媒體的,以為只要用 MediaCoder 將視頻轉換成合適的格式,如:MPEG4 + AAC + MP4 / MPEG4 + AAC + 3GP 就可以放了,反覆放到伺服器上面去測試,VLC 和 QuickTime 都沒法開啟。於是又用工具開啟 DSS 內建的幾個樣本視頻看它們的格式,反覆轉換試不同的視頻和音頻編碼和外殼,還是不行...鬱悶死我了
在 DSS 的郵件清單裡面找了找相關的文章,發現有講好像要用特別的工具對視頻 hint 一下,然後就可以在 RTSP 上面用了,說可以用 QuickTime Pro 或 VLC 來轉換,我用 VLC 試了一下,檔案菜單一個叫“流(s)”的功能,但試了還是不行,沒看到檔案有變動過。
於是再沿著 Hint 關鍵詞在 Google 上面找文章,找到了 Nokia 論壇裡面,看到這篇文章:http://discussion.forum.nokia.com/forum/showthread.php?t=125540 裡面有說可以使用 Mp4box 對視頻進行
hint
於是我在 http://www.videohelp.com/tools/mp4box 這裡下載到了mp4box (不用下載GUI的,直接用命令列操作就好了,只用一條命名)
下載到到解壓出後會有個叫 mp4box.exe ,用它在命令列下面運行
C:/Program Files/Darwin Streaming Server/Movies>mp4box mymovie.mp4 -hint
出現結果:
Hinting file with Path-MTU 1450 Bytes
Hinting track ID 201 - Type "mp4v:mp4v" (MP4V-ES) - BW 33 kbps
Hinting track ID 101 - Type "mp4a:mp4a" (mpeg4-generic) - BW 64 kbps
Saving mymovie.mp4: 0.500 secs Interleaving
流媒體視頻就轉換好了,現在檔案大小就會有變動,變大了一些。
然後,再用 VLC 或 QuickTime 開啟 rtsp://127.0.0.1:554/mymovie.mp4 試試能否播放吧!如果你有3G手機,可以直接用手機開啟這個地址試一下。
三、附加資源
- Apple’s Darwin Streaming Server On Centos 5.2 (如何在 CentOS 5.2 下面安裝DSS)
轉帖:http://blog.csdn.net/lius1984/article/details/4874594