基於rtsp的手機ApsaraVideo for VOD實現和研究

來源:互聯網
上載者:User

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

 

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

  先說架構,出於便於管理和擴充,頻寬節流設定和多使用者並發的考慮,商用方案都會採用流媒體伺服器+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:僅限微軟平台,就不考慮了。
手機端架構流程如下:

 

   手機用戶端與伺服器端的傳輸協議目前有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模擬器上效果如下:

             

  

 

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

注意做流媒體應用存取點一般是cmnet,cmwap只用來瀏覽網頁之類的低資料量應用。

程式還在進一步完善中,有興趣的可以跟我一起交流, lius1984@gmail.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.