本文介绍瑞芯微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无法从默认镜像仓库下载镜像导致的。以下是几种解决方…