rkmpp(Rockchip Media Process Platform)主要依赖瑞芯微(Rockchip)芯片中的 VPU(Video Process Unit,视频处理单元) 和 RGA(Raster Graphic Acceleration Unit,2D图形加速单元) 实现硬件加速功能。以下是具体分析:
1. VPU(视频处理单元)
VPU 是瑞芯微芯片中专门负责视频编解码的硬件模块。通过 rkmpp,开发者可以调用 VPU 实现高效的硬编解码操作,显著降低 CPU 负载。例如:
- 支持格式:包括 H.264、H.265(HEVC)、VP9、AV1 等主流编解码格式。
- 性能表现:实测中,VPU 在 RK3588 上解码 H.264 视频可达 934.71 FPS,编码 4K 视频时帧率约为 7.62 FPS(受编码复杂度影响)。
- 架构层级:MPP 通过分层设计(MPI 接口、HAL 硬件抽象层等)封装 VPU 功能,兼容 FFmpeg、GStreamer 等框架。
2. RGA(2D图形加速单元)
RGA 是独立的 2D 图形加速硬件,用于优化图像处理操作,如缩放、旋转、格式转换等。其特点包括:
- 功能支持:支持图像缩放(如 2160P 转 1080P)、Alpha 混合、色彩空间转换等,减少 CPU 处理负担。
- 与 FFmpeg 集成:通过
ffmpeg-rockchip
的滤镜(如scale_rkrga
、overlay_rkrga
)可直接调用 RGA 加速视频后处理。
3. 硬件加速的实际应用
- 编解码流程:
rkmpp 通过 FFmpeg 插件(如h264_rkmpp
解码器)将视频流直接传递给 VPU 处理,最终输出 DRM 格式帧用于显示。 - 推流与渲染:
结合 GStreamer 或 FFmpeg,可实现硬件加速的视频采集、编解码及推流。例如,使用mpph264enc
编码器通过 VPU 加速推流到 RTMP 服务器。
4. 芯片兼容性
不同瑞芯微芯片的 VPU 和 RGA 能力有所差异:
- RK3588:支持 H.265 编码及高分辨率处理,VPU 支持帧级并行处理。
- RK3399:仅支持 H.264 编码,且部分高级功能(如 H.265 编码)可能受限。
总结
rkmpp 的核心硬件加速单元是 VPU(负责编解码)和 RGA(负责 2D 图形处理),两者通过 MPP 库和 FFmpeg 插件实现高效协同。开发者可通过命令行或 API 调用这些功能,显著提升视频处理性能。