当前位置: 首页 > news >正文

RK3588 Opencv-ffmpeg-rkmpp-rkrga编译与测试

RK3588 Opencv-ffmpeg-rkmpp-rkrga编译与测试

    • 硬件背景说明
    • 编译环境准备
      • 1. 编译MPP(媒体处理平台)
      • 2. 编译RGA(图形加速库)
      • 3. 构建支持硬件加速的FFmpeg
        • 重要代码修改说明
      • 4. 验证安装
      • 5.FFmpeg转码测试
    • OpenCV编译集成
  • Python OpenCV+FFmpeg测试

硬件背景说明

RK3588是瑞芯微推出的旗舰级ARM处理器,具备6TOPS NPU和8K视频编解码能力。其特有的硬件加速模块包括:

  1. MPP (Media Process Platform):视频编解码硬件加速模块
  2. RGA (Raster Graphic Acceleration):2D图像处理加速模块
  3. NPU (Neural Processing Unit):神经网络加速单元

通过结合这些硬件加速模块,可大幅提升视频处理效率。例如在1080P视频缩放场景,RGA加速相比CPU处理可提升30倍性能。


编译环境准备

1. 编译MPP(媒体处理平台)

# 卸载旧版MPP防止版本冲突
dpkg --purge --force-all librockchip-mpp-dev librockchip-mpp1 rockchip-mpp-demos# 获取指定版本源码(1.0.9版已验证兼容性)
git clone https://github.com/rockchip-linux/mpp.git
cd mpp
git checkout 1.0.9# 配置编译选项
mkdir build
cd build
cmake \-DCMAKE_INSTALL_PREFIX=/usr/local \-DCMAKE_BUILD_TYPE=Release \-DBUILD_SHARED_LIBS=ON \-DBUILD_TEST=OFF ..
make -j4
make install

关键参数说明

  • BUILD_SHARED_LIBS=ON:生成动态链接库(.so文件),方便其他程序调用
  • CMAKE_INSTALL_PREFIX:指定头文件和库的安装路径,避免污染系统目录

2. 编译RGA(图形加速库)

# 使用特定分支的RGA实现
git clone -b jellyfin-rga --depth=1 https://github.com/nyanmisaka/rk-mirrors.git rkrga
cd rkrga# 配置Meson构建系统
mkdir install rkrga_build
meson setup . rkrga_build \--prefix=/usr/local \--libdir=lib \--buildtype=release \--default-library=shared \-Dcpp_args=-fpermissive \-Dlibdrm=false \-Dlibrga_demo=false
meson configure rkrga_build
ninja -C rkrga_build install

3. 构建支持硬件加速的FFmpeg

# 获取定制版FFmpeg源码
git clone https://github.com/nyanmisaka/ffmpeg-rockchip.git
cd ffmpeg-rockchip
git checkout 57d5befee96f229b05fa09334a4d7a6f95a324bd  # 指定兼容性验证的提交# 安装依赖库
apt install libdrm-dev -y  # DRM显示驱动开发包# 配置编译参数
./configure --prefix=/usr/local --enable-gpl --enable-version3 \--enable-pic --enable-shared --disable-static \--enable-libdrm --enable-rkmpp --enable-rkrga
make -j4
make install
重要代码修改说明

修改rkrga_common.c文件:

diff --git a/libavfilter/rkrga_common.c b/libavfilter/rkrga_common.c
index 7ca88ccae9..8f80ee4fe4 
http://www.xdnf.cn/news/602605.html

相关文章:

  • 【JAVA】注解基础:元注解与自定义注解(30)
  • 【飞书知识问答】AI赋能企业,开启高效办公新模式
  • Google机器学习实践指南(学习速率篇)
  • (随记)商业落地实施RAG工程的核心步骤
  • 项目管理的流程与核心细节全解析
  • 如何使用 WebStorm 编写第一个 Node.js 项目
  • 《P3375 【模板】KMP》
  • 9大开源AI智能体概况
  • Python爬虫(34)Python爬虫高阶:动态页面处理与Playwright增强控制深度解析
  • c语言文件操作详解
  • 实验-设计一个应用系统(计算机组成原理)
  • Web攻防-SQL注入数据库类型用户权限架构分层符号干扰利用过程发现思路
  • Docker 与 Kubernetes 部署 RabbitMQ 集群(一)
  • 数据共享中的库表交换怎么做?
  • 【生成模型】【基础知识】CFG与CFG蒸馏
  • 深度解析:SQLynx 如何筑牢数据库安全防线​
  • 邻近标记技术(PL)在癌症研究中的应用
  • 动态规划中的 求“最长”、“最大收益”、“最多区间”、“最优策略” 双重 for + 状态转移
  • 视觉语言模型(Vision-Language Model, VLM)的简单介绍
  • 文章记单词 | 第105篇(六级)
  • Python、PyTorch、TensorFlow和飞桨(PaddlePaddle)的核心介绍及对比
  • Flutter遇到的问题
  • 安装 tensorflow-2.10.0 支持 gpu
  • 【Go-4】函数
  • Android Studio 开发环境兼容性检索(AGP / Gradle / Kotlin / JDK)
  • 音频AAC编码与RV1126的AENC模块的讲解
  • 什么是VR场景?VR与3D漫游到底有什么区别
  • [Windows] 格式工厂 FormatFactory v5.20.便携版 ——多功能媒体文件转换工具
  • Ansible快速入门指南
  • A服务器备份rabbitmq持久化目录到B服务器,不显示mq队列消息