<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)ndroid智能手機的遠程視頻監控的設計

基于A(yíng)ndroid智能手機的遠程視頻監控的設計

作者: 時(shí)間:2012-03-20 來(lái)源:網(wǎng)絡(luò ) 收藏

(1)在Linux 環(huán)境下安裝 原生開(kāi)發(fā)工具包NDK.

本文引用地址:http://dyxdggzs.com/article/149383.htm

(2) 創(chuàng )建jni 文件夾,將FFmpeg 工程復制到文件夾下。創(chuàng )建H264Decoder. c 源文件,提供程序使用的接口函數,文件需要包括JNI 的操作頭文件jni. h >, 且函數名有固定的形式, 如com_ipcamera_PreView_H264Decoder 表示com_ipcamera包下面PreView 類(lèi)中H264Decoder 函數。

(3)創(chuàng )建. mk 文件,該文件包含正確構建和命名庫的MakeFile 說(shuō)明。分別在LOCAL_SRC_FILES 和LOCAL_C_INCLUDES 項中添加編譯模塊所需源文件和頭文件目錄。

(4)執行NDK 開(kāi)發(fā)包中的ndk鄄build 腳本,生成對應的。 so 共享庫,并復制到Android 工程下的libs/armeabi 目錄下。

(5) 在A(yíng)ndroid 程序中通過(guò)System. loadLibrary(庫名稱(chēng)冶)加載所需要的庫,加載成功后,應用程序就可以使用H264Decoder 函數進(jìn)行H.264 的解碼。

3. 2 OpenGL ES 繪圖

為了提高繪圖的效率,客戶(hù)端使用OpenGL ES實(shí)現視頻圖像的顯示。OpenGL ES 是一個(gè)2D/3D輕量圖形庫,是跨平臺圖形庫OpenGL 的簡(jiǎn)化版。

OpenGL ES 專(zhuān)門(mén)針對、PDA 和游戲主機等嵌入式設備而,目的是為了充分利用硬件加速,適合復雜的、圖形密集的程序。

Android 中使用GLSurfaceView 來(lái)顯示OpenGL視圖,該類(lèi)繼承至SurfaceView 并包含了一個(gè)專(zhuān)門(mén)用于渲染3D 的接口Renderer,主要通過(guò)實(shí)現ON鄄DrawFrame、onSurfaceChanged 以及onSurfaceCreated等方法構建所需的Renderer.解碼器解碼一幀圖像后,調用GLSurfaceView 的requeSTRender 方法通知OpenGL ES 完成視頻圖像的顯示。使用OpenGL 繪圖的核心代碼如下:

3. 3多線(xiàn)程

視頻數據的接收和解碼都是復雜、持續的過(guò)程,如果其中一個(gè)過(guò)程出現阻塞會(huì )影響整個(gè)程序的運行,因此,客戶(hù)端使用多線(xiàn)程實(shí)現數據接收和視頻解碼的并行處理。在整個(gè)程序運行過(guò)程中,主線(xiàn)程響應用戶(hù)操作,負責屏幕刷新工作,并創(chuàng )建兩個(gè)子線(xiàn)程:數據接收和視頻解碼子線(xiàn)程,處理過(guò)程如圖3 所示。

圖3子線(xiàn)程處理流程

圖3子線(xiàn)程處理流程。

在Java 中, 多線(xiàn)程的實(shí)現有兩種方式: 擴展java. lang. Thread 類(lèi)或實(shí)現java. lang. Runnable 接口。這里通過(guò)繼承Thread 類(lèi)并覆寫(xiě)run()方法實(shí)現兩個(gè)子線(xiàn)程。在多線(xiàn)程的應用中關(guān)鍵是處理好線(xiàn)程之間的同步問(wèn)題,以解決對共享存儲區的訪(fǎng)問(wèn)沖突,避免引起線(xiàn)程甚至整個(gè)系統的死鎖。Java 多線(xiàn)程主要利用synchronized 關(guān)鍵字和wait( )、notify( ) 等方法實(shí)現線(xiàn)程間的同步。

4 結束語(yǔ)

目前,該系統已經(jīng)在實(shí)驗室進(jìn)行測試,服務(wù)器輸出15fps CIF 格式的H. 264 視頻數據,客戶(hù)端安裝在A(yíng)ndroid 上,通過(guò)WIFI 接入無(wú)線(xiàn)局域網(wǎng)中與服務(wù)器建立連接,用戶(hù)界面如圖4 所示,可實(shí)現視頻預覽、云臺控制等操作。

圖4 監控客戶(hù)端

圖4 監控客戶(hù)端

隨著(zhù)3G 時(shí)代的到來(lái),數據傳輸速度有了大幅提升,為移動(dòng)實(shí)時(shí)視頻業(yè)務(wù)的實(shí)現創(chuàng )造更好的條件。

用戶(hù)可以直接接入3G 網(wǎng)絡(luò )訪(fǎng)問(wèn)服務(wù)器,實(shí)現移動(dòng)在線(xiàn)的實(shí)時(shí)。由此可見(jiàn),手機市場(chǎng)潛力巨大,具有很好的發(fā)展前景。

c++相關(guān)文章:c++教程



上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>