RK3568-ffmpeg硬件加速实战-CSDN博客
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 硬件加速需要完成以下准备工作:
- 重新编译 mmp 驱动:确保内核支持 MPP 硬件编解码
- 重新编译 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/video9 | USB 摄像头设备节点 |
-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.28 | 2 分钟平均值,4 核 RK3568 极低负载 |
| ffmpeg 主进程 CPU | 4.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 占用,但仍有以下几点需要注意:
- 延时问题:硬件加速后 CPU 占用下降,但延时仍然比较大,需要进一步优化网络和编码参数
- 驱动兼容性:确保 mmp 驱动与内核版本匹配
- 编码器选择:h264_rkmpp 仅适用于 Rockchip 平台,其他平台需使用对应的硬件编码器
七、总结
本文详细介绍了 RK3568 平台启用 ffmpeg 硬件加速的完整流程:
- 编译支持 MPP 的 ffmpeg
- 使用 h264_rkmpp 编码器启动推流
- 验证性能提升效果
核心成果:通过硬件加速,将 CPU 占用从 261% 降至 10% 以下,实现了 95% 的性能提升,为后续的业务扩展留出了充足的算力空间。
作者:李江军
日期:2026-04-07
GitHub:LJJ931026
公众号:ALONE_WORK
本文为原创文章,转载请注明出处。如有问题欢迎在评论区留言讨论。
更多推荐
所有评论(0)