999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VLC的Android多路視頻監控系統

2013-04-12 00:00:00李宗辰朱秀昌
現代電子技術 2013年24期

摘 要: 針對傳統視頻監控終端龐大,地點固定,有專人值守等特點,提出一種基于VLC開源播放器和Android操作系統的多路視頻監控系統。重點闡述如何通過編譯VLC源代碼以在Android操作系統下實現多路TS流解碼;通過結合視頻服務器、編碼器,進行4路視頻監控;通過與服務器的交互,對云臺進行控制。與傳統的視頻監控系統相比,該系統具有畫面清晰度高、便攜、易接入的特點,具有廣泛的應用前景。

關鍵字: 視頻監控; Android; VLC; 編譯; 云臺控制

中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2013)24?0063?04

Multi?channel video monitoring system based on Android and VLC

LI Zong?chen, ZHU Xiu?chang

(Nanjing University of Posts and Telecommunications, Nanjing 210003, China)

Abstract: Since the traditional video monitoring system usually has a large terminal located at certain place and needs to be watched over by a specially?assigned person, a new multi?channel video monitoring system based on Android operating system and VLC is proposed. The method of compiling VLC source code and migrating it to Android to achieve multi?channel TS stream decoding on Android Platform is elaborated emphatically. The four channel video monitoring can be achieved by combining video server with video encoder. By interacting with video server, the console of the video camera can be control. In comparison with traditional vedio monitoring system, the system has high resolution, and is portable and easy to access. Therefore, it has a broad application prospect.

Keywords: video monitoring; Android; VLC; compile; console control

0 引 言

如今,視頻監控[1]已經被廣泛應用到人們的生活當中,為大家提供了很多便利。傳統的視頻監控通常設有監控室,由專人值守,監控室中設有大的屏幕可以同時看到多路的畫面,使得監控人員可以隨時掌握各個區域的情況。伴隨著智能手機和無線網絡的發展,過去應用廣泛的許多龐大終端如PC機等所實現的功能,尤其是系統的控制功能,現在都已經可以在智能手機終端上實現了。基于這樣的考慮,為了實現視頻監控系統的控制移動化和智能化,開發了一套基于Android操作系統[1]的多路視頻監控系統,可以將現在的多路視頻監控系統應用到手機上,讓管理員可以在任意有WiFi覆蓋的地點實現對監控系統的訪問,使得多路視頻監控變得更加便利。

本文介紹了一種基于Android智能終端的移動視頻監控系統,利用VLC實現多路視頻的解碼播放,終端通過WiFi無線網絡與視頻服務器,視頻編碼器連接,可以實現在局域網中任意地點多路視頻監控與云臺調整等功能。

1 Android系統與VLC播放器

1.1 Android操作系統的軟件開發

Android是一款基于Linux的開源操作系統,具有多媒體性能突出,開發便利的特點。大多搭載在使用了ARM架構的硬件設備上,近兩年來也同樣出現了支持X86架構的Android操作系統。隨著硬件性能的提升,近兩年來,搭載Android操作系統的手機平板等設備在播放視頻方面的性能已經逐漸可以與傳統PC相媲美,實現全高清的視頻播放。

由于Android的開源特性,進行應用程序的開發非常便捷和方便,可以通過在Android SDK中使用Java作為編程語言來開發應用程序,同時也可以通過在Android NDK中使用C或者C++來作為編程語言開發應用程序。

Android提供了MediaPlayer類實現多媒體文件和網絡流的播放。為了實現4路視頻監控,首先考慮使用MediaPlayer實現多路TS流的解碼。經過測試,原生的MediaPlayer由于經過高度集成,只能在上層進行調用,通過提供URL實現播放。播放有4路視頻的TS流時,只顯示其中的一路,并且延遲比較嚴重(達到4~5 s)。因此考慮采用支持多路播放的開源播放器VLC,將其應用到Android上。而由于VLC的代碼完全由C和C++編寫,因此,需要通過將VLC的源代碼編譯成庫文件通過Android提供的JNI接口調用,在底層進行解碼操作后,通過上層應用進行播放。

JNI(Java本地接口)是一個軟件框架,可以讓Dalvik虛擬機中的Java語言通過此接口,調用本地的程序,或者用C++/C/匯編語言編寫的庫文件。使用JNI接口的應用可以讓開發者實現一些用Java語言不便實現的功能,這些情況主要有:

