瑞芯微RK3576平臺FFmpeg硬件編解碼移植及性能測試實戰攻略

本文介紹瑞芯微RK3576平臺,FFmpeg硬件編解碼移植及性能測試方法。

FFmpeg簡介與實測數據

  • FFmpeg簡介

FFmpeg是一套多媒體框架,能夠解碼、編碼、轉碼、復用、解復用、流、過濾和播放數字音頻、視頻,提供了錄制、轉換以及流化音視頻的完整解決方案。

  • 實測數據

(1)2K視頻編解碼,視頻文件大小為103MB

硬件解碼+編碼數據:

圖片

軟件解碼+編碼數據:

圖片

(2)4K視頻編解碼,視頻文件大小為128MB

硬件解碼+編碼數據:

圖片

軟件解碼+編碼數據:

圖片

交叉編譯與移植FFmpeg

以下操作在PC端虛擬機里面進行

  • 下載7.1版本ffmpeg源碼:

git?clone -b?7.1?--single-branch ?https://gitee.com/work_public/ffmpeg-rockchip.git

  • 交叉編譯FFmpeg

(1)進入FFmpeg源碼目錄:

cd?ffmpeg-rockchip

(2)設置pkgconfig 環境變量:

export?PKG_CONFIG_SYSROOT_DIR=/sysroot_rk35xx_ubuntu2204/export?PKG_CONFIG_PATH=/sysroot_rk35xx_ubuntu2204/usr/lib/aarch64-linux-gnu/pkgconfig

(3)創建install目錄:

mkdir?install

(4)執行configure_rk3576.sh 并寫入如下參數:

./configure \??--prefix=$(pwd)/install \??--enable-gpl \??--enable-version3 \??--enable-libdrm \??--enable-rkmpp \??--enable-rkrga \??--enable-libv4l2 \??--enable-cross-compile \??--target-os=linux \??--arch=aarch64 \??--cross-prefix=/opt/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- \??--enable-static \??--enable-shared \??--enable-ffmpeg \??--enable-ffplay \??--enable-ffprobe \??--pkg-config=/usr/bin/pkg-config \??--sysroot=/opt/sysroot_rk3576_ubuntu2204/ \??--extra-cflags="-I/opt/sysroot_rk3576_ubuntu2204/usr/include/aarch64-linux-gnu" \??--extra-ldflags="-B/opt/sysroot_rk3576_ubuntu2204/usr/lib/aarch64-linux-gnu -Wl,-rpath-link=/opt/sysroot_rk3576_ubuntu2204/usr/lib/aarch64-linux-gnu"

arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu

工具下載地址:

https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads/11-3-rel1

(5)編譯配置文件:

./configure_rk3576.sh

(6)開始編譯:

make?-j8

(7)安裝

make?install

(8)安裝完成后,安裝文件保存在install目錄:

├── bin│ ? ├── ffmpeg│ ? ├── ffplay│ ? └── ffprobe├──?include│ ? ├── libavcodec│ ? ├── libavdevice│ ? ├── libavfilter│ ? ├── libavformat│ ? ├── libavutil│ ? ├── libpostproc│ ? ├── libswresample│ ? └── libswscale├── lib│ ? ├── libavcodec.a│ ? ├── libavcodec.so -> libavcodec.so.61.19.101│ ? ├── libavcodec.so.61 -> libavcodec.so.61.19.101│ ? ├── libavcodec.so.61.19.101│ ? ├── libavdevice.a│ ? ├── libavdevice.so -> libavdevice.so.61.3.100│ ? ├── libavdevice.so.61 -> libavdevice.so.61.3.100│ ? ├── libavdevice.so.61.3.100│ ? ├── libavfilter.a│ ? ├── libavfilter.so -> libavfilter.so.10.4.100│ ? ├── libavfilter.so.10 -> libavfilter.so.10.4.100│ ? ├── libavfilter.so.10.4.100│ ? ├── libavformat.a│ ? ├── libavformat.so -> libavformat.so.61.7.100│ ? ├── libavformat.so.61 -> libavformat.so.61.7.100│ ? ├── libavformat.so.61.7.100│ ? ├── libavutil.a│ ? ├── libavutil.so -> libavutil.so.59.39.100│ ? ├── libavutil.so.59 -> libavutil.so.59.39.100│ ? ├── libavutil.so.59.39.100

  • 移植至主板端(以下操作在主板端進行)

(1)將剛才打包的ffmpeg_install.tar拷貝到主板上解壓:???????

sudo?mkdir?/usr/local/ffmpegsudo tar -xvf ffmpeg_install.tar -C /usr/local/ffmpeg/

(2)設置環境變量,修改/home/industio/.bashrc,在末尾增加:???????

export?PATH=/usr/local/ffmpeg/bin:$PATHexport?LD_LIBRARY_PATH=/usr/local/ffmpeg/lib:$LD_LIBRARY_PATH

(3)執行生效:

source?/home/industio/.bashrc

編解碼測試

  • 測試常見命令(以下操作在主板端進行)

