news 2026/5/10 20:26:15

ffmpeg-rk3568-mpp 硬件加速版本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ffmpeg-rk3568-mpp 硬件加速版本

FFmpeg 编译 RK3568 MPP 硬件加速版本

背景

在嵌入式视频处理场景中,硬件加速编解码能显著降低 CPU 占用,提升系统整体性能。RK3568 作为瑞芯微的中高端 SoC,内置了强大的视频处理单元(VPU),通过 MPP(Media Process Platform)库可以实现高效的硬件编解码。

环境信息

项目版本/型号
开发板飞凌 RK3568
系统Ubuntu 22.04
内核版本Linux 5.10.166
芯片RK3568J
系统 MPP 版本1.3.8
系统 FFmpeg无硬件加速

问题分析

飞凌提供的初版系统中,MPP 版本为 1.3.8,而 FFmpeg 的 RKMPP 硬件加速支持需要 MPP 最低版本 1.3.9。这导致系统自带的 FFmpeg 只能使用 CPU 软件编解码,在处理高清视频时 CPU 占用率极高,影响系统稳定性。

软件编解码 vs 硬件编解码:

对比项软件编解码硬件编解码
CPU 占用80-100%5-15%
功耗
发热明显轻微
并发能力受限支持多路

目标

  1. 编译安装 MPP 最新版本(1.3.9+)
  2. 编译 FFmpeg 并启用 RKMPP 硬件加速支持
  3. 验证硬件编解码功能

准备工作

1. 更新软件源

系统默认的软件源可能无法找到部分依赖包,建议更换为国内镜像源:

# 备份原有源文件cp/etc/apt/sources.list /etc/apt/sources.list.bak# 写入 Ubuntu 22.04 清华镜像源(ARM64 架构)cat>/etc/apt/sources.list<<EOF deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse EOF# 更新软件包列表aptupdate

说明:ubuntu-ports是 ARM 架构专用的软件源,与 x86 的ubuntu源不同。

2. 安装编译依赖

aptinstall-y\build-essentialgitcmake pkg-config\libdrm-dev librga-dev\yasm nasm libssl-dev

依赖说明:

依赖包用途
build-essential基础编译工具链(gcc、make 等)
git下载源码
cmakeMPP 编译工具
pkg-config库依赖管理
libdrm-devDRM 显卡驱动库
librga-devRockchip 2D 图形加速库
yasm/nasm汇编器,FFmpeg 优化编译需要
libssl-devOpenSSL 开发库

编译 MPP

MPP(Media Process Platform)是 Rockchip 提供的视频编解码框架,封装了 VPU 的底层操作。

1. 卸载旧版本

# 移除系统自带的旧版本 MPPaptremove-ylibrockchip-mpp1 librockchip-mpp-dev

2. 下载源码

cd/home/forlinxgitclone https://github.com/rockchip-linux/mpp.gitcdmpp

3. 编译安装

# 配置编译选项cmake-DRKPLATFORM=ON-DHAVE_DRM=ON-DCMAKE_INSTALL_PREFIX=/usr/local.# 编译(-j4 使用 4 核并行编译)make-j4# 安装到系统目录makeinstall# 更新动态链接库缓存ldconfig

编译参数说明:

参数说明
-DRKPLATFORM=ON启用 Rockchip 平台支持
-DHAVE_DRM=ON启用 DRM 支持,用于与显示子系统协作
-DCMAKE_INSTALL_PREFIX=/usr/local安装路径

4. 验证安装

# 检查 MPP 版本pkg-config--modversionrockchip_mpp

预期输出:1.3.9或更高版本。

编译 FFmpeg

1. 下载 FFmpeg RKMPP 版本

Rockchip 维护了一个 FFmpeg 分支,包含 RKMPP 硬件加速支持。建议使用 8.1 分支:

cd/home/forlinxgitclone-b8.1https://github.com/rockchip-linux/ffmpeg-rockchip.gitcdffmpeg-rockchip

说明:-b 8.1参数指定克隆 8.1 分支,该版本经过 Rockchip 官方验证,稳定性较好。

2. 配置编译环境

# 设置 pkg-config 搜索路径(MPP 安装在 /usr/local)exportPKG_CONFIG_PATH=/usr/local/lib/pkgconfigexportLD_LIBRARY_PATH=/usr/local/lib

3. 配置编译选项

./configure\--enable-rkmpp\--enable-version3\--enable-gpl\--enable-nonfree\--enable-libdrm\--prefix=/usr/local

关键参数说明:

参数说明
--enable-rkmpp启用 Rockchip MPP 硬件加速
--enable-gpl启用 GPL 许可的组件
--enable-nonfree启用非自由组件
--enable-libdrm启用 DRM 支持
--prefix=/usr/local安装路径

4. 编译安装

# 编译(根据 CPU 核心数调整 -j 参数)make-j4# 安装makeinstall# 复制可执行文件到系统路径cpffmpeg /usr/local/bin/

