<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語言編程進行學習,以此能夠幫助用戶提升應用程序開發的時間。感興趣的客戶可以和英創的工程師聯系獲取完整的測試代碼。

    99久久免费国产精品特黄| 9久久免费国产精品特黄| 久久99精品久久水蜜桃| 黑人巨大精品播放| 免费精品国产自产拍在线观看图片 | 国产亚洲女在线线精品| 91精品国产成人网在线观看 | 国产精品视频白浆免费视频| 成人亚洲国产精品久久| 精品成人A区在线观看| 亚洲精品夜夜夜妓女网| 国产精品美女久久久网站| 久久无码国产专区精品| 中文字幕精品亚洲无线码一区应用| 日韩精品免费一区二区三区| 91大神精品全国在线观看| 亚洲国产精品无码专区在线观看 | 99久久免费精品视频| 久久精品成人免费观看97| 思思91精品国产综合在线| 国产精品高清一区二区人妖| 无码精品A∨在线观看中文| 91麻豆国产福利精品| 精品乱码一区内射人妻无码| 国产乱码精品一区二区三区四川人| 97久久精品一区二区三区| 久久久国产精品福利免费| 久久99精品国产麻豆蜜芽| 国产三级久久精品三级| 日韩精品无码人妻免费视频| 国产精品自在自线视频| 97精品在线观看| 99在线观看精品视频| 国产精品后入内射日本在线观看| 国产精品美女免费视频观看| 美女免费精品高清毛片在线视| 国模吧一区二区三区精品视频| 精品影片在线观看的网站| 久久久久久精品无码人妻| 精品人妻码一区二区三区| 久久午夜精品视频|