(1)標準的Java類庫沒有提供應用程序所需要的功能,通常這些功能是平臺相關的;

(2)希望使用一些已經有的類庫或者應用程序,而他們并非用Java語言編寫的;

(3)程序的某些部分對速度要求比較苛刻,選擇用匯編或者C語言來實現并在Java語言中調用他們。

1.2 VLC開源播放器

VLC屬于Video LAN開源項目組織中的一款全開源的流媒體服務器[2]和多媒體播放器。作為多媒體播放器,VLC可以播放多種格式的媒體文件,如WMV,MPG,H.264等。

VLC采用全模塊化結構,在系統內部,通過動態的載入所需的模塊,放入一個Module_bank的結構體中統一管理,連VLC的Main模塊也是通過插件的方式動態載入的(通過Module_InitBank函數在初始化建立Module_bank時)。對于不支持動態載入插件的系統環境中,VLC也可以采用Builtin的方式,在VLC啟動的時候靜態載入所需要的插件,并放入Module_bank統一管理。VLC的模塊分成很多,類別主要有Access,Access_filter,Demux等十多種。VLC無論是作為流媒體服務器還是多媒體播放器,它的實際作用就是一個“播放器”,用于處理ES,PES,PS,TS等流間的轉換、傳輸與顯示。對于多媒體播放器如果采用UDP方式傳輸,它的解碼過程為:TS→DEMUX→ES。

該系統用VLC作為多路TS流的播放器,系統收到由視頻服務器打包的4路TS流之后,經過DEMUX模塊實現分離,再送至解碼模塊實現播放。

2 VLC的編譯與使用

2.1 環境搭建與VLC的編譯

要進行VLC的編譯,首先需要搭建Linux環境,安裝Ubuntu 12.04系統。系統搭建完成之后,安裝必要的工具JDK,SDK,NDK,ANT,完成上述必備條件之后按如下步驟進行:

(1)打開Ubuntu的終端進行環境變量的設置(path為所在文件路徑):

export ANDROID_SDK=/path/to/android?sdk

export ANDROID_NDK=/path/to/android?ndk

export PATH=$PATH:$ANDROID_SDK/platform?tools:$ANDROID_SDK/tools

(2)設置與處理器相關的環境變量,本實驗采用型號為GT?P5110的平板電腦,安裝有Android 4.1操作系統,處理器為支持NEON的ARMv7芯片,因此按照如下設置:

export ANDROID_ABI=armeabi?v7a

(3)用git獲取VLC源碼:

git clone git://git.videolan.org/vlc?ports/android.git

(4)執行編譯:

sh compile.sh

編譯完成后,會生成一個VLC目錄,通過開發工具Eclipse導入VLC項目。如圖1所示,上層的主要源代碼存放于Java包org.videolan.vlc中,其中LibVLC類需要主要使用的類,提供了VLC對象初始化,獲取對象等方法。編譯后同時生成了4個.so庫文件放于armeabi?v7a文件夾下(如圖2 所示),其中以libiomx命名的3個庫文件為針對不同Android版本的IOMX庫文件,可以實現不同平臺上的硬件解碼;libvlcjni.so為解碼播放所要用到的庫文件。

圖1 編譯之后所需要用到的Java語言包

2.2 利用VLC實現四路視頻解碼播放

要實現一個Android應用程序,首先需要創建一個類,繼承Activity類,在應用程序的Activity中創建4個SurfaceView,分別用于顯示所要呈現的四路畫面。

首先在上層通過以下的代碼載入之前編譯過的libvlcjni.so庫

