亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于B/S模式下的值班監(jiān)控系統(tǒng)設(shè)計(jì)

        2021-02-11 07:59:20李大明
        新技術(shù)新工藝 2021年12期
        關(guān)鍵詞:字段接收端線(xiàn)程

        張 奔,李大明

        (中國(guó)電子科技集團(tuán)公司第二十八研究所,江蘇 南京 210007)

        在值班系統(tǒng)中對(duì)重點(diǎn)區(qū)域的實(shí)時(shí)監(jiān)控是必不可少的,值班人員能夠掌握監(jiān)控區(qū)域的實(shí)時(shí)視頻畫(huà)面,通過(guò)視頻實(shí)時(shí)掌握區(qū)域動(dòng)向[1-3]。隨著計(jì)算機(jī)性能的提升,用計(jì)算機(jī)處理視頻信息和數(shù)字視頻傳輸已經(jīng)得到廣泛應(yīng)用。目前,網(wǎng)絡(luò)傳輸?shù)募夹g(shù)越來(lái)越成熟,網(wǎng)絡(luò)帶寬也越來(lái)越高,但是視頻的數(shù)據(jù)量一般都非常大,如果不通過(guò)任何壓縮技術(shù)傳遞視頻,會(huì)造成數(shù)據(jù)堵塞、延遲甚至丟失現(xiàn)象,視頻畫(huà)面會(huì)嚴(yán)重卡頓。因此,在傳遞視頻時(shí)對(duì)視頻圖像壓縮成為必然的環(huán)節(jié)。在諸多視頻壓縮標(biāo)準(zhǔn)中,MPEG-4以其高壓縮比和高性能備受人們的青睞,被廣泛應(yīng)用于網(wǎng)絡(luò)環(huán)境下的視頻傳輸。本文采用Divx編解碼器[4-6]對(duì)視頻進(jìn)行編碼、壓縮。Divx編碼后形成以幀為格式的MPEG-4流,Divx解碼也是以幀的格式解碼,通過(guò)Divx編解碼器有效地解決了由于網(wǎng)絡(luò)的局部不穩(wěn)定導(dǎo)致的視頻圖像重影、抖動(dòng)、花瓶,得到了良好質(zhì)量的視頻畫(huà)面。

        1 系統(tǒng)構(gòu)成

        1.1 硬件環(huán)境

        系統(tǒng)硬件設(shè)備由CCD攝像頭、采集卡、服務(wù)器、交換機(jī)和若干個(gè)客戶(hù)端席位組成,組成架構(gòu)如圖1所示。系統(tǒng)支持5~10個(gè)客戶(hù)端席位,在服務(wù)器上安裝一個(gè)基于PCIe總線(xiàn)的采集卡,攝像頭通過(guò)AV線(xiàn)與采集卡相連,服務(wù)器采集到的視頻流經(jīng)過(guò)壓縮成為一個(gè)信息包,通過(guò)網(wǎng)絡(luò)傳送到客戶(hù)端,客戶(hù)端接收到信息包進(jìn)行解壓并實(shí)時(shí)顯示,從而得到清晰流暢的運(yùn)動(dòng)圖像。同時(shí)服務(wù)器端也可以實(shí)時(shí)顯示所采集的視頻。

        圖1 系統(tǒng)硬件框圖

        1.2 系統(tǒng)軟件

        圖2 系統(tǒng)軟件流程圖

        2 系統(tǒng)設(shè)計(jì)關(guān)鍵模塊

        2.1 視頻采集

        裝有視頻采集卡的服務(wù)端接收攝像頭拍攝的視頻圖像,服務(wù)端的軟件采用VFW技術(shù)對(duì)視頻圖像進(jìn)行捕獲,VFW是微軟公司推出的一款關(guān)于數(shù)字視頻的軟件開(kāi)發(fā)包,其優(yōu)勢(shì)簡(jiǎn)單直觀,能夠快速地運(yùn)用回調(diào)函數(shù)完成對(duì)視頻的實(shí)時(shí)捕獲并對(duì)視頻源進(jìn)行控制。在視頻捕獲前先創(chuàng)建一個(gè)視頻捕獲窗口,通過(guò)capDriverConnect()關(guān)聯(lián)捕獲視頻窗口到視頻驅(qū)動(dòng)程序上,對(duì)視頻捕獲參數(shù)和窗口顯示模式進(jìn)行設(shè)計(jì),通過(guò)capSetCallbackOnFrame()注冊(cè)回調(diào)函數(shù),捕獲圖像到緩存并進(jìn)行相應(yīng)處理,完成捕獲。

        2.2 視頻幀的組成

        視頻采集的數(shù)據(jù)是位圖型式的視頻幀,發(fā)送前要對(duì)視頻幀進(jìn)行編碼,利用Divx編碼器壓縮以后形成以幀為格式的Mpeg4流。Divx解碼器也是以幀的格式解壓。為了在接收端能夠方便地提取出一幀,提出格式組建幀(見(jiàn)圖3)。

        圖3 視頻幀格式

        每個(gè)視頻幀由5個(gè)字段組成,各個(gè)字段的描述如下:第1個(gè)字段為占用4個(gè)字節(jié)的幀開(kāi)始標(biāo)志,標(biāo)志著一幀的開(kāi)始;第2個(gè)字段為占用4個(gè)字節(jié)的幀大小,表示整個(gè)幀的大小;第3個(gè)字段為占用4個(gè)字節(jié)的幀編號(hào),表示幀的順序編號(hào);第4個(gè)字段為占用1個(gè)字節(jié)的幀類(lèi)型,標(biāo)志此幀是否是關(guān)鍵幀;第5個(gè)字段為幀數(shù)據(jù),存放壓縮后一幀的完整數(shù)據(jù),大小不定,壓縮比越高,幀數(shù)據(jù)的大小越小。

        2.3 視頻幀的發(fā)送和接收

        為了保證接收端能夠及時(shí)接收到發(fā)送過(guò)來(lái)的視頻數(shù)據(jù),在發(fā)送端專(zhuān)門(mén)創(chuàng)建一個(gè)線(xiàn)程用來(lái)發(fā)送數(shù)據(jù)。同時(shí)主線(xiàn)程循環(huán)地對(duì)采集到的視頻數(shù)據(jù)進(jìn)行壓縮編碼。發(fā)送線(xiàn)程的工作流程如圖4所示。

        圖4 發(fā)送線(xiàn)程工作流程

        線(xiàn)程中發(fā)送的數(shù)據(jù)幀是按照上一節(jié)中的方法組建好的數(shù)據(jù)幀。該方法能夠保證正在發(fā)送的當(dāng)前幀能夠完整地到達(dá)接收端。

        注意此線(xiàn)程中剛開(kāi)始或者每當(dāng)發(fā)送完一幀以后,線(xiàn)程就轉(zhuǎn)到掛起狀態(tài),等待外界喚醒。這個(gè)任務(wù)由回調(diào)函數(shù)完成,在回調(diào)函數(shù)中,判定如果發(fā)送線(xiàn)程準(zhǔn)備就緒(處于掛起狀態(tài)),則進(jìn)行圖像壓縮,然后喚醒線(xiàn)程發(fā)送壓縮完的數(shù)據(jù),否則直接跳出,等待下一次調(diào)用回調(diào)函數(shù)。

        接收端最重要的是從接收的數(shù)據(jù)流中提取出完整的一幀。該方法的思想是:首先從數(shù)據(jù)流中尋找?guī)_(kāi)始標(biāo)志,再?gòu)木o挨后面的數(shù)據(jù)中提取出幀的大小,然后從接收緩沖區(qū)中讀入該幀剩余的數(shù)據(jù),最后尋找下一幀的開(kāi)始標(biāo)志,如此往復(fù)。接收端的工作流程如圖5所示。

        圖5 接收端的工作流程

        3 JNI技術(shù)[10]

        3.1 JNI介紹

        Java Native Interface(JNI)是Java語(yǔ)言的本地編程接口,是J2SDK的一部分,已經(jīng)被集成到標(biāo)準(zhǔn)Java平臺(tái)之中。在Java程序中,可以通過(guò)JNI實(shí)現(xiàn)一些用Java語(yǔ)言不便實(shí)現(xiàn)的功能。使用JNI提供的方法,Java代碼能夠直接與特定操作系統(tǒng)和硬件平臺(tái)中的本地共享二進(jìn)制庫(kù)進(jìn)行交互。這個(gè)交互過(guò)程發(fā)生在相同的Java虛擬機(jī)進(jìn)程之中。

        將Java類(lèi)中聲明的類(lèi)型為“Native”的Java方法映像到共享二進(jìn)制庫(kù)中的相應(yīng)函數(shù)上,并且將這兩者加載到相同的進(jìn)程空間。JNI框架使得本地方法使用Java對(duì)象的方式和Java代碼使用這些對(duì)象相同。一個(gè)本地方法能夠創(chuàng)建Java對(duì)象,然后檢查并使用這些對(duì)象,也可以檢查并使用由Java應(yīng)用程序代碼創(chuàng)建的對(duì)象,甚至能夠修改它創(chuàng)建的或傳遞給它的Java對(duì)象。因此,本地語(yǔ)言和Java應(yīng)用程序都能創(chuàng)建、修改、訪(fǎng)問(wèn)Java對(duì)象,并在它們之間共享這些對(duì)象。本地方法也能夠很容易地調(diào)用Java方法、傳遞方法所需的參數(shù)并得到返回的結(jié)果。

        3.2 JNI使用步驟

        1)步驟1:在MyEclipse里建立一個(gè)包含Compressor類(lèi)的Java工程,該類(lèi)中包含了需要調(diào)用的本地化方法的描述。其中,本地化方法應(yīng)當(dāng)用native關(guān)鍵詞聲明。使用System.LoadLibrary()方法加載需要的動(dòng)態(tài)鏈接庫(kù)。代碼如下:

        Package com.chnic.jni

        Public class Compressor{

        Static{

        System.LoadLibrary(“DeCompressorEnd”);

        }

        Public Compressor (){}

        Public native void InitCompressor();

        Public native void FillBitmapstruct();

        Public native void UnInitCompressor();

        Public native void UnCompress(byte[] in,int width,int heigh,byte[] out);

        }

        2)步驟2:將步驟1生成的源文件用Java類(lèi)編譯器編譯成二進(jìn)制字節(jié)碼文件,接下來(lái)要用javah方法來(lái)生成一個(gè)相對(duì)應(yīng)的.h頭文件。Javah是一個(gè)專(zhuān)門(mén)為JNI生成頭文件的命令。CMD打開(kāi)控制臺(tái)之后輸入javah回車(chē)就能看到j(luò)avah的一些參數(shù),在控制臺(tái)進(jìn)入到工程的根目錄之后,然后輸入命令:Javah-jni com.chnic.jni.Compressor。

        命令執(zhí)行完之后,在工程的根目錄下就會(huì)發(fā)現(xiàn)com_chnic_jni_Compressor.h這個(gè)頭文件。

        ifdef__cplusplus

        extern "C" {

        endif

        /*

        * Class: com_chnic_jni_Compressor

        * Method: InitCompressor

        * Signature: ()V

        */

        JNIEXPORT void JNICALL Java_com_chnic_jni_Compressor_InitCompressor

        (JNIEnv *, jobject);

        /*

        * Class: com_chnic_jni_Compressor

        * Method: FillBitmapStruct

        * Signature: ()V

        */

        JNIEXPORT void JNICALL Java_com_chnic_jni_Compressor_FillBitmapStruct

        (JNIEnv *, jobject);

        /*

        * Class: com_chnic_jni_Compressor

        * Method: UnInitCompressor

        * Signature: ()V

        */

        JNIEXPORT void JNICALL Java_com_chnic_jni_Compressor_UnInitCompressor

        (JNIEnv *, jobject);

        /*

        * Class: com_chnic_jni_Compressor

        * Method: Compress

        * Signature: ([BI[B)V

        */

        JNIEXPORT void JNICALL Java_com_chnic_jni_Compressor_UnCompress

        (JNIEnv *, jobject, jbyteArray, jint, jint,jintArray);

        ifdef __cplusplus

        }

        endif

        endif

        3.3 系統(tǒng)測(cè)試

        本系統(tǒng)在Windows 7平臺(tái)下服務(wù)器采集到的視頻數(shù)據(jù)壓縮之后以廣播方式將數(shù)據(jù)發(fā)送出去,圖像大小為640*512的位圖,每秒采集25幀,壓縮比最大時(shí)為100,且延遲較小,用戶(hù)只需在客戶(hù)端登錄Web網(wǎng)頁(yè)即可查看到解壓后的視頻流。經(jīng)過(guò)比較,服務(wù)器上顯示的視頻和客戶(hù)端顯示的視頻基本相同,并且客戶(hù)端的視頻和服務(wù)器上的視頻基本同步,流暢性也較好。服務(wù)端和客戶(hù)端的視頻截圖分別如圖6和圖7所示。

        圖6 服務(wù)器顯示的視頻

        圖7 客戶(hù)端顯示的視頻

        4 結(jié)語(yǔ)

        本文對(duì)實(shí)時(shí)視頻傳輸系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)做了較為詳細(xì)的描述,重點(diǎn)介紹了基于Divx的視頻編解碼技術(shù)、JNI技術(shù)以及基于B/S結(jié)構(gòu)的實(shí)時(shí)視頻數(shù)據(jù)傳輸顯示。試驗(yàn)表明,通過(guò)上述方法實(shí)現(xiàn)的網(wǎng)絡(luò)視頻傳輸能達(dá)到良好質(zhì)量的視頻畫(huà)面,滿(mǎn)足了視頻實(shí)時(shí)傳輸?shù)囊?,達(dá)到了預(yù)期的效果。

        猜你喜歡
        字段接收端線(xiàn)程
        圖書(shū)館中文圖書(shū)編目外包數(shù)據(jù)質(zhì)量控制分析
        基于擾動(dòng)觀察法的光通信接收端優(yōu)化策略
        頂管接收端脫殼及混凝土澆筑關(guān)鍵技術(shù)
        一種設(shè)置在密閉結(jié)構(gòu)中的無(wú)線(xiàn)電能傳輸系統(tǒng)
        新能源科技(2021年6期)2021-04-02 22:43:34
        基于多接收線(xiàn)圈的無(wú)線(xiàn)電能傳輸系統(tǒng)優(yōu)化研究
        淺談linux多線(xiàn)程協(xié)作
        CNMARC304字段和314字段責(zé)任附注方式解析
        無(wú)正題名文獻(xiàn)著錄方法評(píng)述
        關(guān)于CNMARC的3--字段改革的必要性與可行性研究
        Linux線(xiàn)程實(shí)現(xiàn)技術(shù)研究
        国产av天堂一区二区二区| 亚洲av最新在线网址| 中文字幕在线亚洲日韩6页| 欧美人妻精品一区二区三区 | 久久综合精品国产丝袜长腿| 揄拍成人国产精品视频肥熟女| 国产av熟女一区二区三区蜜臀 | 亚洲av综合久久九九| 国产主播在线 | 中文| 人妻少妇中文字幕久久69堂| 人妻av中文字幕精品久久| 精品亚洲麻豆1区2区3区| 午夜免费视频| 欧美成人精品第一区二区三区| 2021年国产精品每日更新| 白白视频在线免费观看| 亚洲精品久久蜜桃av| 国产99久久久国产精品~~牛| 免费无码毛片一区二区app| 四虎影视国产在线观看精品| 制服无码在线第一页| 亚洲免费av第一区第二区| 美女露出奶头扒开内裤的视频| 国产成人a级毛片| 欧洲熟妇色 欧美| 亚洲人成精品久久久久| 日本办公室三级在线看| 亚洲综合欧美色五月俺也去| 免费无码毛片一区二区三区a片| 中文精品久久久久中文| 熟妇人妻精品一区二区视频| 伊人色综合久久天天五月婷| 亚洲av无码1区2区久久| 日日噜噜夜夜狠狠2021| 久久综合另类激情人妖| 日本亚洲欧美色视频在线播放| 九九免费在线视频| 激情人妻中出中文字幕一区| 熟女人妻一区二区三区| 国产成人精品一区二区三区| 精品高潮呻吟99av无码视频 |