瑞芯微RK3576平台FFmpeg硬件编解码移植及性能测试实战攻略

本文介绍瑞芯微RK3576平台,FFmpeg硬件编解码移植及性能测试方法。

FFmpeg简介与实测数据

  • FFmpeg简介

FFmpeg是一套多媒体框架,能够解码、编码、转码、复用、解复用、流、过滤和播放数字音频、视频,提供了录制、转换以及流化音视频的完整解决方案。

  • 实测数据

(1)2K视频编解码,视频文件大小为103MB

硬件解码+编码数据:

软件解码+编码数据:

(2)4K视频编解码,视频文件大小为128MB

硬件解码+编码数据:

软件解码+编码数据:

交叉编译与移植FFmpeg

以下操作在PC端虚拟机里面进行

(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

相关推荐
无巧不成书021820 分钟前
FFmpeg 保姆级安装教程!Windows/macOS/Linux全平台覆盖,
windows·macos·ffmpeg
普中科技14 小时前
【普中STM32F1xx开发攻略--标准库版】-- 第 38 章 RS485 通信实验
stm32·单片机·嵌入式硬件·开发板·通信·rs485·普中科技
阿拉斯攀登2 天前
【RK3576 安卓 JNI/NDK 系列 04】JNI 核心语法(下):字符串、数组与对象操作
android·驱动开发·rk3568·瑞芯微·rk安卓驱动·jni字符串操作
kkoral2 天前
OpenCV 与 FFmpeg 的关系
opencv·ffmpeg
kkoral2 天前
如何在 Python 中使用 OpenCV 调用 FFmpeg 的特定功能?
python·opencv·ffmpeg
普中科技2 天前
【普中 51-Ai8051 开发攻略】-- 第 3 章 Ai8051U 介绍
单片机·嵌入式硬件·开发板·普中科技·ai8051u·aicube
阿拉斯攀登2 天前
【无人售货柜・RK+YOLO】篇 6:安卓端落地!RK3576 + 安卓系统,YOLO RKNN 模型实时推理保姆级教程
android·人工智能·yolo·目标跟踪·瑞芯微·嵌入式驱动
山栀shanzhi2 天前
【FFmpeg】音视频MP4封装格式转封装MOV
ffmpeg·音视频
山栀shanzhi2 天前
【FFmpeg】是什么是未压缩的裸流?
c++·ffmpeg
wotaifuzao2 天前
从128-bit到16-bit:BLE UUID背后的带宽战争与架构设计
性能优化·蓝牙·uuid·低功耗蓝牙·架构设计·嵌入式开发·ble