基於rtsp的手機視頻點播實現和研究

http://blog.csdn.net/lius1984/archive/2009/04/28/4131393.aspx

前言: 隨着3G的到來,帶寬大了流量費便宜了,手機電視等多媒體應用必將有很大發展, 本人總結以往經驗,跟大家討論一下如何建立一個手機視頻點播的方案,最後給出了一個初步的客戶端實現效果。歡迎大家討論。

  先說架構,出於便於管理和擴展,帶寬限制和多用戶併發的考慮,商用方案都會採用流媒體服務器+WEB服務器+中轉服務器+手機客戶端的方案,其中

流媒體服務器(streaming server)負責採集視頻源並壓縮編碼並隨時等待來自客戶端的rtsp連接請求; 
WEB服務器(web server)便於發佈和管理視頻信息;
中轉服務器(transmission server)是可選的,用於把來自client的RTSP請求轉發給server,並把服務器端的實時流轉給client,這樣的好處是在相同帶寬下支持更多的用戶同時觀看;
手機客戶端(client)可以用手機內置的播放器(如nokia上的realplayer)或者自己開發的獨立播放器,前者的好處是降低用戶使用門檻,便於大規模應用;後者方便擴展和定製,滿足更多的功能。
streaming server是整個方案的核心,目前主流的流媒體服務器解決方案如下:

helix  server :藉助Real公司的強大實力,這是目前最流行的方案,  可以支持所有音視頻格式,性能穩定,是唯一可以橫跨 Windows Mac 及 Linux, Solaris ,HP/UX 使用者流媒體服務的平臺,支持在手機自帶播放器播放。helix server免費的版本只支持1M流量,企業版很貴。當然你要破解就是另外一回事了:)
darwin server: 這是apple公司推出的開源的流媒體解決方案,支持格式沒helix那麼多,但由於是開源的免費的,對於開發者有很大的開發空間。
live555 media server:性能穩定,但支持格式比較少(只有mp3,amr,aac,mpeg4 es等幾種流),很少獨立使用而一般作爲系統的一部分。
Windows Media Server:僅限微軟平臺,就不考慮了。
手機端框架流程如下:

 liuchengtu

 

   手機客戶端與服務器端的傳輸協議目前有HTTP,RTSP兩種,早期的手機電視多用的HTTP,HTTP的優點有不用特殊的服務器軟件,有IIS即可,不 用考慮防火牆NAT,但HTTP不支持實時流,也會浪費帶寬; RTSP則是當前流媒體傳輸的主流標準,連微軟都拋棄了MMS而轉而支持RTSP, RTSP可以支持客戶端暫停回放停止等操作,基本不用考慮音視頻同步問題(因爲音頻視頻分別從不同RTP PORT讀入緩衝)。值得說明的是,RTSP成功後,就開始RTP傳輸,分爲RTP OVER TCP和RTP OVER UDP,前者保證每個數據包都能收到,如果沒收到就重傳,而且不用考慮防火牆NAT;後者只保證盡最大努力的傳輸,不會重傳丟幀,實時性好,要解決防火牆 NAT問題。如果對幀率要求比較高的手機電視,推薦採用UDP傳輸,因爲延遲較大的重傳數據對用戶是沒有意義的,寧可丟棄。

  我在網絡部分採用強大的開源庫live555實現RTSP/RTP協議,其性能穩定而且支持大多數音視頻格式的傳輸。(當然ffmpeg也實現了網絡傳輸 部分,經過改動後也能用)對live555經過裁剪後移植到symbian和windows mobile,這部分工作在symbian真機調試比較費時。


  視頻解碼部分當然還是採用ffmpeg,移植了mpeg4 sp/h.264解碼器,在沒有任何優化的情況下可支持32K,CIF,5-10fps的效果,對於一般的流媒體應用足夠了。以後還要經過算法和彙編優 化。解碼後還需要經過yuv2rgb和scale,需要注意的是ffmpeg的解碼有消隱區的說法,即qcif的圖像其linesize不是176而是 192,如果你發現解碼後圖像呈綠色,需用img_convert()轉一下(目的格式也是PIX_FMT_YUV420P)。symbian上用DSA 直接寫屏就行。windows mobile上可以用sdl.

 音 頻解碼主要包括AAC,AMRNB,AMRWB。AAC和AMRNB是gprs和edge帶寬支持的音頻(aac效果比amrnb好),AMRWB是3G 後的音頻格式。在ffmpeg 0.5 release中已經支持amrnb/wb的fixed point解碼,很強大。

 
  在symbian和windows mobile真機均測試通過,6122c真機和Windows mobile5.0模擬器上效果如下:

 symbian1             

  wm1

 

 


演示視頻地址爲rtsp://v.starv.tv/later.3gp,視頻爲mpeg4 sp,音頻爲amrwb。目前只能看到圖像,音頻還沒加。


注意做流媒體應用接入點一般是cmnet,cmwap只用來瀏覽網頁之類的低數據量應用。


程序還在進一步完善中,有興趣的可以跟我一起交流, [email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章