• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于塞班智能手機的視頻監(jiān)控設計與實現(xiàn)

      2010-01-08 07:28:32胡海勇胡黎瑋徐志江楊偉偉
      關鍵詞:解碼器線程解碼

      胡海勇,胡黎瑋,徐志江,楊偉偉

      (1.浙江省光纖通信技術重點研究實驗室,浙江杭州310023;2.浙江鴻程計算機系統(tǒng)有限公司,浙江杭州310023)

      基于塞班智能手機的視頻監(jiān)控設計與實現(xiàn)

      胡海勇1,胡黎瑋2,徐志江1,楊偉偉1

      (1.浙江省光纖通信技術重點研究實驗室,浙江杭州310023;2.浙江鴻程計算機系統(tǒng)有限公司,浙江杭州310023)

      智能手機的發(fā)展推動了視頻監(jiān)控方式的改變。該文以Symbian S60作為客戶端軟件設計的開發(fā)平臺,利用RTP的API接口來接收服務器端發(fā)送的流媒體數(shù)據(jù),對接收到的數(shù)據(jù)先進行NALU重組,然后送給ffmpeg解碼器,最后采用直接屏幕訪問來播放視頻。

      視頻監(jiān)控;塞班平臺;實時傳輸協(xié)議;視頻解碼

      0 引 言

      隨著3G業(yè)務的發(fā)展,手機視頻監(jiān)控將成為3G視頻應用的重要組成部分。目前在歐洲,北美,亞洲的日本和韓國手機視頻監(jiān)控已是相當?shù)钠毡?國內(nèi)由于政策、經(jīng)濟、社會以及技術環(huán)境的影響,其業(yè)務種類、市場規(guī)模和商業(yè)模式還有待提高[1]。本文詳細介紹了一種基于Symbian智能手機H.264視頻監(jiān)控的設計,實現(xiàn)了在智能手機上利用RTP的API接口來接收RTP數(shù)據(jù)包,對拆包后的每個NALU進行重組,用ffmpeg對H.264文件進行解碼,解碼成YUV格式,然后用直接繪屏的方法進行RGB顯示。經(jīng)過在SDK中的模擬,并編譯安裝到手機,獲得了較好的監(jiān)控效果。

      1 客戶端的結構

      本文所設計的客戶端軟件結構框圖如圖1所示,主要由流媒體接收模塊、碼流緩沖模塊、NALU重組模塊、視頻解碼模塊和視頻播放模塊組成。碼流緩沖模塊是為了克服網(wǎng)絡延遲、丟包、不穩(wěn)定等問題帶來的數(shù)據(jù)抖動,避免在播放中出現(xiàn)中斷的現(xiàn)象而設計的。對一個H.264的數(shù)據(jù)采用RFC3984的RTP封裝格式,因此需要對解包的數(shù)據(jù)流進行組幀,這個由NALU重組模塊來實現(xiàn)。視頻解碼模塊負責把組好的各個NALU進行解碼,用到的解碼器是開源的ffmpeg。視頻播放模塊就是實時顯示解碼后的視頻,它是通過Symbian S60下的CDirectScreenAccess類來實現(xiàn)的。

      圖1 客戶端軟件結構框圖

      2 客戶端軟件的實現(xiàn)

      2.1 流媒體的接收

      本系統(tǒng)客戶端接收的是經(jīng)過RTP打包的流媒體數(shù)據(jù),利用的是Symbian SDK中的擴展插件,該插件提供了用于流媒體服務的一些API接口,在開發(fā)環(huán)境Carbide.C++2.3的應用中只要加入相應的頭文件和庫文件就可以實現(xiàn)流媒體的接收。具體的網(wǎng)絡接收步驟如下:

      (1)連接至套接字服務器。RSocketServ類的成員函數(shù)Connect()實現(xiàn);

      (2)打開并啟動一個網(wǎng)絡鏈接。RConnection類的成員函數(shù)Open()和Start()實現(xiàn);

      (3)打開并創(chuàng)建RTP會話。CRtpAPI類的成員函數(shù)OpenL()和CreateSessionL()實現(xiàn);

      (4)注冊RTP和RTCP回調對象。CRtpAPI類的成員函數(shù)RegisterRtpObserver()和RegisterRtcpObserver()實現(xiàn);

      (5)創(chuàng)建一個RTP接收流并啟動RTP會話。CRtpAPI類的成員函數(shù)CreateReceiveStreamL()和Start-Session()實現(xiàn)。

      2.2 緩沖機制

      在客戶端設置緩沖區(qū)以抵消時延抖動,從而保證流媒體內(nèi)及流媒體間的同步,是實現(xiàn)流媒體同步的有效方法。但緩沖區(qū)的大小設置與具體的硬件設備相關,太小可能會丟失數(shù)據(jù),使播放質量下降,太大則會使播放時延變大,而且較大的緩沖區(qū)增加了系統(tǒng)開銷。根據(jù)手機資源有限的特點,使用了循環(huán)對列的數(shù)據(jù)結構來實現(xiàn)緩沖。具體就是指當達到緩沖尾的時候,使它的指針指向緩沖頭,從而實現(xiàn)循環(huán)緩沖。

      2.3 NALU重組

      對于用RFC3984協(xié)議封裝的RTP包,它的格式是當包比較大時就要對NALU分片,當包比較小時就要通過幾個NALU組成一個RTP包來發(fā)送,這其中的設置門檻是通過最大傳輸單元(MTU)來定的。所以針對一個H.264文件的RTP打包有3種模式:(1)單一NALU單元模式;(2)組合封包模式;(3)分片封包模式。這樣在客戶端就要對接收的數(shù)據(jù)進行封包模式的判斷,判斷出后對NALU進行重組。其中判斷的準則是根據(jù)NALU頭的低5比特是不是28,如果是28則是分片的,需要對接收的這幾個RTP包進行組合。對于局域網(wǎng)(如用WIFI)來說傳輸基本上是順序來的,也就是服務器發(fā)的順序跟客戶端接收的NALU順序是一樣的,但是對于外網(wǎng)(如用3G)的傳輸就不一定,因此對接受的NALU進行排序就顯得尤為重要,排序的準則是取得RTP包頭的信息,根據(jù)RTP發(fā)包的特點,每發(fā)送一個RTP數(shù)據(jù)包,RTP頭中的序列號加1,因此客戶端可以根據(jù)這個序列號來重建包序列。本客戶端具體實現(xiàn)的方法是通過建立兩個活動窗口:一個用于排序,一個用于存放排序好的NALU。

      2.4 視頻解碼

      通過重組的NALU,就可以把它送給解碼器解碼了,解碼庫采用的是移植到Symbian下的ffmpeg,利用該庫提供的API接口實現(xiàn)視頻的解碼。具體的解碼步驟如下:

      (1)初始化解碼器,并且找到H.264解碼器。函數(shù)avcodec_init()和avcodec_find_decoder(CODEC_ID_H264)實現(xiàn);

      (2)分配解碼器內(nèi)存,打開解碼器。函數(shù)avcodec_alloc_context()和avcodec_open()實現(xiàn)

      (3)分配解碼器用的幀緩沖。函數(shù)avcodec_alloc_frame()實現(xiàn);

      (4)對NALU進行解碼,解碼成YUV格式,并放在幀緩沖里面。函數(shù)decode_frame()實現(xiàn)。

      2.5 視頻播放

      視頻播放模塊主要功能是對解碼后的數(shù)據(jù)進行播放,采用的方法是把YUV轉化為RGB,然后通過直接畫圖的方法實現(xiàn),在Symbian OS中直接畫圖有3種:(2)創(chuàng)建并使用CfbsScreenDevice類;(2)直接訪問屏幕內(nèi)存;(3)通過CDirectScreenAccess類[2]。其中第三種方法是經(jīng)過操作系統(tǒng)封裝后的直接屏幕訪問(DSA)技術,它比前兩種更安全,也更高效,因為使用的屏幕不用每次都和窗口服務器交互,因此能大大的提高顯示效率和質量[3]。因此本客戶端采用了直接屏幕訪問來播放視頻。具體的視頻播放步驟如下:

      (1)通知窗口服務器去啟動直接屏幕訪問并設置屏幕的圖形上下文。CDirectScreenAccess類的成員函數(shù)StartL()實現(xiàn);

      (2)創(chuàng)建一個特定尺寸和顯示模式的位圖。CFbsBitmap類的成員函數(shù)Create()實現(xiàn);

      (3)鎖住全局位圖堆棧并取得位圖中第一個像素的地址。CFbsBitmap類的成員函數(shù)LockHeap()和DataAddress();

      (4)把解碼后用YUV色彩空間表示的位圖轉化為用RGB表示;

      (5)釋放位圖堆棧并調用能將位圖進行縮放的位圖繪制函數(shù)。CFbsBitmap類的成員函數(shù)Unlock-Heap()和CFbsBitGc類的成員函數(shù)DrawBitmap()[4]。

      經(jīng)過以上的步驟就可以繪制圖片了,再通過CfbsScreenDevice類的Update()就可以對圖片進行連續(xù)繪制,從而實現(xiàn)視頻的播放。

      3 軟件的執(zhí)行形式和效果

      在Symbian OS中活動對象和活動調度器一起被稱為活動對象框架,它主要用于簡化異步程序設計,使編寫代碼更容易。每個活動對象封裝一個任務,所有活動對象都在同一個線程中運行,因此在活動對象中切換比線程間上下文切換的代價要低。

      本客戶端的設計是用線程來解碼,活動對象來顯示播放,其中線程是在活動對象中創(chuàng)建的。具體實現(xiàn)如下:

      (1)利用RThread類[5]的成員函數(shù)Create()創(chuàng)建一個線程,并在參數(shù)中加入線程的執(zhí)行函數(shù);

      (2)啟動線程。RThread類的成員函數(shù)Resume();

      (3)在線程的執(zhí)行函數(shù)中創(chuàng)建一個清理棧,并和字體與位圖服務器建立連接;

      (4)實現(xiàn)上文2.4節(jié)中的視頻解碼。

      對前端攝像頭采集的視頻可以在SDK中的模擬器中實現(xiàn)監(jiān)控,也可以編譯安裝到手機上實現(xiàn)手機上的監(jiān)控,模擬器和在Nokia E63上的效果圖如圖2、3所示,從畫面上來看效果還是比較好的。

      圖2 模擬器上效果圖

      圖3 Nokia E63上效果圖

      4 本文的創(chuàng)新點及獨特之處

      現(xiàn)有的主流手機操作系統(tǒng)有Android,windowsmobile,symbian等,Android是一個基于linux內(nèi)核的操作系統(tǒng),技術比較新,因此也有它的一些缺點,比如它沒有自帶資源管理器和任務管理器、界面定制不夠簡單等,在這個平臺上研究資料相對來說比較少;windowsmobile是微軟進軍移動行業(yè)的一個重大的戰(zhàn)略調整,對硬件的要求比較高;而對于symbian系統(tǒng),應用是其最大的特點,且現(xiàn)在在手機操作系統(tǒng)的占有率上比較高,因此選擇應用較為廣泛、普遍的symbian作為開發(fā)平臺,在symbian上開發(fā)本應用程序選用symbian os C++而非J2ME作為軟件開發(fā)語言,因為symbian os C++有完備的API集可以訪問智能手機的所有屬性。本文的特點是給出了手機客戶端上實現(xiàn)視頻監(jiān)控過程的每一個API,并詳細解釋了每一API的作用及各個API之間的聯(lián)系,采用了線程來解碼,活動對象來播放視頻的方式,實現(xiàn)了基于H.264的流媒體數(shù)據(jù)的顯示。對比過很多的方法,如起先選用BitBlt()函數(shù)來繪制位圖,得到的位圖不能進行縮放;對接收到的NALU沒有進行排序,從而出現(xiàn)了花屏,倒序現(xiàn)象;對緩沖機制的內(nèi)存設置太大,從而出現(xiàn)了手機死機,程序跑死等現(xiàn)象。而采用本文的方法,解決了這些問題,視頻能較好的得到監(jiān)控。

      5 結束語

      隨著經(jīng)濟的不斷發(fā)展,基礎網(wǎng)絡的不斷普及,人們對監(jiān)控的實時性與便利性提出了更高的要求,手機視頻監(jiān)控從很大程度上滿足了這一要求。本文從整體上介紹了監(jiān)控客戶端的設計與實現(xiàn),對如何從流媒體中接受RTP數(shù)據(jù)包、對接收的包如何組包和排序以及對視頻解碼與播放所涉及的主要函數(shù)及實現(xiàn)都做了闡述。通過本文的介紹,使讀者能夠建立起一種在智能手機上實現(xiàn)視頻監(jiān)控的案例,對于以后更好的設計與實現(xiàn)提供了一種參考。

      [1]賈振堂,呂海蓮,韓艷芳.手機視頻監(jiān)控系統(tǒng)及其性能[J].視頻技術應用與工程,2007,31(11):81-83.

      [2]簡洪波.基于Symbian平臺的移動流媒體客戶端的研究和實現(xiàn)[D].武漢:華中科技大學,2007.

      [3]申超,周兵.基于H.264的監(jiān)控系統(tǒng)中手機客戶端的設計[J].微計算機信息,2009,25(3):118-120.

      [4]劉昕宇,陳曉光,劉斌.基于Symbian OS的手機開發(fā)與應用實踐[M].北京:清華大學出版社,2008:374-380.

      [5]Steve Babin.周良忠譯.Symbian OS軟件開發(fā)——應用C++開發(fā)智能手機應用程序入門[M].北京:人民郵電出版社,2006:172-187.

      ()函數(shù)會自動接收并把數(shù)據(jù)包發(fā)送給處理隊列,這其中可以發(fā)送一個RTCP包給服務器,服務器可以根據(jù)接收的RTCP包的信息動態(tài)的改變傳輸速率,甚至改變有效載荷類型等。

      The Design and Implementation of Video Surveillance Based on Symbian Smartphone HU Hai-yong1,HU Li-wei2,XU Zhi-jiang1,YANGWei-wei1

      (1.Zhejiang ProvincialKey Lab.of Fiber Optic Communication Technology,Hangzhou Zhejiang310023,China;2.Zhejiang Hong Cheng Computer System Co.,Ltd,Hangzhou Zhejiang310023,China)

      The way of video surveillance isbeing changed by thedevelopmentof smartphone.In this paper,weuse the Symbian S60 platform to design the clientsoftware.The APIof the RTP is used to receive the stream data from the server.The data is rebuilt into NALU packet first,and then delivered to ffmpeg decoder.After decoded,the data is finally played in the screen ofmobile using direct screen access.

      video surveillance;Symbian platform;RTP;H.264

      TP39

      A

      1001-9146(2010)05-0157-04

      2010-07-20

      胡海勇(1985-),男,浙江江山人,在讀研究生,通信與信息系統(tǒng).

      猜你喜歡
      解碼器線程解碼
      《解碼萬噸站》
      科學解碼器(一)
      科學解碼器(二)
      科學解碼器(三)
      線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍蜻蜓解碼器
      解碼eUCP2.0
      中國外匯(2019年19期)2019-11-26 00:57:32
      NAD C368解碼/放大器一體機
      Quad(國都)Vena解碼/放大器一體機
      淺談linux多線程協(xié)作
      Linux線程實現(xiàn)技術研究
      象山县| 齐河县| 犍为县| 诏安县| 岳阳市| 静海县| 丹阳市| 商都县| 电白县| 亳州市| 连城县| 仪征市| 石台县| 清原| 廊坊市| 抚宁县| 东海县| 屏东县| 南部县| 朔州市| 吉林市| 库伦旗| 安陆市| 镇康县| 江门市| 宣化县| 康定县| 萝北县| 平阳县| 吉安市| 灌云县| 龙游县| 石家庄市| 浏阳市| 余庆县| 浑源县| 伊宁市| 石渠县| 吐鲁番市| 噶尔县| 察隅县|