(1)測試時,需要主板端開啟性能模式,且主板接上風扇散熱,開啟性能模式指令:

echo?performance |?tee?$(find /sys/ -name *governor);

(2)測試時查看CPU使用率:

top?-d?1

  • 解碼測試

(1)解碼1080P的mp4視頻

time?ffmpeg -stream_loop -1?-hwaccel rkmpp -hwaccel_output_format drm_prime -afbc rga -i ./LG_1080p_60fps.mp4 -an -sn -vframes?5000?-f null -

(2)解碼4K(3840*2160)mp4視頻:

time?ffmpeg -stream_loop -1?-hwaccel rkmpp -hwaccel_output_format drm_prime -afbc rga -i ./LG_2160p_30fps.mp4 -an -sn -vframes?5000?-f null -

  • 編碼測試

(1)1080P H.264, CQP rate control:

time?ffmpeg -f lavfi -i testsrc2=s=1920x1080,format=nv12 -c:v h264_rkmpp -qp_init?26?-profile:v main -level?4.1?-g:v?100?-vframes?5000?-y /tmp/tmp.mp4

(2)2160p H.265, CQP rate control:

time?ffmpeg -f lavfi -i testsrc2=s=3840x2160,format=nv12 -c:v hevc_rkmpp -qp_init?26?-profile:v main -level?4.1?-g:v?100?-vframes?5000?-y /tmp/tmp.mp4

至此,RK3576 FFmpeg的移植和測試教程已完成,關注觸覺智能,將為您帶來RK系列RK3562、RK3568、RK3576、RK3588的FFmpeg測試對比,敬請期待!

演示設備:觸覺智能RK3576開發板

觸覺智能RK3576鴻蒙開發板

板對板連接器核心板

觸覺智能RK3576核心板

郵票孔封裝核心板

觸覺智能RK3576核心板郵票孔封裝版,40.5*40.5mm

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/920909.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/920909.shtml
英文地址,請注明出處:http://en.pswp.cn/news/920909.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【網絡安全入門基礎教程】網絡安全零基礎學習方向及需要掌握的技能

最近總有同學問我,0基礎怎么學網絡安全?0基礎可以轉行做網絡安全嗎?網絡安全有哪些學習方向?每個方向需要掌握哪些技能?今天給大家簡單寫一下。 我的回答是先了解,再入行。 具體怎么做呢? 首…

Altium Designer中的Net-Tie:解決多網絡合并與電氣隔離的利器

Altium Designer中的Net-Tie:解決多網絡合并與電氣隔離的利器 在復雜的PCB設計中,我們常常會遇到一些特殊的電氣連接需求。例如,需要將兩個或多個邏輯上獨立但物理上需要連接的網絡(如不同電源域的GND)在特定點進行連接(單點連接),同時又要保持其網絡標識的獨立性。 …

計算機畢設項目 基于Python與機器學習的B站視頻熱度分析與預測系統 基于隨機森林算法的B站視頻內容熱度預測系統

💕💕作者:計算機源碼社 💕💕個人簡介:本人八年開發經驗,擅長Java、Python、PHP、.NET、Node.js、Spark、hadoop、Android、微信小程序、爬蟲、大數據、機器學習等,大家有這一塊的問題…

百勝軟件×OceanBase深度合作,賦能品牌零售數字化實踐降本增效

8月28日,由OceanBase主辦的“2025零售數據底座創新大會”在上海舉行。大會重磅發布了由愛分析、OceanBase攜手王歆、沈剛兩位行業專家聯合編制的《零售一體化云數據庫白皮書》。白皮書系統梳理了從“大促流量應對”到“AI應用落地”的全流程方法論,并為不…

2025年Java在中國開發語言排名分析報告

引言 在軟件定義世界的2025年,編程語言的戰略價值已超越工具屬性,成為產業數字化轉型的核心支撐與開發者思維模式的延伸載體。TIOBE指數作為全球技術市場變化的重要晴雨表,通過追蹤工程師分布、課程設置、供應商動態及搜索引擎數據&#xff0…

TDengine 日期時間函數 DAYOFWEEK 使用手冊

