主頁 >  其他 > 視頻編碼耗時長、編碼幀發送失敗…DVPP視頻編碼問題典型案例分析

視頻編碼耗時長、編碼幀發送失敗…DVPP視頻編碼問題典型案例分析

2023-06-17 07:32:07 其他

摘要:本期就分享幾個關于DVPP視頻編碼問題的典型案例,并給出原因分析及解決方法

本文分享自華為云社區《DVPP媒體資料處理視頻編碼問題案例》,作者:昇騰CANN,

DVPP(Digital Vision Pre-Processing)是昇騰AI處理器內置的影像處理單元,通過AscendCL媒體資料處理介面提供強大的媒體處理硬加速能力,主要功能包括影像編解碼、視頻編解碼、影像摳圖縮放等,

本期就分享幾個關于DVPP視頻編碼問題的典型案例,并給出原因分析及解決方法:

  1. 引數設定不合理,導致視頻編碼耗時長或編碼失敗
  2. 發送待編碼幀成功,但視頻編碼無輸出
  3. 發送待編碼幀失敗

01 引數設定不合理,導致視頻編碼耗時長或編碼失敗

問題現象描述

視頻編碼耗時長或編碼失敗,運行編碼應用行程后,使用dvpp的proc資訊排查問題,步驟如下:登錄運行編碼應用行程的環境,在有讀、寫、執行權限的目錄下執行msnpureport -a命令,匯出proc日志資訊,按匯出時間,進入對應時間戳的目錄下,打開“module_info\dev-os-0\dvpp\dvpp_proc.log”日志,proc資訊中關鍵資訊含義如下:EncStart表示啟動編碼的幀數,EndSuccessed表示成功編碼的幀數,Lost和Disc(Disacrd)表示編碼失敗的幀數,Recode表示重編的次數,

1、日志中出現類似下面紅框的資訊:Lost和Disc的數量為0或很低,但是Recode的數量比較大,表示大部分幀能夠編碼成功,但是重編次數太多,

2、日志中出現類似下面紅框的資訊:Lost和Disc的數量比較大,同時Recode的數量也比較大,表示有比較多的幀編碼失敗了,

原因分析

視頻編碼耗時長或編碼失敗可能與編碼緩沖區記憶體大小buf_size引數的設定有關,原理如下:當實際的編碼結果大小大于編碼緩沖區中的可用記憶體大小buf_size時,編碼模塊會自動調整引數重編,減小編碼結果資料大小,如果重編次數全部用完,但是編碼結果大小依然大于編碼緩沖區中的可用記憶體大小,此時編碼模塊會將該幀丟棄,

因此buf_size設定的太小,緩沖幀數少,導致出現重編的概率高,進而導致編碼時延增加,幀率變低,性能下降,甚至出現丟幀概率高的情況,

處理步驟

視頻編碼場景下,創建視頻編碼通道時,合理設定每個通道的buf_size引數,以節省記憶體使用開銷,推薦將buf_size設定為:原圖寬*原圖高*3/2后再64對齊,且取值范圍:[32*1024, 1*1024*1024*1024],以Byte為單位,否則可能出現以下例外情況:

  • 反復重編,進而導致編碼時延變長、性能下降、影像質量下降;
  • 編碼失敗,獲取不到編碼結果,

02 發送待編碼幀成功,但視頻編碼無輸出

現象描述

創建視頻編碼通道后,發送幀成功,但呼叫hi_mpi_venc_get_stream介面獲取編碼后碼流資料時,回傳值為0xa008800e,獲取不到編碼后碼流資料,

可能原因

發送幀成功,但獲取編碼后碼流資料失敗可能原因有以下:

  • 用戶傳入的輸入影像記憶體不是使用dvpp記憶體申請介面hi_mpi_dvpp_malloc申請的,
  • 用戶傳入的輸入影像記憶體大小和影像解析度不匹配,

處理步驟

針對分析的可能原因,請參考以下方法處理:

1.查看日志是否有出現watch_dog相關的資訊,如下圖所示,若出現watch_dog資訊,基本可以確認是記憶體使用存在問題,

[Chnl]:chnl_watch_dog_timer_isr [Line]:1141 find VEDU_0 down,now reset it
[Chnl]:chnl_watch_dog_blackbox [Line]:1097 vpu_id is 0, venc watchdog fail enter blackbx

