在Symbian平台上實現H264的RTSP流的播放

來源:互聯網
上載者:User

 

1.  S60用多媒體架構(MMF)實現視頻和音訊回放和錄製,其擁有一個外掛程式架構,可使用多種類型的用於媒體回放和錄製的外掛程式,比如RealPlayer引擎是針對MMF控制器的外掛程式,可使用視訊和音頻回放及流。2.  s60內建播放器採用Realplayer引擎。 不支援HTTP流媒體,因為在顯示之前必須把所有的視頻資料一次性讀入緩衝。3.  S60的常用格式是 MP4(編解碼標準為H.263和MPEG4)、3GP(H.263和MPEG4) 4.  S60平台支援C++進行多媒體開發,下表總結了如何用C++實現多媒體應用
用例 Symbian C++
使用S60媒體播放器和RealPlayer引擎播放本地檔案和RTSP流。 使用AppArc API(RApaLsSession)啟動S60媒體播放器應用。
使用定製的使用者介面和RealPlayer引擎播放本地檔案和RTSP流。 建立自己的使用者介面並使用CVideoPlayerUtility API播放和控制檔案或URL。
使用自己的播放器播放本地檔案。 建立自己的播放器。使用CMdaAudioOutputStream進行音頻渲染(1),使用CDirectScreenAccess API 進行視頻渲染。
使用自己的播放器實施流視頻內容。 使用network APIs( RSocketServ、RConnection、RSocket) 串連到網路(2)。 然後使用CMdaAudioOutputStream進行音頻渲染,使用CDirectScreenAccess API 進行視頻渲染。

 

5.  從上表得出結論,CVideoPlayerUtility用來開發視訊剪輯的播放和錄製。如果要開發一個讀取本地檔案或RTSP流而且格式為MP4、3GP或Rmvb的播放器,使用CVideoPlayerUtility就夠了。 但如果需要讀取網路資料流,就必須用network APIs串連到網路擷取資料,接著用CDirectScreenAccess API繪製螢幕,當中主要步驟有RTP傳輸,mpeg4/h264解碼,yuv2rgb轉換。如果不用symbian的API,流媒體傳輸可移植live555,視音頻解碼可用ffmpeg。

 

 

 

隨著目前手機監控市場的快速發展,手機監控因其可以實現真正的

lt;/span>“AnyTime、AnyWhere、AnyDevice”(任何時間、任何地點)而收到越來越多安防企業的重視。目前的智能手機作業系統主要被Symbian、Wince和Linux佔有。要真正實現手機監控的”AnyDevice”( 任何裝置),最少要支援上述三種的手機作業系統。由於Wince和 Window開發平台的相似性,目前Wince平台上的H264的解碼庫有很多開源的代碼可以參考, 網上可以參考的代碼主要有ffmpeg、JM、T264,x264等。我在網上搜尋了Symbian上的H264的解碼庫,發現根本沒有開源的項目可以參考,所以本文主要關注在Symbian平台下實現上述功能。

系統的結構如所示:

視頻伺服器實現了雙碼流,這樣即可以保證普通監控的要求,又可以保證滿足手機監控等特殊需求。考慮到實際網路的頻寬,解碼能力等因素,手機上推薦使用CIF或者QCIF的解析度,幀率最好控制在15幀以下。

軟體的架構如所示:

Net Engine模組主要負責向視頻伺服器擷取資料, 實現了一個RTSP協議, 將控制資訊和音視頻的資料分別從RTSP包和RTP包中取出,送往視頻流隊列當中。具體的RTSP協議的協商可以參考RFC的文檔。

Stream Data Queue模組主要用於負責儲存音視頻的資料, 沒有什麼需要詳細說明的。

H264 video decoder模組主要負責視頻資料的解碼。解碼庫採用的是移植過的ffmpeg, 這是這個程式當中花費時間最長的部分,對ffmpeg的移植最主要要主要記憶體對齊,並且有些在PC上可以用的參數在Symbian平台下需要進行斷點調試修改後才可以使用。

AMR audio decoder和AAC audio decoder可以在網上尋找純C的代碼,稍加移植即可使用。建議可以先在Window平台下面調試通過在移植到symbian平台上面。

在Symbain中,RGB顏色的實際儲存方式實際上是BRG順序。如紅色實際上儲存為0x0000FF而非0x00FF0000。所以如果有其他平台用到Symbian中的顏色的話,請注意轉換。Ffmpeg解碼輸出魚yuv420,在PC上可以轉換成RGB565顯示, 在Symbian上需要轉換成BGR565。

轉換的部分可以參考MobiFLV項目的YUVToRGB.h和YUVToRGB.cpp兩個檔案, 作者對轉換的過程採用了查表最佳化,效率很不錯,另外該類支援按比例對視頻進行縮放,效果不錯。

視頻顯示可以使用CFbsBitmap進行貼圖顯示,但這樣的效率不是最高。使用CDirectScreenAccess類直接寫屏,可以得到更高是效率。音頻直接調用系統的CMdaAudioOutputStream 類進行播放即可。

播放的效果如所示,


                                                           豎屏

                                                             橫屏

以上的程式串連的rtsp地址為rtsp://88.107.126.1:3838/live.3gp,映像品質為CIF ,5FP/S,32KB。該視頻伺服器位於英國,有興趣的朋友可以試試看。該程式還實現了對遠端的雲台控制,控制鏡頭的移動和縮放,豐富了手機監控的功能。

程式在E71,N81,N95上面測試通過。

缺點 : 當存取點選擇cmwap時,無法串連視頻流, 因為伺服器端沒有做RTSP流代理功能,用戶端需要做移動網關的穿透。考慮到cmwap的速度很慢和未來網路的發展,實現的意義並不是很大,所以放棄了該部分的工作。

有興趣的朋友可以聯絡我,一起交流學習。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.