DAYOFWEEK 函數使用手冊 函數描述 DAYOFWEEK 函數用于返回指定日期是一周中的第幾天。該函數遵循標準的星期編號約定,返回值范圍為 1-7,其中: 1 星期日 (Sunday)2 星期一 (Monday)3 星期二 (Tuesday)4 星期三 (Wednesday)5 星期四 (T…

從RNN到BERT

目錄 序列模型簡介RNN循環神經網絡LSTM長短期記憶網絡Transformer架構BERT模型詳解實踐項目 序列模型簡介 什么是序列數據? 序列數據是按照特定順序排列的數據,其中元素的順序包含重要信息。常見的序列數據包括: 文本:單詞或字…

橢圓曲線的數學基礎

一、引言 橢圓曲線密碼學(Elliptic Curve Cryptography, ECC)是現代公鑰密碼學的核心工具之一。 相比傳統的 RSA,ECC 可以用 更短的密鑰長度 提供 同等甚至更高的安全性,因此被廣泛應用于區塊鏈、TLS、移動設備加密等場景。 要理解…

從能耗黑洞到精準智控:ASCB2智慧空開重構高校宿舍用電能效模型

隨著智慧校園建設不斷推進,校園宿舍的用電管理面臨著安全性、智能化與可視化的多重挑戰。傳統用電監控手段在數據采集、實時控制和故障響應方面存在明顯不足。安科瑞ASCB2系列物聯網斷路器通過集成多種智能感知、保護控制與通信手段,為高校宿舍提供了一種…

前端學習——JavaScript基礎

前面我們已經學習了前端代碼的骨架——HTML和前端美化工具——CSS。但是作為界面與客戶進行交互我們還需要一個語言工具——JavaScript。 因此實際上HTML、CSS、JavaScript三者是這樣的關系: HTML: 網頁的結構(骨) CSS: 網頁的表現(皮) JavaScript: 網頁的行為(魂) …

Ubuntu下的壓縮及解壓縮

一、Linxu 下常用的壓縮格式 Linux 下常用的壓縮擴展名有:.tar 、.tar.bz2、 .tar.gz 。 二、Windows 下 7ZIP 軟件的安裝 因為 Linux 下很多文件是 .bz2 , .gz 結尾的壓縮文件,因此需要在 windows 下安裝 7ZIP 軟件。 7-Zip 三、Ubuntu…

金融數據安全

安全框架金融數據生命周期是指金融業機構在開展業務和進行經營管理的過程中,對金融數據進行采集、 傳輸、存儲、使用、刪除、銷毀的整個過程。數據生命周期安全框架,遵循數據安全原則,以 數據安全分級為基礎,建立覆蓋數據生命周期全過程的安全…

Unity抖音小游戲快捷立項準備/改動

本文由 NRatel 歷史筆記整理而來,如有錯誤歡迎指正。 1、熟讀抖音接入文檔,記錄要點 Unity 小游戲接入指南_抖音開放平臺 2、創建Git倉庫,開通成員權限 美術目錄,對程序、美術、策劃全開 程序目錄,對程序全開、對部…

Labview使用modbus或S7與PLC通信

一、modbus 1.使用VI Package Manager (VIPM)安裝modbus庫 2.安裝好后如下顯示會有Modbus Library 3.Master API作為客戶端,如下有一個例程 4.Slave API作為服務端,如下有一個例程 上述兩個例程是通過IP 127.0.0.1可以互相通信的。數據是一直存在服務端…

Docker Swarm 與 Kubernetes (K8s) 全面對比教程

一、引言:為什么需要了解這兩種編排工具?在容器化應用部署中,Docker Swarm 和 Kubernetes (K8s) 是兩個最主流的容器編排工具。作為一名開發者或運維工程師,理解它們的區別和適用場景至關重要。本教程將通過對比分析,幫…

開源協作白板 – 輕量級多用戶實時協作白板系統 – 支持多用戶繪圖、文字編輯、圖片處理

項目概述 Whiteboard 是一個基于 Node.js 的輕量級協作白板/畫板系統,支持多用戶實時協作繪圖、文字編輯、圖片處理等功能。該項目采用現代化的 Web 技術棧,提供直觀的用戶界面和豐富的交互功能。 核心特性 🎨 繪圖功能 多種繪圖工具&…

Spark自定義累加器實現高效WordCount

目錄 1. 代碼功能概述 2. 代碼逐段解析 主程序邏輯 自定義累加器 MyAccumulator 3. Spark累加器原理 累加器的作用 AccumulatorV2 vs AccumulatorV1 累加器執行流程 4. 代碼擴展與優化建議 支持多詞統計 線程安全優化 使用內置累加器 5. Spark累加器的適用場景 6…

開源 | 推薦一套企業級開源AI人工智能訓練推理平臺(數算島):完整代碼包含多租戶、分布式訓練、模型市場、多框架支持、邊緣端適配、云邊協同協議:

🔥 Github 主倉庫(優先更新)https://github.com/roinli/SSD-GPU-POOL | Gitee 鏡像倉庫 > 原倉庫因故暫停使用,本倉庫為鏡像項目。開源版本將持續迭代優化,歡迎提交 Issue 或加入社群交流。 GPU 池化平臺 | AI 全…

pprint:美觀打印數據結構

文章目錄一、pprint.pprint():美觀化打印二、pprint.pformat():格式化成字符串表示三、pprint() 處理包含__repr__() 方法的類四、遞歸引用:Recursion on {typename} with id{number}五、depth 參數控制 pprint() 方法的輸出深度六、width 參…

解決Docker運行hello-world鏡像報錯問題

解決Docker運行hello-world鏡像報錯問題當您運行sudo docker run hello-world命令時出現"Unable to find image hello-world locally"和"context deadline exceeded"錯誤,這通常是由于Docker無法從默認鏡像倉庫下載鏡像導致的。以下是幾種解決方…