• 
    

    
    

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

      ?

      基于Android平臺的高清監(jiān)控視頻系統(tǒng)的優(yōu)化設(shè)計

      2017-07-05 08:52:43蔣達央
      關(guān)鍵詞:播放器解碼高清

      蔣達央

      (常州信息職業(yè)技術(shù)學院信息中心 江蘇常州 213164)

      ?

      基于Android平臺的高清監(jiān)控視頻系統(tǒng)的優(yōu)化設(shè)計

      蔣達央

      (常州信息職業(yè)技術(shù)學院信息中心 江蘇常州 213164)

      基于Android平臺的視頻監(jiān)控客戶端作為視頻監(jiān)控系統(tǒng)的后端應用,依托無線網(wǎng)絡(luò)與監(jiān)控系統(tǒng)存儲和服務器通信,實時接收無線視頻數(shù)據(jù)包并播放視頻。由于無線視頻監(jiān)控系統(tǒng)是一個大數(shù)據(jù)量的傳輸系統(tǒng),易受無線網(wǎng)絡(luò)帶寬和穩(wěn)定性因素影響。為提高高清監(jiān)控視頻在移動客戶端的播放效果,本研究分析了高清視頻播放的特性,對視頻的信號傳輸、編解碼和數(shù)據(jù)驗證方面,采用了基于Android平臺的優(yōu)化設(shè)計方案,為用戶隨時隨地監(jiān)看高清監(jiān)控視頻提供了一個較好的技術(shù)解決方案。

      視頻監(jiān)控; Android; H.264

      0 引言

      隨著信息技術(shù)的快速發(fā)展,智慧校園建設(shè)成為教育行業(yè)新一輪信息化建設(shè)目標。傳統(tǒng)視頻監(jiān)控管理手段已無法滿足現(xiàn)代化校園管理的需求。在智慧校園的背景下,大量高清網(wǎng)絡(luò)數(shù)字視頻監(jiān)控攝像機被安裝在校園的各個角落。隨著無線通信技術(shù)和多媒體技術(shù)的發(fā)展,進一步推動了傳統(tǒng)視頻監(jiān)控管理手段從有線邁向了無線領(lǐng)域。

      1 問題的提出

      無線網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)主要由四個部分組成,分別是攝像機、有線或無線網(wǎng)絡(luò)、視頻服務器和移動應用客戶端。這是結(jié)合音視頻處理、網(wǎng)絡(luò)通信、數(shù)據(jù)存儲等多種信息技術(shù)的綜合體?;贏ndroid平臺的移動視頻監(jiān)控系統(tǒng)相比PC機桌面式終端的監(jiān)控系統(tǒng),極大地擴展了監(jiān)控應用的靈活性與范圍,并且充分調(diào)用各個模塊的硬件性能優(yōu)勢,進而在降低系統(tǒng)通信開銷的同時提高了應用的拓展性。

      無線視頻播放是移動高清視頻監(jiān)控系統(tǒng)的主要功能,它是基于Android平臺移動監(jiān)控終端的核心技術(shù)。目前在視頻監(jiān)控領(lǐng)域主要采用VLC等開源技術(shù),實現(xiàn)視頻封裝、編解碼和播放等功能,VLC中包含live555和ffmpeg兩個重要的類庫。其中,Live555主要使用RTSP協(xié)議來支持各種編碼格式的音視頻數(shù)據(jù),進行流化、接收和處理等[1]。而ffmpeg擁有音頻/視頻編解碼庫libavcodec,它為流化的音視頻數(shù)據(jù)提供轉(zhuǎn)換和編解碼等的完整解決方案。經(jīng)過ffmpeg解碼完成之后,使用VLC在移動客戶端視頻監(jiān)控系統(tǒng)程序界面上進行視頻播放。

      當live555將接收到的視頻數(shù)據(jù)包選擇網(wǎng)絡(luò)用戶數(shù)據(jù)報協(xié)議(UDP)作為視頻流的傳輸協(xié)議時,因UDP協(xié)議是基于非連接的、只負責發(fā)送不負責檢查發(fā)送結(jié)果的不可靠協(xié)議,這種不可靠性使得live555數(shù)據(jù)包進行視頻傳輸時產(chǎn)生數(shù)據(jù)幀丟失現(xiàn)象[2]。而當live555使用TCP協(xié)議實施數(shù)據(jù)傳輸時,由于TCP協(xié)議是基于連接的、按順序接收的可靠協(xié)議,這種可靠協(xié)議若遇到過大的網(wǎng)絡(luò)數(shù)據(jù)流量,很容易發(fā)生節(jié)點路由設(shè)備因數(shù)據(jù)堵塞而出現(xiàn)緩沖區(qū)溢出現(xiàn)象,從而會使視頻數(shù)據(jù)包發(fā)生丟失現(xiàn)象。以上兩種傳輸模式都會造成視頻播放出現(xiàn)馬賽克、花屏等影響播放效果的現(xiàn)象。

      2 優(yōu)化設(shè)計方案

      2.1 視頻編譯環(huán)境優(yōu)化設(shè)置

      本優(yōu)化設(shè)計主要基于Libvlcjni.so庫進行設(shè)計。在Android視頻播放應用程序開發(fā)中,libVLC給Android應用程序的接口庫提供了一個功能強大的Libvlcjni.so庫。在多個網(wǎng)絡(luò)協(xié)議支持層面,libvlcjni.so開發(fā)庫支持RTP、HTTP、RTSP等多種網(wǎng)絡(luò)應用協(xié)議,是一個成熟穩(wěn)定的開源播放器開發(fā)庫。

      客戶端視頻播放器通過libVLC提供的libvlcjni.so中的JNI接口函數(shù)來實現(xiàn)高清監(jiān)控視頻控制和播放。在實際研究測試中,由于VLC項目對LINUX平臺的支持最好,因此首先需要依托LINUX平臺來編譯VLC,并從中下載獲取libvlcjni.so庫。

      在編譯之前,首先需要搭建針對Android平臺的軟件編譯環(huán)境,包括:AndroidSDK、NDK、JDK等一些列開發(fā)配置工具。經(jīng)過測試,發(fā)現(xiàn)在LINUX操作系統(tǒng)下的Ubuntu15.10環(huán)境中交叉編譯VLC for Android獲取libvlcjni.so庫效率較高,具體設(shè)計如下:

      編譯宿主主機系統(tǒng):Ubuntu 16.04 LTS;

      Android原生開發(fā)包NDK版本:android-ndk-r10;

      Android軟件開發(fā)包SDK版本:android-sdk-22;

      Java開發(fā)包JDK版本:jdk-1.8.0_65;

      VLC for Android的編譯環(huán)境搭建完成后,進入根目錄,使用shell腳本“./compile.sh”開始編譯實施[3]。在項目環(huán)境的編譯過程中,shell腳本文件會自動從網(wǎng)絡(luò)下載基于的源代碼。VLC作為具備多種格式音視頻解碼器的多媒體播放器,能作為基于unicast或 multicast設(shè)計的流媒體服務器在IPv4或 IPv6的高速有線無線網(wǎng)絡(luò)環(huán)境下使用。系統(tǒng)編譯完成后會在主文件夾下的libs文件夾中生成重要的libvlcjni.so庫和其他相關(guān)的接口類庫,此時可將整個libs文件夾拷貝到Android客戶端項目文件中,那么在后期的項目程序開發(fā)過程中便可調(diào)用libvlcjni.so庫,實現(xiàn)移動視頻播放功能的開發(fā)。

      2.2 優(yōu)化視頻播放器的設(shè)計

      libVLC作為VLC for Android提供給用戶二次開發(fā)所封裝的接口庫[4]。它封裝了復雜的VLC架構(gòu),在開發(fā)過程中,只需要將這些類和接口函數(shù)包含到工程項目中,就可直接調(diào)用預置的、封裝好的類和函數(shù)。具體過程如下:

      第一步:聲明對象。首先聲明一個IVideoPlayer對象m_videoPlayer,它代表視頻播放器對象。接著聲明一個libVLC對象m_libVLC,視頻播放、暫停等操作都由它來承擔。

      IVideoplayer m_videoplayer;

      LibVLC m_LibVLC;

      第二步:創(chuàng)建LibVLC視頻播放器實例。首先利用已聲明的m_libVLC對象調(diào)用其中的getinstance()函數(shù)獲取到一個實例。然后利用m_libVLC調(diào)用attachSurface()函數(shù)來綁定播放器m_IVideoPlayer和視頻播放窗口視圖s_View。

      m_libVLC=LibVLC. getinstance();

      m_libVLC. attachSurface(s_ View, m_VideoPlayer);

      第三步:創(chuàng)建視頻播放表。首先利用MediaList創(chuàng)建一個列表實例m_List,然后將網(wǎng)絡(luò)視頻地址添加到m_List實例中,該地址連接著視頻服務器的視頻源,等待用戶點擊鏈接地址的訪問。

      MediaList m_List=m_LibVLC.getmediaList();

      m_List.add(new media(m_Libvlc,libVLC.PathToURl(Url),false);

      第四步:實現(xiàn)視頻播放功能。利用m_libvlc對象通過調(diào)用playIndex()函數(shù)來解析播放列表中的視頻鏈接地址。

      m_libVLC.playIndex(0);

      第五步:實現(xiàn)視頻播放器停止播放功能。實現(xiàn)這個功能的同時要完成三項任務。首先需要通過m_libvlc對象調(diào)用Stop()函數(shù)實現(xiàn)視頻播放的停止,然后利用m_libvlc對象的detachSurface()函數(shù)來解除s_View和m_LibVLC兩者之間的鏈接綁定,最后使用destroy()函數(shù)來釋放對象占用的資源,并銷毀m_libVLC對象。

      m_libVLC.stop();

      m_libVLC.detachSurface();

      m_libVLC.destroy();

      2.3 獲取H.264視頻數(shù)據(jù)設(shè)計

      在高清視頻監(jiān)控領(lǐng)域目前主要使用H.264這種視頻編碼標準?;贖.264的視頻流幀結(jié)構(gòu)序列由I、B、P三部分組成。在視頻數(shù)據(jù)中,視頻都是由若干個順序圖像組成。在H.264序列圖像里的第一個圖像都由I幀圖像組成,也被稱為IDR圖像[5]。I幀圖像是圖像解碼的核心句法元素,I幀可直接解碼,一旦發(fā)生錯誤或丟失,該視頻序列的后續(xù)圖像信息幾乎不可能再被正確解碼出來。而P幀數(shù)據(jù)的解碼則需要在I幀的基礎(chǔ)上。當用戶觀看視頻時,通過移動終端點擊URL地址,VLC調(diào)用live555模塊展開H.264視頻流數(shù)據(jù)的獲取。H.264視頻數(shù)據(jù)獲取過程主要分為三個層次,RTP層、NAL層、VCL層。見圖1。

      圖1 H.264視頻數(shù)據(jù)獲取層次

      RTP視頻數(shù)據(jù)獲取層是基礎(chǔ)層。在這一層系統(tǒng)將通過RTP協(xié)議來傳輸H.264視頻,它對從H.264視頻中獲得的數(shù)據(jù)信息中剝離出每個網(wǎng)絡(luò)適配層單元,然后在每個單元前添加相應的起始碼:0x000001,用來指示一個 NALU的起始和終止位置。最后將包含RTP協(xié)議的起始碼和網(wǎng)絡(luò)適配單元數(shù)據(jù)包發(fā)送出去。

      NAL視頻數(shù)據(jù)抽取層是中間層。在這一層基礎(chǔ)層傳輸來的數(shù)據(jù)包解析為NAL頭、RBSP原始字節(jié)序列負荷兩部分,對NAL數(shù)據(jù)包頭實施解析判斷,并做出兩種處理方式。第一判斷是否有特殊字符標記,若有錯誤則對數(shù)據(jù)包進行拋棄處理,若正確則將NAL數(shù)據(jù)包送到VCL視頻編碼層。在做完這個判斷后,系統(tǒng)自動釋放數(shù)據(jù)鏈表所占用的內(nèi)存資源,并對下一個RTP數(shù)據(jù)包的起始編碼更新,以實現(xiàn)前后數(shù)據(jù)的連接。

      VCL視頻數(shù)據(jù)編碼層處于最頂層,主要采用運動補償預測,變換編碼和熵編碼等一系列手段對數(shù)據(jù)重新編碼、壓縮、封裝,使視頻內(nèi)容得以更高效地傳輸、播放,以確保送到客戶端解碼器端的網(wǎng)絡(luò)適配單元符合標準的順序。

      2.4 建立緩沖驗證機制

      視頻幀數(shù)據(jù)緩沖驗證機制工作建立主要是為了消除網(wǎng)絡(luò)狀況不佳或其他原因而引起的RTP數(shù)據(jù)包被動丟失和因延時時間過長而引起的數(shù)據(jù)主動丟棄所帶來的H.264視頻解碼錯誤。H.264視頻幀緩沖驗證機制運行處于RTP層與NAL層工作時序之間,基本設(shè)計思想如下:首先在數(shù)據(jù)獲取層和數(shù)據(jù)解析層之間建立一個H.264視頻幀數(shù)據(jù)緩沖驗證機制層。然后從RTP數(shù)據(jù)層中獲取一個完整視頻幀所有信息的RTP數(shù)據(jù)包,并把RTP數(shù)據(jù)包指針存儲在緩沖層的一個隊列中。接著利用NAL包頭中的結(jié)束標志位來定位一個視頻幀結(jié)束位置。最后對緩沖層中視頻幀數(shù)據(jù)進行前后序列號驗證,如果前后幀序列號連續(xù)且完整,則說明RTP數(shù)據(jù)正確,如果序列號有錯誤或不連續(xù),則說明這一視頻幀信息不完整或有錯誤在其中。為了避免錯誤數(shù)據(jù)被VLC送到ffmpeg進行視頻解碼,該驗證機制有效防止了解碼錯誤的擴散,對在下一個I幀到來之前的視頻幀采用丟棄策略。

      3 實驗測試

      對于以上的優(yōu)化設(shè)計策略的合理性和實際使用效果,實驗采用了模擬網(wǎng)絡(luò)丟包測試,即在視頻數(shù)據(jù)每隔500個數(shù)據(jù)包傳輸完成后,人工丟棄一個數(shù)據(jù)包的策略。在實驗過程中采用對比法利用同一視頻在“未經(jīng)修改的VLC播放器”和“優(yōu)化后的VLC播放器”中進行播放效果測試,測試視頻數(shù)據(jù)分為兩種,第一種為碼率上限1 024 Kbit/s,分辨率為720 P,測試結(jié)果如圖2所示;第二種為碼率上限2 048 Kbit/s,分辨率為1 080 P,測試結(jié)果如圖3所示。

      b) 未經(jīng)優(yōu)化的視頻播放

      a) 經(jīng)過優(yōu)化后的視頻播放

      b) 未經(jīng)優(yōu)化的視頻播放

      從上面兩組實驗測試效果圖可以看出,未經(jīng)優(yōu)化的視頻播放器在播放視頻時由于原始視頻數(shù)據(jù)在傳輸時發(fā)生了丟包錯誤,最終出現(xiàn)了因視頻幀數(shù)據(jù)信息不完整而無法正確解碼所產(chǎn)生的馬賽克、亮斑、雜色等影響觀看效果圖像,這一現(xiàn)象尤其是在暗部區(qū)域和邊緣區(qū)域表現(xiàn)更為明顯。而優(yōu)化后的視頻播放器由于系統(tǒng)采取了一系列合理的優(yōu)化處理方法,使得視頻播放器不會接收錯誤數(shù)據(jù)包并實施解碼,因而播放出來的視頻就沒有出現(xiàn)花屏和馬賽克等現(xiàn)象。因此,從本實驗數(shù)據(jù)可以得出:基于Android平臺的高清監(jiān)控視頻系統(tǒng)的優(yōu)化設(shè)計對于因數(shù)據(jù)傳輸丟包、編解碼誤差、網(wǎng)絡(luò)延時時間過長等引起的錯誤視頻數(shù)據(jù)能夠有效處理,保證了播放內(nèi)容的清晰度。

      4 結(jié)束語

      在Android平臺上觀看高清監(jiān)控視頻,由于受4G移動無線網(wǎng)絡(luò)帶寬和網(wǎng)絡(luò)穩(wěn)定性方面的限制,要在有限的網(wǎng)絡(luò)條件下提升視頻的可視效果,則必須采用一定的視頻優(yōu)化播放技術(shù)。本次研究從基礎(chǔ)環(huán)境配置到數(shù)據(jù)解碼重組策略均實現(xiàn)了一定的優(yōu)化設(shè)計,在一定程度上解決了網(wǎng)絡(luò)視頻因丟包和延時帶來的視頻播放不清晰的問題,為基于Android平臺的移動客戶端在高清視頻監(jiān)控應用領(lǐng)域提供了一種解決方法。

      [1] 李宗辰,朱秀昌.基于VLC的Android多路視頻監(jiān)控系統(tǒng)[J].現(xiàn)代電子技術(shù),2013(24):63-66.

      [2] 李校林,劉海波,張杰,等.RTP/RTCP,RTSP在無線視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].電視技術(shù),2011(19):89-92.

      [3] 李校林,劉利權(quán),張杰.基于RTP的H.264視頻流實時打包傳輸?shù)难芯縖J].計算機工程與科學,2012(5):168-171.

      [4] 陳建明.Android平臺的VLC播放器實現(xiàn)機制研究[J].單片機與嵌入式系統(tǒng)應用,2015(5):32-34.

      [5] 陳鋒鋒.基于RTSP的流煤體傳輸系統(tǒng)的應用開發(fā)[D].南京:南京郵電大學,2013:23-35.

      [責任編輯:李娟]

      The Optimal Design of HD Video System Based on Android Platform

      JIANG Dayang

      (Information Center, Changzhou College of Information Technology, Changzhou 213164, China)

      The video monitoring system based on Android platform acts as a back-end application for video surveillance systems. It relies on the wireless network and the monitoring system storage to communicate with the server, and receives wireless video packets in real time and plays video. Since the wireless video surveillance system is a large amount of data transmission system, it is vulnerable to wireless network bandwidth and stability factors. In order to improve the HD monitor video in the mobile client playback effect, this paper analyzes the characteristics of video playback, adopts the optimal design based on the Android platform in aspects of video signal transmission, codec and data validation. This provides a better technical solution for users to monitor HD video surveillance anytime and anywhere.Key words:video monitoring; Android; H.264

      2017-04-07

      2016年江蘇省教育廳定向研究課題

      蔣達央(1978-),男,工程師,碩士,主要研究方向:計算機科學技術(shù)、現(xiàn)代教育技術(shù)

      TN 948.6

      A

      1672-2434(2017)03-0016-04

      猜你喜歡
      播放器解碼高清
      《解碼萬噸站》
      Walkman誕生40周年 索尼適時發(fā)布NW-ZX500和NW-A100系列播放器
      解碼eUCP2.0
      中國外匯(2019年19期)2019-11-26 00:57:32
      基于STM32的MP3播放器設(shè)計
      電子制作(2019年9期)2019-05-30 09:41:44
      NAD C368解碼/放大器一體機
      Quad(國都)Vena解碼/放大器一體機
      Moon ACE播放器/放大器一體機
      4K高清監(jiān)控需要兩條腿走路
      數(shù)碼單反拍攝高清視頻時同期聲的收錄探索
      新媒體研究(2015年7期)2015-12-19 09:09:57
      播放器背板注塑模具設(shè)計
      中國塑料(2015年8期)2015-10-14 01:10:55
      茂名市| 德令哈市| 吉木萨尔县| 隆德县| 辉南县| 马山县| 当涂县| 嵊州市| 龙口市| 勃利县| 乐山市| 定日县| 砚山县| 永德县| 新绛县| 清水河县| 万载县| 宜春市| 广水市| 西吉县| 陇南市| 双鸭山市| 阿克| 花莲市| 银川市| 辽宁省| 江城| 临漳县| 四子王旗| 云和县| 濮阳县| 尤溪县| 保康县| 湛江市| 柏乡县| 盘锦市| 凤冈县| 浙江省| 宝鸡市| 白沙| 大悟县|