<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • 英創(chuàng)Linux主板低成本網(wǎng)絡(luò)視頻監(jiān)控實(shí)現(xiàn)方案

     2019-9-10     作者:黃志超         
    文章標(biāo)簽:C/C++QtESM7000系列ESM6802視頻

      在工業(yè)現(xiàn)場(chǎng)實(shí)際的應(yīng)用中,有很多場(chǎng)景僅需要監(jiān)測(cè)單路視頻圖像,同時(shí)對(duì)系統(tǒng)成本更為敏感。針對(duì)這類(lèi)的應(yīng)用,我們推出了一套低成本的方案,即使用ESM7000系列主板來(lái)實(shí)現(xiàn)相應(yīng)功能。ESM7000系列主板的CPU為雙核Cortex-A7,主頻1GHz的i.MX7D,并且有著低功耗的特點(diǎn),因?yàn)镃PU沒(méi)有專(zhuān)門(mén)的硬件視頻處理單元,所以售價(jià)比ESM6802便宜。與之前英創(chuàng)公司推出了基于ESM6802主板的多通道網(wǎng)絡(luò)攝像頭方案相比較,ESM7000方案屬于低成本應(yīng)用方案,而ESM6802方案則主要針對(duì)需要同時(shí)顯示多路網(wǎng)絡(luò)攝像頭數(shù)據(jù)的用戶(hù),利用CPU中專(zhuān)門(mén)的硬件視頻處理單元來(lái)處理多路數(shù)據(jù)的輸出。


      下面是對(duì)兩套方案主要性能的對(duì)比:


    主板型號(hào)ESM6802ESM7000
    CPU主頻雙核Cortex A9,1GHz雙核Cortex A7,1GHz
    支持網(wǎng)絡(luò)攝像頭顯示通道數(shù)最多可同時(shí)顯示4路,可以支持多路切換單路顯示,可以支持多路切換
    百片價(jià)¥710/片¥540/片


      因?yàn)镋SM7000系列主板的CPU沒(méi)有硬件視頻處理單元,而網(wǎng)絡(luò)攝像頭傳輸過(guò)來(lái)的數(shù)據(jù)是通過(guò)了編碼(常見(jiàn)的H.264、MPEG-4、MJPEG等格式)的,所以需要使用軟件來(lái)進(jìn)行解碼,利用軟件解碼相對(duì)來(lái)說(shuō)需要消耗一定的CPU資源,并且無(wú)法支持多路攝像頭數(shù)據(jù)的拼接顯示,所以只能夠同時(shí)支持一路攝像頭數(shù)據(jù)的顯示。


      實(shí)現(xiàn)軟件解碼的庫(kù)已經(jīng)在主板中移植好了,用戶(hù)可以直接使用,經(jīng)過(guò)我們測(cè)試,采用200W像素網(wǎng)絡(luò)攝像頭(1920×1080)和分辨率為1024×600的屏幕,將單路攝像頭數(shù)據(jù)通過(guò)軟件解碼后以分辨率800×450輸出到顯示窗口中,消耗的CPU資源大約為20%左右,內(nèi)存(1GB)為4%左右。可以看出對(duì)于ESM7000系列主板來(lái)說(shuō),并沒(méi)有占用太多的硬件資源,同時(shí)還能夠進(jìn)行其他的控制操作,比如配合網(wǎng)絡(luò)攝像頭廠商提供的API函數(shù)實(shí)現(xiàn)截圖,上傳,錄像等。


      軟件上同樣還是使用gstreamer和Qt來(lái)實(shí)現(xiàn),ESM7000系列主板的文件系統(tǒng)中已經(jīng)集成了gstreamer和Qt5.8相關(guān)的庫(kù)和工具,并且包含了處理網(wǎng)絡(luò)攝像頭通訊協(xié)議rtsp和使用軟件編解碼的插件,而gstreamer能夠支持多種圖形系統(tǒng)包括Qt。所以利用gstreame能夠快速方便的獲取網(wǎng)絡(luò)攝像頭的數(shù)據(jù)并顯示到Qt界面中,關(guān)于gstreamer的詳細(xì)介紹,可以參考網(wǎng)站https://gstreamer.freedesktop.org/documentation/index.html?gi-language=c


      在實(shí)現(xiàn)ESM6802主板多路網(wǎng)絡(luò)攝像頭方案中,英創(chuàng)公司通過(guò)庫(kù)文件libemgst.so提供三個(gè)API函數(shù)和一個(gè)包含網(wǎng)絡(luò)攝像頭信息的結(jié)構(gòu)體變量。在此基礎(chǔ)上,我們將ESM7000系列板卡的支持也添加進(jìn)去了,對(duì)于用戶(hù)來(lái)說(shuō)使用的API函數(shù)完全相同,唯一一點(diǎn)區(qū)別是ESM7000系列板卡只能同時(shí)支持一路網(wǎng)絡(luò)攝像頭的數(shù)據(jù)顯示。庫(kù)文件內(nèi)部會(huì)自動(dòng)判斷板卡型號(hào),并進(jìn)行對(duì)應(yīng)的處理,用戶(hù)只需要專(zhuān)注于應(yīng)用程序的開(kāi)發(fā)和界面的設(shè)計(jì)上面。


      關(guān)于API函數(shù)和例程在《ESM6802主板支持多路網(wǎng)絡(luò)攝像頭》已經(jīng)有了詳細(xì)的介紹,因?yàn)锳PI函數(shù)是相同的,所以可以使用相同的例程代碼測(cè)試,只需要更換對(duì)應(yīng)的工具鏈重新編譯即可,詳細(xì)的資料可以參考《ESM6802主板支持多路網(wǎng)絡(luò)攝像頭》。我們?cè)谶@里重復(fù)說(shuō)明一下API函數(shù)的定義,方便用戶(hù)查詢(xún):


    /**
     *    初始化gstreamer
    *
    *    本函數(shù)在C的main函數(shù)中調(diào)用,將會(huì)初始化gstreamer庫(kù)
    *
    *    參數(shù)說(shuō)明:
    *    使用main函數(shù)的兩個(gè)參數(shù)填入,gstramer初始化時(shí)需要讀取main函數(shù)的兩個(gè)參數(shù)
    *
     *    返回值說(shuō)明:
    *    無(wú)返回值
    *
     */
    void init_emgst(int argc, char **argv);
     
    /**
     *    包含網(wǎng)絡(luò)攝像頭設(shè)備信息的結(jié)構(gòu)體
    *    訪問(wèn)網(wǎng)絡(luò)攝像頭需要有ip地址,用戶(hù)名和密碼。如果是播放錄像文件,還需要填入
    *    錄像文件的地址,如果是播放實(shí)時(shí)數(shù)據(jù),路徑填寫(xiě)為NULL即可。
    *
    *    參數(shù)說(shuō)明:
    *    ip:指向網(wǎng)絡(luò)攝像頭ip地址的指針
    *    user:指向網(wǎng)絡(luò)攝像頭的用戶(hù)名的指針
    *    passwd:指向網(wǎng)絡(luò)攝像頭密碼的指針
    *    file:指向錄像文件路徑的指針,如果播放實(shí)時(shí)圖像,賦值為NULL
    *
     */
    typedef struct _Rtsp_config {
        char *ip;
        char *user;
        char *passwd;
        char *file;
    } Rtsp_config;
     
    /**
     *    配置gstreamer,并顯示到指定Qt窗口
    *
    *    函數(shù)會(huì)配置gstreamer,顯示多個(gè)網(wǎng)絡(luò)攝像頭的數(shù)據(jù)到xwinid所指定的窗口,窗口的大
    *  小通過(guò)參數(shù)width和height來(lái)確定,而網(wǎng)絡(luò)攝像頭的信息由指針rtsp_config傳入,listsize
    *    指定同時(shí)顯示的通道數(shù)量。因?yàn)橐獎(jiǎng)討B(tài)建立網(wǎng)絡(luò)攝像頭的連接,函數(shù)不會(huì)退出,所以
    *  需要在線程中調(diào)用。
    *
    *    參數(shù)說(shuō)明:
    *  xwinid:Qt窗口的id號(hào),每一個(gè)窗口類(lèi)中都包含這個(gè)成員變量。
    *    width:顯示視頻數(shù)據(jù)所使用的窗口控件的寬度,單位pixel
    *    height:顯示視頻數(shù)據(jù)所使用的窗口控件的高度,單位pixel
    *  rtsp_config:指向設(shè)備信息結(jié)構(gòu)體的指針,通常是一組包含設(shè)備信息的結(jié)構(gòu)體指針。
    *    詳細(xì)解釋可以查看對(duì)結(jié)構(gòu)體Rtsp_config的說(shuō)明
    *  listsize:ESM7000系列主板視頻通道數(shù)最多支持同時(shí)顯示1路,超過(guò)1路會(huì)返回-1報(bào)錯(cuò)。
    *
     *    返回值說(shuō)明:
    *    0 表示正常退出gstreamer
    *  -1 表示填入?yún)?shù)出現(xiàn)錯(cuò)誤,啟動(dòng)gstreamer失敗
    *
     */
      int config_emrtsp(unsigned int xwinid, int width, int height, Rtsp_config *rtsp_config, int listsize);
     
    /**
    *    關(guān)閉gstreamer,釋放資源
    *
    *    函數(shù)會(huì)關(guān)閉gstreamer輸出,并釋放相關(guān)資源
    *
    *    返回值說(shuō)明:
    *    無(wú)返回值
    *
    */
    void release_emrtsp(void);


      例程運(yùn)行效果截圖:


    英創(chuàng)Linux主板低成本網(wǎng)絡(luò)攝像頭實(shí)現(xiàn)方案.png

    文章標(biāo)簽:C/C++QtESM7000系列ESM6802視頻
    亚洲国产精品狼友中文久久久| 99ri在线精品视频| 午夜精品视频任你躁| 99在线观看精品视频| 久久无码人妻精品一区二区三区| 500av大全导航精品| 久久久久亚洲精品美女| 国产玖玖玖九九精品视频| 无码日韩人妻精品久久| 2021最新国产精品网站 | 99re最新地址精品视频| 国产拍揄自揄精品视频| 国产成人无码精品久久久免费 | 99热精品在线免费观看| 成人区精品人妻一区二区不卡| 色综合久久精品中文字幕首页 | 亚洲国产精品无码中文字| 国产成人精品视频2021| 国产精品伦子一区二区三区| 亚洲国产精品va在线播放 | 999国产精品999久久久久久| 久久精品国产69国产精品亚洲| 好湿好大硬得深一点动态图91精品福利一区二区| 久久久一本精品99久久精品36| 国精品午夜福利视频不卡| 精品久久中文网址| 精品人人妻人人澡人人爽牛牛| 欧乱色国产精品兔费视频| 精品无码国产污污污免费网站| 久久精品国产亚洲| 久久精品94精品久久精品| 国产精品内射后入合集| 久久91精品国产91久久户| 国语自产精品视频在线区| 99精品高清视频一区二区| 9i9精品国产免费久久| 久久久91人妻无码精品蜜桃HD | 久久精品中文字幕第23页| 亚洲精品99久久久久中文字幕| 精品91一区二区三区| 日韩精品一区二区三区中文字幕|