验证

1. 检查硬件编码器

ffmpeg-encoders|greprkmpp

预期输出:

V..... h264_rkmpp Rockchip MPP (Media Process Platform) H.264 encoder (codec h264) V..... hevc_rkmpp Rockchip MPP (Media Process Platform) HEVC encoder (codec hevc)

2. 检查硬件解码器

ffmpeg-decoders|greprkmpp

预期输出:

V..... h264_rkmpp Rockchip MPP (Media Process Platform) H.264 decoder (codec h264) V..... hevc_rkmpp Rockchip MPP (Media Process Platform) HEVC decoder (codec hevc) V..... vp8_rkmpp Rockchip MPP (Media Process Platform) VP8 decoder (codec vp8) V..... vp9_rkmpp Rockchip MPP (Media Process Platform) VP9 decoder (codec vp9)

3. 测试硬件编码

# 使用硬件编码器转码测试ffmpeg-iinput.mp4-c:vh264_rkmpp-c:acopy output_h264.mp4# 使用 HEVC 硬件编码ffmpeg-iinput.mp4-c:vhevc_rkmpp-c:acopy output_hevc.mp4

4. 性能对比

编码相同视频文件,对比 CPU 占用:

# 软件编码(CPU)ffmpeg-iinput.mp4-c:vlibx264-c:acopy output_soft.mp4# 硬件编码(MPP)ffmpeg-iinput.mp4-c:vh264_rkmpp-c:acopy output_hard.mp4

使用top命令观察 CPU 占用差异,硬件编码时 CPU 占用应显著降低。

常见问题

1. pkg-config 找不到 rockchip_mpp

错误信息:

Package 'rockchip_mpp' not found

解决方案:

# 检查 pkg-config 路径echo$PKG_CONFIG_PATH# 如果为空,手动设置exportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig# 验证pkg-config --list-all|greprockchip

2. 运行时找不到 librockchip_mpp.so

错误信息:

error while loading shared libraries: librockchip_mpp.so: cannot open shared object file

解决方案:

# 更新动态链接库缓存ldconfig# 或临时设置exportLD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

3. 编译 FFmpeg 时找不到 rkmpp 选项

原因:使用的是官方 FFmpeg 而非 Rockchip 维护的分支。

解决方案:

# 使用 Rockchip 维护的 FFmpeg 分支(8.1 版本)gitclone-b8.1https://github.com/rockchip-linux/ffmpeg-rockchip.git

4. 硬件编码失败

错误信息:

[rkmpp @ ...] Failed to get output packet

可能原因:

  • MPP 版本过低
  • DRM 设备权限不足

解决方案:

# 检查 MPP 版本pkg-config--modversionrockchip_mpp# 检查 DRM 设备权限ls-la/dev/dri/chmod666/dev/dri/renderD128# 临时方案

附录

支持的编解码格式

类型格式编码解码
H.264AVCh264_rkmpph264_rkmpp
H.265HEVChevc_rkmpphevc_rkmpp
VP8--vp8_rkmpp
VP9--vp9_rkmpp

参考资源

  • Rockchip MPP 官方仓库
  • FFmpeg RKMPP 分支(8.1 版本)
  • Rockchip Linux 开发文档

作者:李江军
日期:2026-04-08
平台:飞凌 RK3568 开发板

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/9 21:11:16

微信协议的基本原理和实践性

微信协议相关中文文献关于微信协议的研究&#xff0c;主要集中在通信协议、安全分析、隐私保护等方面。以下是一些相关的中文文献和研究方向&#xff1a;微信通信协议分析微信使用自定义的二进制协议进行通信&#xff0c;基于TCP/IP协议栈&#xff0c;采用PB&#xff08;Protoc…

作者头像 李华
网站建设 2026/4/9 21:10:16

我不是狐狸,我是那Harness Engineering郊

Julia&#xff08;julialang.org&#xff09;由Stefan Karpinski、Jeff Bezanson等在2009年创建&#xff0c;目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是&#xff1a; 高性能&#xff1a;编译型语言&#xff08;JIT&#xff0…

作者头像 李华
网站建设 2026/4/9 21:08:09

3步解锁抖音批量下载神器:让视频采集效率提升10倍

3步解锁抖音批量下载神器&#xff1a;让视频采集效率提升10倍 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …

作者头像 李华
网站建设 2026/4/9 21:08:07

OpenClaw安全实践:Qwen3-14b_int4_awq模型的数据隐私保护

OpenClaw安全实践&#xff1a;Qwen3-14b_int4_awq模型的数据隐私保护 1. 为什么数据隐私保护如此重要 去年我帮一位律师朋友处理法律文书自动化时&#xff0c;第一次深刻意识到数据隐私的重要性。当时我们测试了一个云端AI服务&#xff0c;上传了几份包含客户敏感信息的合同样…

作者头像 李华