ffmpeg-rk3568-mpp 硬件加速版本

张开发
2026/4/9 21:15:44 15 分钟阅读

分享文章

ffmpeg-rk3568-mpp 硬件加速版本
FFmpeg 编译 RK3568 MPP 硬件加速版本背景在嵌入式视频处理场景中硬件加速编解码能显著降低 CPU 占用提升系统整体性能。RK3568 作为瑞芯微的中高端 SoC内置了强大的视频处理单元VPU通过 MPPMedia 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%功耗高低发热明显轻微并发能力受限支持多路目标编译安装 MPP 最新版本1.3.9编译 FFmpeg 并启用 RKMPP 硬件加速支持验证硬件编解码功能准备工作1. 更新软件源系统默认的软件源可能无法找到部分依赖包建议更换为国内镜像源# 备份原有源文件cp/etc/apt/sources.list /etc/apt/sources.list.bak# 写入 Ubuntu 22.04 清华镜像源ARM64 架构cat/etc/apt/sources.listEOF 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 开发库编译 MPPMPPMedia Process Platform是 Rockchip 提供的视频编解码框架封装了 VPU 的底层操作。1. 卸载旧版本# 移除系统自带的旧版本 MPPaptremove-ylibrockchip-mpp1 librockchip-mpp-dev2. 下载源码cd/home/forlinxgitclone https://github.com/rockchip-linux/mpp.gitcdmpp3. 编译安装# 配置编译选项cmake-DRKPLATFORMON-DHAVE_DRMON-DCMAKE_INSTALL_PREFIX/usr/local.# 编译-j4 使用 4 核并行编译make-j4# 安装到系统目录makeinstall# 更新动态链接库缓存ldconfig编译参数说明参数说明-DRKPLATFORMON启用 Rockchip 平台支持-DHAVE_DRMON启用 DRM 支持用于与显示子系统协作-DCMAKE_INSTALL_PREFIX/usr/local安装路径4. 验证安装# 检查 MPP 版本pkg-config--modversionrockchip_mpp预期输出1.3.9或更高版本。编译 FFmpeg1. 下载 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/localexportPKG_CONFIG_PATH/usr/local/lib/pkgconfigexportLD_LIBRARY_PATH/usr/local/lib3. 配置编译选项./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.mp44. 性能对比编码相同视频文件对比 CPU 占用# 软件编码CPUffmpeg-iinput.mp4-c:vlibx264-c:acopy output_soft.mp4# 硬件编码MPPffmpeg-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|greprockchip2. 运行时找不到 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_PATH3. 编译 FFmpeg 时找不到 rkmpp 选项原因使用的是官方 FFmpeg 而非 Rockchip 维护的分支。解决方案# 使用 Rockchip 维护的 FFmpeg 分支8.1 版本gitclone-b8.1https://github.com/rockchip-linux/ffmpeg-rockchip.git4. 硬件编码失败错误信息[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_rkmppH.265HEVChevc_rkmpphevc_rkmppVP8--vp8_rkmppVP9--vp9_rkmpp参考资源Rockchip MPP 官方仓库FFmpeg RKMPP 分支8.1 版本Rockchip Linux 开发文档作者李江军日期2026-04-08平台飞凌 RK3568 开发板

更多文章