2.排查應用代碼中輸入影像記憶體的申請方式,如果不是使用dvpp記憶體申請介面hi_mpi_dvpp_malloc申請的,視頻編碼時將無法正常訪問該記憶體,導致編碼無輸出,需要修改為使用hi_mpi_dvpp_malloc申請輸入影像記憶體,

3.排查應用代碼中輸入影像記憶體和解析度是否匹配,比如YUV420SP NV12或NV21格式的YUV影像,一幀影像大小為寬*高*1.5,如果實際送給申請的輸入影像記憶體大小比寬*高*1.5小的話,會產生訪問越界等不可預期的行為,也會導致編碼無輸出,需要保證申請的記憶體大小和實際設定的解析度引數匹配,

03 發送待編碼幀失敗

現象描述

視頻編碼場景下,呼叫hi_mpi_venc_send_frame介面發送待編碼幀,介面回傳值非0值,表示發送幀失敗,

可能原因

導致發送幀失敗的可能原因有以下:

  • 用戶傳入的影像幀引數不在規定的合理范圍內或設定了暫不支持的引數,
  • 用戶送幀的頻率太快,大于性能規格,

處理步驟

針對分析的可能原因,請參考以下方法處理:

1、如果回傳值為0xa0088003或0xa0088008,則說明用戶傳入的影像幀引數不在規定的合理范圍內或設定了暫不支持的引數,

具體是哪個引數傳入有問題可以進一步查看日志資訊,如下圖所示,是傳入的YUV格式不正確,

[Venc]:hevc_check_pixel_format [Line]:1110 H.265 don't support format 5,should be NV12(1) or NV21(2)

常見引數設定問題如下:

(1)入參的結構體沒有進行memset初始化,結構體的部分引數沒有主動設定,導致這部分引數值是一些隨機值;

(2)頭檔案不匹配,導致列舉型別傳入和預期不符合;

(3)引數支持范圍不了解,各個引數的支持范圍可查看hi_mpi_venc_send_frame介面的詳細介紹,

2、如果回傳值為0xa008800d,則說明視頻編碼的輸入空閑佇列已滿,此時無法再繼續往編碼模塊內部送入資料幀,

這種問題一般是由于送幀的頻率太快,大于昇騰AI處理器的處理速度,導致輸入佇列堆積,視頻編碼的輸入空閑佇列長度為6幀,只要堆積到了6幀,再繼續送幀就會報錯,

這種情況,建議在應用代碼中控制呼叫hi_mpi_venc_send_frame的時間間隔,比如編碼幀率30fps,呼叫的間隔可以控制在33ms一幀,

04 更多介紹

[1]昇騰檔案中心

[2]昇騰社區在線課程

[3]昇騰論壇

號外

7月7日,華為開發者大會2023 ( Cloud )將拉開帷幕,并將在國內30多個城市、海外10多個國家開設分會場,誠邀您參加這場不容錯過的年度開發者盛會,讓我們一起開啟探索之旅!

我們將攜手開發者、客戶、合作伙伴,為您呈現華為云系列產品服務與豐富的創新實踐,并與您探討AI、大資料、資料庫、PaaS、aPaaS、媒體服務、云原生、安全、物聯網、區塊鏈、開源等技識訓題,展開全面深入的交流,

大會將匯聚全球科學家、行業領袖、技術專家、社區大咖,開設200多場開發者專題活動,為全球開發者提供面對面交流與合作的機會,共同探討技術創新和業務發展,

大會官網:https://developer.huaweicloud.com/HDC.Cloud2023.html

參會購票:https://www.vmall.com/product/10086352254099.html?cid= 211761

點擊參與開發者社區活動,觀賞技術大咖秀、玩轉技術夢工廠,有機會贏取4000元開發者禮包!

歡迎關注“華為云開發者聯盟”公眾號,獲取大會議程、精彩活動和前沿干貨,

 

點擊關注,第一時間了解華為云新鮮技術~

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555363.html

標籤:其他

上一篇:安全可信 | 首批!天翼云邊緣安全加速平臺AccessOne通過信通院“軟體自研創新能力”專項評估

下一篇:返回列表

