跳转到内容

User:Fireflyteam/FFMedia

维基百科,自由的百科全书

FFMedia是一个基于Rockchip MPP/RGA库的多媒体处理框架,由Firefly团队开发,主要用于音视频编解码、封装转换及流媒体处理。

功能

[编辑]

该框架针对RK3588系列芯片进行了优化。RK3588芯片具备较强的视频编解码能力,支持多路视频并发处理。框架提供了硬件加速方案,包含以下主要组件:

输入单元

支持rtsp、rtmp、whep、camera、file等输入单元

包含硬件解码、编码、图像处理及推理单元等支持硬件加速的处理单元

支持rtsp、rtmp、whip、drm display、gb28181、file等输出单元。

技术架构

[编辑]

核心架构

- 模块化架构:整个框架采用 Productor / Consumer 模型,将各个单元都抽象为 ModuleMedia 类;

- 高效内存管理技术:单元之间及硬件的数据交互均使用零拷贝实现。

媒体处理能力

- 格式支持:支持 mp4 / mkv / flv / ts 等主流容器格式及 rtsp / rtmp / gb28181 / webrtc 等主流协议的解析与封装;

- 转码和处理:支持视频转码、裁剪、拼接、水印添加等处理;

- 流媒体处理:支持从摄像头、网络流等源拉取媒体流进行实时处理、转发和存储等处理。

性能优化

- 低负载和低延迟性:深度优化数据流处理及传递,与 GStreamer 和 FFmpeg 相比,CPU 占用更低,且具备更高的数据实时性;

- 高效 Python 模块:通过 pybind11 实现 C++ 和 Python 之间的无缝互操作性;

- 统一接口:屏蔽和优化复杂的底层操作,为使用者提供高效、统一的接口。

平台兼容性

- 芯片级适配:支持 Firefly 平台下所有瑞芯微芯片机器版型;

- 系统支持:支持 Buildroot / Ubuntu / Debian 等不同版本系统。

性能测试

[编辑]

在ITX-3588J平台上的测试数据:

实时流播放测试

测试播放 H265 的 1080p@30fps 的 RTSP 实时流,使用相关模块:

RTSP客户端耗时:约0.03毫秒/帧

MPP解码耗时:约1.2毫秒/帧

DRM显示耗时:0.9-16.667毫秒/帧

可计算出直播一路 H265(p帧系列为顺序方式)、1080P 延迟:数据流从网络到解码成 YUV 裸流延迟在1.3 毫秒左右,画面显示还受到屏幕刷新率影响。如 60fps 的屏幕刷新间隔为 16.667 毫秒,可得出显示延迟在 0.9~16.667 毫秒之间。综上,直播一路 1080P 视频的最低延迟为 2.4 毫秒左右。

测试命令示例:./demo rtsp://xxx -d 0

视频转码测试

测试将 H265 的 1080p@30fps 的 RTSP 实时流转码成 H264 的 RTSP 流,使用相关模块:

RTSP客户端耗时:0.03毫秒/帧

MPP解码耗时:1.2毫秒/帧

MPP编码耗时:4.8毫秒/帧

RTSP服务端耗时:约0.1毫秒/帧

可初步估计视频帧从取流、转码最后推流理论耗时为6.3毫秒左右。

测试命令示例:./demo rtsp://xxx -e h264 -p 8554

参考资料

[编辑]

引用

  1. FFMedia[1]
  2. 多媒体处理器[2]
  3. FFMedia高性能全流程视频处理框架[3]
  4. FFMedia新版发布[4]
  1. ^ Firefly. 【Firefly自研】高性能全流程视频处理框架:FFMedia. 微信公众平台. [2025-08-13]. 
  2. ^ 1. 介绍 — Firefly Wiki. wiki.t-firefly.com. [2025-08-13]. 
  3. ^ Firefly开源团队自研|高性能全流程视频处理框架,释放RK3588编解码潜力!. 中关村. [2025-08-13]. 
  4. ^ Firefly开源FFMedia框架,高效处理瑞芯微平台音视频. 中关村. [2025-08-13].