{

System.loadLibrary(\"vlcjni\");

}

LibVLC類通過聲明庫中的本地函數,就可以在上層供應用程序調用。

應用程序獲取到視頻URL之后,要通過VLC進行播放,首先需要獲取到LibVLC的對象:LibVLC m_LibVLC = LibVLC.getInstance(),通過對象m_LibVLC調用類中成員函數readMedia(String url, boolean novideo),在readMedia中,再進行調用本地函數private native void readMedia(long instance, String url, boolean novideo)。函數的3個參數依次為:LibVlc的對象,視頻URL,是否為視頻的標志位。在此函數當中視頻URL通過JNI接口由上層傳遞下去,從而調用libvlcjni.so進行視頻的解碼操作。

以上為在程序中通過設置URL來調用解碼庫進行視頻解碼,為正確顯示4路視頻,還需要將解碼后的數據在屏幕上進行顯示。此時需要在Activity中創建4個SurfaceView對象。SurfaceView對象用于將Surface的內容顯示給用戶。Surface為系統中一個緩沖區的句柄,用于進行繪圖操作。

VLC解碼后的圖像數據通過本地函數attachSurface(Surface surface, Activity player, int width, int height,int nChannelNum)與要顯示的Surface相關聯。參數nChannelNum為視頻的通道數,就本文而言,由于有4路,需要調用4次attachSurface函數。

現在為每個Surface創建容器類SurfaceHolder并設置回調接口SurfaceHolder.Callback。接口中定義了3個函數,surfaceCreated,surfaceChanged,surfaceDestroyed,當Surface被Activity創建時會自動調用surfaceCreated函數,在surfaceCreated函數中進行attachSurface操作,將每一路視頻與Surface進行綁定,這樣視頻內容在解碼后就可以顯示在SurfaceView上。

3 實現多路視頻監控系統

3.1 系統設計

本文所用的視頻監控系統主要由4部分組成:視頻采集模塊(攝像頭)、視頻編碼模塊(編碼器)、視頻處理服務器與接受視頻數據的平板電腦。各模塊之間的結構與數據傳遞方式如圖3所示。

為取得4路畫面,用4臺編碼器連接2臺標清攝像頭與2個視頻源,經編碼器編碼得到4路H.264碼流。碼流經由視頻處理服務器進行打包,形成一路TS流。為了實現多路視頻監控系統,實現所需要的控制功能,所設計的應用程序主要功能有:服務器節目信息解析、多路視頻播放、攝像頭云臺控制。進入應用程序之后,首先向服務器發出請求,獲取服務器上的節目信息;服務器收到請求后,在HTTP中返回XML格式的字符串;收到返回信息之后,通過SAX方式解析出所要播放的URL,將其設置給VLC的對象進行播放。

圖3 監控系統的主要結構與數據傳遞方式

應用程序初始化后,進行直播的實際效果如圖4所示。左邊3路中2路為攝像頭數據,另一路和右邊畫面為采集到的數據。通過設置編碼器參數,輸出視頻碼率為200 kHz的時候,可以看到,4路分辨率為CIF的畫面較清晰,且速度流暢。

圖4 系統進行4路TS流直播的效果截屏

3.2 云臺控制功能

在視頻監控當中,全景攝像頭的使用非常廣泛。管理員時常需要對攝像頭的云臺進行控制,進行角度/焦距/光圈等的調整。如果可以在平板上實現調整云臺的功能,管理員就可以在任何有Wifi覆蓋的地點實現對云臺的控制,使得整個監控系統的功能更加完善。如圖4所示,4個Surfaceview下方設置了云臺控制欄,提供包括攝像頭位置調整、光圈、距離、焦距、速度在內的云臺控制功能。

平板上實現云臺控制,主要需要以下步驟:

(1)向服務器端請求當前播放的多路視頻信息,取到每一路視頻的PID以及對應編碼器IP。

(2)由于一次只能對一路畫面進行云臺調整,因此需要知道所要調整畫面的編碼器地址。通過VLC在解碼時候取出某一路視頻碼流中的PID,通過PID,IP匹配,可以獲知此路畫面的編碼器IP。

(3)由平板向編碼器發送云臺調整命令。編碼器收到之后,進而向攝像頭發送命令,從而實現云臺調整。

為讓4路都可以進行云臺調整,在原先應用程序中添加手勢偵測功能。令Activity繼承android.view.GestureDetector.OnGestureListener。如圖5所示,4路畫面的位置固定如圖,用戶進行云臺調整的畫面始終為畫面1,因此當需要對諸如畫面4的畫面進行云臺調整時,就需要通過手勢將畫面4位置的畫面移至畫面1。用戶通過在觸摸屏上滑動,經監聽器偵測,當起點位置在畫面4的區域中,而終點在畫面1當中時,系統就會調用OnGestureListener接口中的OnFling函數,函數中,將這2路畫面所在的SurfaceHolder進行互換,就完成了畫面拖動。此時,按照圖4當中的云臺控制欄進行操作,程序獲取到畫面4的編碼器IP后,通過向編碼器發送命令,即可實現云臺控制。

圖5 云臺調整圖示

4 結 語

手機的智能化促使人們將日常生活的應用越來越多的移植到手機上。本文通過編譯VLC源代碼,將開源播放器VLC的多路視頻播放功能應用到Android操作系統上,從而實現了多路直播流的解碼。進而通過與服務器的整合,加入云臺控制功能,可以實現4路監控與攝像頭控制功能,讓用戶可以更方便地進行移動監控。經過測試,在播放四路CIF分辨率的視頻時,畫面清晰流暢,可以滿足日常監控的需要,同時,云臺控制功能為管理員的操作提供了方便,因此本系統有著較好的應用前景。

參考文獻

[1] 孔曉東,曾貴華.智能視頻監控技術研究[D].上海:上海交通大學,2008.

[2] 焦磊.基于 Android 的多媒體彩像系統終端軟件的研究與實現[D].北京:北京交通大學,2010.

[3] 曹曉芳,王超,李杰.一種基于 Android 智能手機的遠程視頻監控的設計[J].電子器件,2011,34(6):709?712.

[4] 韓超,梁泉.Android 系統原理及開發要點詳解[M].北京:電子工業出版社,2010.

[5] 郭宏志.Android 應用開發詳解[M].北京:電子工業出版社, 2010.

[6] 佚名.H.264/AVC新一代視頻壓縮編碼標準[S].北京:人民郵電出版社,2005.

[7] 付少華,付紅橋,王政.基于 3G 網絡的手機移動視頻監控系統的設計[J].計算機應用,2011,31(1):70?72.

[8] 常志沛.基于 Android 的智能手機視頻監控系統的設計與實現[D].大連:大連海事大學,2011.

[9] 尚青青,朱秀昌.高清視頻監控中心的設計與實現[J].電視技術,2013,37(11):183?187.

[10] 石頭,張笑微,周建雄.智能網絡視頻監控系統[J].兵工自動化,2009,28(12):71?74.

[11] 王娟,郭家奇,劉微.WiFi 技術的深入探討與研究[J].價值工程,2011(6):80?83.

主站蜘蛛池模板: 亚洲一区国色天香| 国产导航在线| 成人毛片免费观看| 国产jizz| 波多野结衣国产精品| 免费中文字幕在在线不卡| 亚洲va欧美ⅴa国产va影院| 亚洲精品高清视频| A级毛片高清免费视频就| 欧美一区二区三区不卡免费| 国产成人综合在线观看| 日本国产精品| 欧美激情视频二区三区| 亚洲最新地址| 久久女人网| 99热国产这里只有精品无卡顿"| 国产小视频在线高清播放| 亚洲中文字幕23页在线| 亚洲综合18p| 亚洲国产精品日韩专区AV| 国产午夜精品鲁丝片| 亚洲成网站| 国产欧美精品一区二区| 婷婷亚洲视频| 久久77777| 91视频99| 亚洲精品动漫| 色哟哟国产精品| 青青热久免费精品视频6| 久久福利片| 亚洲精品777| 国内精品视频| 国产精品hd在线播放| 2020国产免费久久精品99| 日本高清免费不卡视频| 免费在线国产一区二区三区精品| 欧美日韩北条麻妃一区二区| 又污又黄又无遮挡网站| 99国产精品国产| 无码aⅴ精品一区二区三区| 风韵丰满熟妇啪啪区老熟熟女| 福利姬国产精品一区在线| 国产成人精品亚洲日本对白优播| 九色91在线视频| 亚洲综合第一区| 1769国产精品免费视频| 国产综合无码一区二区色蜜蜜| 亚洲视频a| 国产黄色免费看| 欧美啪啪一区| 98超碰在线观看| 久久伊人色| 日本免费a视频| 91人人妻人人做人人爽男同| 国产精品久久久久无码网站| 欧美亚洲香蕉| 国产主播福利在线观看| 欧美视频在线第一页| 亚洲av无码人妻| 91成人免费观看在线观看| 国产91线观看| 欧美亚洲日韩中文| 色婷婷在线影院| 国产欧美日韩18| 亚洲日韩第九十九页| 欧美成人影院亚洲综合图| 久久免费视频6| 国产成人一区| a级毛片毛片免费观看久潮| 久久久久国色AV免费观看性色| 免费看黄片一区二区三区| 九色视频线上播放| 亚洲人成在线精品| 精品国产乱码久久久久久一区二区| 18禁黄无遮挡网站| 国产精品性| 久久精品国产91久久综合麻豆自制| 久久精品国产精品青草app| 精品无码专区亚洲| 久久久久久久97| 国产精品浪潮Av| 国产精品专区第1页|