標籤雲
其他(161129) Python(38236) JavaScript(25498) Java(18244) C(15237) 區塊鏈(8271) C#(7972) AI(7469) 爪哇(7425) MySQL(7254) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4599) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2436) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) 功能(1967) HtmlCss(1967) Web開發(1951) C++(1941) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 視頻編碼耗時長、編碼幀發送失敗…DVPP視頻編碼問題典型案例分析

    摘要:本期就分享幾個關于DVPP視頻編碼問題的典型案例,并給出原因分析及解決方法 本文分享自華為云社區《DVPP媒體資料處理視頻編碼問題案例》,作者:昇騰CANN。 DVPP(Digital Vision Pre-Processing)是昇騰AI處理器內置的影像處理單元,通過AscendCL媒體資料 ......

    uj5u.com 2023-06-17 07:32:07 more
  • 安全可信 | 首批!天翼云邊緣安全加速平臺AccessOne通過信通院“軟

    近日,中國資訊通信研究院(以下簡稱“中國信通院”)公布“軟體自研創新能力”專項評估(簡稱“可信研創”)結果,天翼云邊緣安全加速平臺AccessOne順利通過評估,成為首批通過該項評估的云服務商。 “軟體自研創新能力”專項評估旨在通過原始碼級別的開源同源匹配技術,分析軟體產品的代碼組成成分,幫助用戶了解 ......

    uj5u.com 2023-06-17 07:31:49 more
  • OpenFunction v1.1.0 發布:新增 v1beta2 API,支持 Dapr 狀態管理

    OpenFunction 是一個開源的云原生 FaaS(Function as a Service,函式即服務)平臺,旨在幫助開發者專注于業務邏輯的研發。在過去的幾個月里,OpenFunction 社區一直在努力作業,為 OpenFunction 1.1.0 版本的發布做準備。今天,我們非常高興地宣 ......

    uj5u.com 2023-06-17 07:31:41 more
  • 程式員接單,哪些單子需要特別注意?

    眾所周知,國內各行各業都在卷,程式員更是卷王里的佼佼者!所以在接單這方面也是嚴重的僧多粥少,其中還有很大一部分是不靠譜的單子,那么那些單子需要特別注意呢?這里給大家分享一下我這幾年來總結的一些經驗,希望對大家有一點幫助。 ......

    uj5u.com 2023-06-17 07:31:29 more
  • 讀資料壓縮入門筆記06_背景關系轉換

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230616160541114-747303059.png) # 1. 壓縮演算法可歸為兩類 ## 1.1. 統計壓縮(即VLC) ## 1.2. 字典壓縮(如LZ78) ## ......

    uj5u.com 2023-06-17 07:31:11 more
  • LGV引理

    # LGV引理 定義 $A$ 是起點集合 $\{a_1,a_2,...,a_n\}$ 。 $B$ 是終點集合 $\{b_1,b_2,...,b_n\}$。 定義 $\omega(P)$ 為路徑 $P$ 每一條邊權值的乘積,即 : $$ \omega(P) = \prod_{e \in P}w_e $ ......

    uj5u.com 2023-06-17 07:31:04 more
  • SX130芯片的LoRa網關吞吐量是SX127芯片的多少倍?

    LoRa網關模塊應用的SX1301芯片資料吞吐量是SX1276/8芯片的多少倍?網關是連接2個不同網路的設備。如果一個設備,它能將LoRa無線網路和Internet連接起來,它就是一個LoRa網關。 ......

    uj5u.com 2023-06-17 07:30:50 more
  • [Week 21] 每日一題(C++,數學,二分,字串,STL)

    [TOC] ## T1 [Daimayuan] 一半相等(C++,數學) 給定 $n$ ($n$ 為偶數)個整數陣列 $a_1,a_2,…,a_n$ 考慮這樣的一個 $k$,每次操作選定一個 $i$,將 $a_i$ 減少 $k$,執行多次(可能 $0$ 次)后使得陣列中至少有一半的元素相等,求最大的 ......

    uj5u.com 2023-06-17 07:30:39 more
  • STL-string(ACM)

    1.相當于加了一些操作的vector<char> 基本操作 字串轉換(C++11) // 將字串轉換為整型 stoi() // 將字串轉換為long long stoll() // 將字串轉換為float型 stof() // 將字串轉換為double型 stod() 后面加入 s += ......

    uj5u.com 2023-06-17 07:30:34 more
  • 了解基于模型的元學習:Learning to Learn優化策略和Meta-Learner

    摘要:本文主要為大家講解基于模型的元學習中的Learning to Learn優化策略和Meta-Learner LSTM。 本文分享自華為云社區《深度學習應用篇-元學習[16]:基于模型的元學習-Learning to Learn優化策略、Meta-Learner LSTM》,作者:汀丶 。 1. ......

    uj5u.com 2023-06-17 07:30:00 more