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

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

2023-06-17 07:45: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/555374.html

標籤:其他

上一篇:OpenFunction v1.1.0 發布:新增 v1beta2 API,支持 Dapr 狀態管理

下一篇:返回列表

標籤雲
其他(161140) 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:45:07 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:45:02 more
  • iOS 單元測驗之常用框架 OCMock 詳解

    測驗驅動開發并不是一個很新鮮的概念了。在日常開發中,很多時候需要測驗,但是這種輸出是必須在點擊一系列按鈕之后才能在螢屏上顯示出來的東西。測驗的時候,往往是用模擬器一次一次的從頭開始啟動 app,然后定位到自己所在模塊的程式,做一系列的點擊操作,然后查看結果是否符合自己預期。 ......

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

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

    uj5u.com 2023-06-17 07:44:52 more
  • ChatGPT拒絕做這5件事,還有20件它也不會做!

    自從ChatGPT和其他生成式AI應用程式出現以來,我們一直在探索我們可以用它們做什么。看起來ChatGPT可以做任何事情。但在本文中,我們將探討ChatGPT不會或無法做的事情。 ......

    uj5u.com 2023-06-17 07:39:15 more
  • 7個必備JavaScript優化技巧,CodeGeeX 5秒搞定了!

    JavaScript,目前成了使用最廣泛的編程語言。這篇文章給出的是一些 JavaScript 的優化技巧,這些技巧幫助開發者撰寫出更好的代碼。當寫完這些代碼段之后,我突然意識到,所有的這些代碼段,由于它們的常用性,非常適合用AI輔助編程工具CodeGeeX來自動生成。 下載使用——[CodeGee ......

    uj5u.com 2023-06-17 07:34:08 more
  • 計算機視覺重岸訓議VAlSE2023召開,合合資訊分享智能檔案處理技

    近期,2023年度視覺與學習青年學者研討會 (Vision And Learning SEminar, VALSE) 圓滿落幕。會議由中國人工智能學會、中國圖象圖形學學會主辦,江南大學和無錫國家高新技術產業開發區管理委員會承辦。超五千名專家學者、知名高校師生以及來自OPPO、華為、百度、合合資訊等科... ......

    uj5u.com 2023-06-17 07:33:52 more
  • 自然語言處理 Paddle NLP - 詞法分析技術及其應用

    詞法分析就是利用計算機對自然語言的形態(morphology) 進行分析,判斷詞的結構和類別等。”簡單而言,就是分詞并對每個詞進行分類,包括:分詞、詞性標注、物體識別三個任務 ![image](https://img2023.cnblogs.com/blog/80824/202306/80824-2 ......

    uj5u.com 2023-06-17 07:32:57 more
  • 做一個“20倍程式員”

    以前有一個詞叫“十倍程式員”,形容一個程式員效率高,一個頂十個。 現在隨著ChatGPT的爆火,我覺得可以膽子大一點,改叫“二十倍程式員”。 我是一名十幾年的老程式員,最近在學習ChatGPT,也是ChatGPT的重度用戶,已經用上癮了。 接下來我分享一下的日常用法,大家看看是否能提高效率。 一、向 ......

    uj5u.com 2023-06-17 07:32:27 more
  • Node.js 開發常用到的庫和插件工具,同事看到后也悄悄收藏了……

    Node.js是一個功能強大,并且非常流行的 JavaScript 運行時環境,使開發人員能夠高效率的構建高性能應用程式。下面介紹了8個常見的應用程式開發中用到的庫和函式,可以用于快取資料、操作日期、處理影像、發送電子郵件、發出 HTTP 請求、記錄請求和回應、壓縮資料和哈希密碼等。通過使用這些庫, ......

    uj5u.com 2023-06-17 07:32:21 more