多路RTSP流解碼:最高可支持12路視頻編解碼


RK3399/RK3328具有強大的視頻編解碼能力,Soc集成的硬件視頻編解碼器VPU,能同時處理多路視頻的編解碼,Soc集成的圖形加速引擎RGA, 可以高效地處理圖形縮放、旋轉、顏色空間轉換等操作。結合VPU和RGA,可以高效地實現視頻流的解碼和后處理,作為第三方應用處理的數據源。

 

調用API

      Rockchip開發的mpp庫,提供了非常易於使用API,通過各種不同的控制項,可以適應多種不同場景的視頻編解碼應用。

 

硬件准備
 
      RK3399平台:AIO-3399C主板 + 12路攝像頭

 

 RK3328平台:RK3328行業主板 + 6路攝像頭

 

 

運行Demo


      Firefly在RK3399和RK3328 Ubuntu平台上, 針對目前最常見的場景,提供了一個多路RTSP流解碼的Demo,Demo支持在RK3399平台上, 同時解12路H264/H265 RTSP,測試流幀率為25fps,無丟幀,低延時,CPU占用率較低(基本只用於RTSP流接收和封包)。在RK3328平台上,同時能解6路H264/H265 RTSP。

 

運行過程

      Demo中,MPP解碼->圖像后處理->顯示整個流程中,VPU和RGA都是直接訪問內存物理地址,整個過程零內存拷貝,效率很高。處理后的數據,通過libdrm接口,直接送往顯示接口輸出。

 

      Demo對解碼后的圖像輸出數據,只做了顯示處理,如果在實際應用中需要對圖像做處理,可能會導致幀率下降。

 

演示效果
 
    運行時效果圖如下:

 

 

實時幀率

實時幀率計算結果如下:

安裝方法

Demo運行在RK3399 或 RK3328 Ubuntu 18.04平台上。

 
1. 確認系統中存在 /dev/rga 設備節點。 如果沒有此節點, 請參考wiki更新最新的固件。
2. 安裝:
 
$ sudo apt update    
$ sudo apt install firefly-multi-rtsp

  

3.根據實際環境,修改配置文件。 參照下一節配置參數。
4. 運行:
 $ sudo test_ff_rtsp_dec

  

5. 退出:
 
運行過程中,按Enter鍵,退出Demo, 由於退出時需要關閉多路rtsp流,所以退出時需要稍作等待。
 
配置參數

Demo中提供了一個配置文件config.json,用於配置demo的運行環境。

配置文件位於/etc/ff_rtsp_dec/config.json ,json格式。(注意不要在config.json中添加注釋,否則可能會導致json解析出錯)

 
主要配置項如下
 
基礎參數:
    "basepara" : {
        "dri_path" : "/dev/dri/card0",  //不要修改
        
        "prefer_monitor_w" : 1920, 
        "prefer_monitor_h" : 1080,
        
        "code_type" : "H265", //rtsp流編碼類型,H264/H265
         "line_count" : 12,  //rtsp流數量
         
         "output_w" : 480,  //每一路解碼后的輸出size.
         "output_h" : 360,
         
         "rotate" : 0 //旋轉   未使用
         
         },

  

其中prefer_monitor_w 和 prefer_monitor_h是配置外接顯示設備的分辨率。
 
1. 配置外接顯示設備的分辨率,僅在顯示設備支持多種分辨率(如HDMI、DP等顯示器)時有效,如果顯示設備支持該分辨率,則將顯示設備設置為該分辨率。
 
2. LVDS, MIPI屏該配置無效(但仍需保留該配置項,只是配置值無效),因為LCD支持一種分辨率。
 
3. 配置此參數后,Demo將顯示設備設置為對應的分辨率,然后計算該分辨率是否能夠完整顯示所有路RTSP解碼后的輸出。如果不能顯示,應該減小rtsp流數量,或者減小輸出尺寸。
    line_h = prefer_monitor_w / output_w; 
    line_v = prefer_monitor_h / output_h; 
    line_h * line_v <= line_count

  

RTSP 參數

    "rtsp" : [
        {
            "id" : 0, //id
            "url" : "rtsp://168.168.3.100:554/av_stream",   //url
            "usr" : "admin", //username
            "pwd" : "firefly123", //password
            "tcp" : false // Is tcp?
         },
      ...
      ]

  

RTSP參數為一個數組,配置每一路rtsp流的參數。

 

 

———————————————
更多信息請關注Firefly公眾微信號fireflytee:
 
———————————————
Firefly官網:http://www.t-firefly.com

Firefly開源社區:http://developer.t-firefly.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM