<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>
  • ESM8000主板視頻圖像顯示方案簡介

     2021-11-3     作者:黃志超         

    1、概述


      英創公司推出的ESM8000主板搭載了NXP i.MX8M Mini Quad 64位處理器,主CPU為主頻1.6GHz的四核ARM Cortex-A53,并且帶有一個視頻處理單元(VPU),能夠提供硬件解碼和編碼的功能,解碼支持的格式有1080p60 HEVC/H.265,H.264,VP9,VP8等,編碼支持的格式有1080p60 H.264,VP8等。對視頻編解碼有一定需求的應用,最好選擇帶有VPU的主板進行開發。因為在沒有VPU的情況下,CPU只能通過軟件計算來進行編解碼,效率很低并且會占用大量CPU資源,而通過VPU來編解碼能夠極大的節約CPU資源,并且處理的速度也比CPU快很多。


      在ESM8000主板中,已經集成了Qt-5.15,用戶可以通過Qt來實現用戶圖形界面的開發,這部分我們已經在《ESM8000主板圖形界面編程簡介》中比較詳細的介紹過了,文章在最后提到了如果要想調用VPU進行解碼,就需要通過QML界面或者Gstreamer工具。在ESM8000主板中已經集成了Gstreamer工具和一些專用插件,這些插件就提供了使用VPU進行編解碼的功能。為了支持在Qt中調用Gstreamer工具實現視頻的處理,ESM8000主板中移植了專用插件qmlsink,用戶無需進行特殊的設置或者操作,使用標準的QML語言編程即可,當涉及到視頻處理的部分,系統就會自動通過Gstreamer的插件調用vpu來處理視頻。


      所以對于熟悉QML的用戶來說,可以在ESM8000主板上直接采用標準的qml語言編程來實現應用,不需要其他特殊設置,十分方便。對于QML不太熟悉的用戶來說,英創公司提供了一個基于QML語言實現的視頻顯示界面,用戶可以通過在傳統Qt C++的實現的窗口中嵌入這個現成的界面來實現對應的功能。我們想通過這種方式,讓客戶還是可以使用熟悉的Qt C++環境來編程,而不必花費更多的時間去學習QML語言的使用。下面我們以顯示網絡攝像頭監控畫面為例,來講解如何調用現成的QML界面。


    2、Qt C++調用QML實現視頻顯示


      英創公司提供一個現成的基于QML語言實現的視頻顯示界面ipcamera1.qml,這個界面可以顯示本地視頻或者網絡攝像頭的畫面。方案的核心就是利用了Qt提供的quickWidget類來嵌入QML界面,這個widget類專門用于顯示Qt Quick(Qt提供支持QML語言的庫以及函數)用戶界面。在Qt的官方網站中對quickWidget有詳細的說明https://doc.qt.io/qt-5/qquickwidget.html,有興趣的客戶可以參考。


      首先在創建的工程中導入英創公司提供的視頻顯示界面ipcamera1.qml,在這里我們選擇導入到Qt Resource中。右鍵工程選擇添加新文件,在模板中選擇Qt Resource File,單擊下一步,然后輸入名稱,例程中輸入的名稱為qml。可參考下圖:


    ESM8000主板視頻圖像顯示方案簡介.png


      成功后,會自動生成一個qml.qrc文件,這時需要進行初始設置,并添加視頻顯示界面ipcamera1.qml。首先點擊添加按鈕,選擇添加前綴,在前綴中輸入想設置的路徑(在引用資源的時候會使用到),例程中設置為/,如下圖:


    ESM8000主板視頻圖像顯示方案簡介.png


      設置完后,再次點擊添加按鈕,選擇添加文件,在文件瀏覽框中選中復制到工程目錄下的ipcamera1.qml文件,成功后可以在qml.qrc的瀏覽窗中看到對應的文件,如下圖:


    ESM8000主板視頻圖像顯示方案簡介.png


      導入QML文件的部分就已經完成了,用戶只需要在程序中增加對quickWidget的初始化即可,可參考下面的代碼:


    w = new QQuickWidget;  
    w->move(0,0);  
    w->resize(640, 360);  
    w->setSource(QUrl(("qrc:/ipcamera1.qml")));

     

      如果需要和QML界面中的內容進行交互,可以通過信號與槽來實現。Qt C++中發送信號,在QML界面中定義槽函數響應,或是在QML界面中發送信號,在Qt C++中定義槽函數來響應都是可以的。例程中實現了一些按鈕,對QML界面進行簡單的操作,比如開始、停止等功能。在Qt的網站上也有比較詳細的說明:https://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html。在英創公司提供的例程中,加入了開始、停止、縮放、旋轉以及切換清晰度等操作,都是通過界面上C++的控件類(pushButton、comoBox等)發送信號來實現的,具體可以參考例程中的代碼。


      例程采用了比較常用的網絡攝像頭,測試效果如下:


    ESM8000主板視頻圖像顯示方案簡介.png


    3、總結


      從程序的截圖中可以看出來,在使用VPU解碼的情況下,幾乎不會對CPU造成負載,用戶可以利用CPU資源執行其他操作。


      通過這種方式,我們希望讓用戶不必花過多時間對QML語言編程進行學習,以此能夠幫助用戶提升應用程序開發的時間。感興趣的客戶可以和英創的工程師聯系獲取完整的測試代碼。

    国产精品高清一区二区三区不卡| 国产精品无码一区二区在线| 国产成人精品综合久久久| 久久91精品国产91久| 久久国内精品自在自线软件 | 中文精品99久久国产| 久久精品人人做人人爽97| 青青草国产精品视频| 久久水蜜桃亚洲av无码精品麻豆| 国产精品成人国产乱一区| 大伊香蕉在线精品视频人碰人| 2021午夜国产精品福利| 久9久9精品视频在线观看| 中日韩精品电影推荐网站| 国产中的精品一区的| 麻豆精品人妻一区二区三区蜜桃| 91精品国产免费久久国语蜜臀 | 日韩精品久久久久久久电影| 亚洲天堂久久精品| 国产AV国片精品| 国内精品一线二线三线黄| 国产精品热久久无码av| 午夜精品久久久久久| 国产精品国产三级国快看| 精品国产免费观看一区| 亚洲A∨精品一区二区三区下载| 精品久久8x国产免费观看| 99精品国产高清自在线看超| 久久青青草原精品国产不卡| 国产精品无码素人福利不卡| 69精品人人人人人人人人人| 一区二区亚洲精品精华液| 91人前露出精品国产| 日本内射精品一区二区视频| 99视频在线精品免费| 午夜精品成年片色多多| 久久se精品一区二区国产| 久久精品这里热有精品2015| 久久久这里有精品999| 日韩精品无码中文字幕一区二区| 久久一区二区三区精品|