RK3568 ffmpeg 硬件加速实战:CPU 占用暴降 95% 的优化之路

前言

在上一篇博客中,我们测试了 RK3568 使用 ffmpeg 软编码进行视频推流的性能,发现 CPU 占用高达 261%,几乎跑满了 4 核处理器。本文将介绍如何通过启用 RK3568 的 MPP 硬件加速,将 CPU 占用降至 10% 以下,实现 95% 的性能提升。

一、硬件加速原理

RK3568 搭载了 Rockchip MPP(Media Process Platform)多媒体处理平台,支持 H.264/H.265 硬件编解码。相比纯 CPU 软编码,硬件编码具有以下优势:

  • 低 CPU 占用:编码工作由专用硬件完成,CPU 仅负责数据调度
  • 低功耗:硬件编码能效比远高于软件编码
  • 高并发:释放的 CPU 算力可用于其他业务逻辑

二、硬件加速环境准备

2.1 前置条件

启用 RK3568 硬件加速需要完成以下准备工作:

  1. 重新编译 mmp 驱动:确保内核支持 MPP 硬件编解码
  2. 重新编译 ffmpeg:集成 h264_rkmpp 编码器支持

2.2 编译要点

编译支持硬件加速的 ffmpeg 时,需要确保:

  • 启用 rkmpp 编码器支持
  • 正确链接 Rockchip MPP 库
  • 配置正确的 sysroot 和交叉编译工具链

关于 ffmpeg 编译的详细步骤,可参考《ffmpeg 编译 RK3568 版本(mmp 硬件加速)》相关文档。

三、硬件加速启动命令

完成环境准备后,使用以下命令启动硬件编码推流:

ffmpeg -f v4l2 -i /dev/video9 -c:v h264_rkmpp -b:v 2M -f flv rtmp://your-rtmp-server/live/stream

参数说明:

参数说明
-f v4l2使用 V4L2 接口采集视频
-i /dev/video9USB 摄像头设备节点
-c:v h264_rkmpp使用 RK MPP 硬件 H.264 编码器
-b:v 2M设置码率为 2Mbps
-f flv输出 FLV 格式
RTMP 地址推流目标服务器地址

关键点:-c:v h264_rkmpp 是启用硬件编码的核心参数,区别于软编码的 -c:v libx264。

四、性能测试结果

4.1 CPU 负载对比

启用硬件加速后,系统性能发生了质的飞跃:

硬件编码性能数据:

指标数值说明
系统平均负载2.282 分钟平均值,4 核 RK3568 极低负载
ffmpeg 主进程 CPU4.6%主推流进程仅占用 4.6%
子进程合计~5%2.5% + 1.3% + 1.2%…
总 CPU 占用< 10%整个推流服务

软编码 vs 硬编码对比:

编码方式CPU 占用性能表现
软编码(libx264)261%4 核跑满,系统卡顿
硬编码(h264_rkmpp)< 10%系统流畅,算力充足

性能提升:算力释放了 95%!系统彻底不卡了!

4.2 内存与进程稳定性

硬件编码不仅降低了 CPU 占用,内存使用也非常健康:

  • RES(物理内存):主进程仅占用 506M
  • 进程状态:主进程状态为 R(运行中),服务稳定
  • 负载趋势:Load 数值很小,CPU 完全没有超负荷

五、完整推流方案

经过软编码测试和硬件加速优化,最终达成了完美的推流方案:

组件配置状态
视频源USB 摄像头 /dev/video9✅
编码器h264_rkmpp 硬件编码✅
码率2Mbps(画质清晰)✅
推流协议RTMP✅

六、注意事项

虽然硬件加速大幅降低了 CPU 占用,但仍有以下几点需要注意:

  1. 延时问题:硬件加速后 CPU 占用下降,但延时仍然比较大,需要进一步优化网络和编码参数
  2. 驱动兼容性:确保 mmp 驱动与内核版本匹配
  3. 编码器选择:h264_rkmpp 仅适用于 Rockchip 平台,其他平台需使用对应的硬件编码器

七、总结

本文详细介绍了 RK3568 平台启用 ffmpeg 硬件加速的完整流程:

  1. 编译支持 MPP 的 ffmpeg
  2. 使用 h264_rkmpp 编码器启动推流
  3. 验证性能提升效果

核心成果:通过硬件加速,将 CPU 占用从 261% 降至 10% 以下,实现了 95% 的性能提升,为后续的业务扩展留出了充足的算力空间。


作者:李江军
日期:2026-04-07
GitHub:LJJ931026
公众号:ALONE_WORK

本文为原创文章,转载请注明出处。如有问题欢迎在评论区留言讨论。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