Welcome to Firefly
切换语言
Firefly文档中心
最近更新: 2026-09-04 16:43:11

FFMedia

FFMedia 是面向 Linux 多媒体应用的模块化音视频处理框架,重点适配 Rockchip 平台的 V4L2、MPP、RGA、DRM/KMS、EGL/GLES 等能力。

框架将摄像头、文件、网络流和应用内存的采集、解复用、编解码、图像处理、推理、显示、录制和推流抽象为可组合模块,适用于实时媒体管线和嵌入式多媒体应用。

FFMedia SDK 以 ffmedia_release 为发布包名,源码与预编译产物托管于 GitHub。通过下面方法获取 SDK 。

  • 方式一:获取最新版本(源码仓库)

    git clone --depth=1 https://github.com/Firefly-rk-linux-utils/ffmedia_release.git
  • 方式二:下载指定版本的 Release 包

    https://github.com/Firefly-rk-linux-utils/ffmedia_release/releases

核心特点

模块化管线

FFMedia 将摄像头、文件、RTSP/RTMP、编解码器、RGA 图像处理、 GPU图像处理、DRM 显示、推流和录制等能力封装为统一模块。模块之间通过生产者/消费者模型连接,使用者只需要关注数据流向和少量参数配置。

常见链路可以直接按以下方式理解:

输入源 VI -> 处理模块 VP -> 输出模块 VO

例如:

RTSP 拉流 -> MPP 硬件解码 -> DRM 低延迟显示
Camera 采集 -> MPP 硬件编码 -> RTSP/RTMP 推流
文件读取 -> 解封装/解码 -> RGA/GPU 缩放旋转 -> 显示或重新编码保存
多路视频 -> Video Stack 拼接 -> 显示或编码推流

项目同时提供 C++ 示例和 Python 绑定,便于快速验证功能、接入业务或进行二次开发。

硬件加速

FFMedia 重点适配 了Rockchip 平台硬件,视频编解码使用 MPP,图像缩放、裁剪、格式转换和合成使用 RGA或GPU。相比纯 CPU 处理,硬件加速链路可以显著降低 CPU 占用,更适合多路视频、长时间运行和边缘设备部署。

在典型业务中,FFMedia 可用于:

  • 多路 RTSP 拉流、解码和显示。
  • 摄像头采集后实时编码推流。
  • 视频缩放、旋转、格式转换和画面合成。
  • 多路视频拼接输出。
  • 视频转码、封装转换和本地录制。
  • 解码后接入 RKNN 推理,实现检测、跟踪等 AI 视频分析。

统一参数接口与扩展性

  • 模块配置由参数系统描述,可在 C++、Python 和命令行中使用相同的参数名称、类型和层级进行查询与设置。
  • 应用可以直接组合现有模块,也可以继承 ModuleMedia 实现自定义数据源、处理器或输出模块。

高实时性

FFMedia 的低延迟能力来自硬件编解码、模块化管线、缓冲队列控制和显示链路优化。根据项目 README 中的低延迟显示测试:

  • HDMI 输入转发显示场景中,从 HDMI 输入到转发显示的平均延迟约为 29ms
  • Camera 采集转发显示场景中,从 Camera 采集到转发显示的平均延迟约为 19ms
  • 通过调整显示时序和屏幕刷新率,可将显示延迟波动范围从约 1ms~17.6ms 优化到约 1ms~7ms

这些特性使 FFMedia 适合视频监控、远程操控、低延迟预览、工业视觉、边缘 AI 视频分析和多媒体转发等对实时性敏感的场景。

本页目录