什么是FFMedia?
RK3588 系列芯片擁有超強的視頻編解碼能力,尤其在多路視頻并發處理上表現優異。然而我們在視頻處理應用開發時,經常面對 gstreamer、ffmpeg 等通用框架未能充分發揮芯片性能、官方原始 api 太靠近底層、學習成本高、周期長、開發工作量大等問題。
為此,Firefly 基于 Rockchip MPP/RGA 庫,開發了一套性能高效、接口簡潔、功能完善的視頻處理框架——FFMedia。它完整支持市面上主流容器、協議的媒體數據前處理和后處理,同時還支持媒體數據從內存、管道及文件描述符等方式輸入和輸出,方便對接其他應用和編程語言。
各單元主要組件如下:
輸入單元
包含 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 等不同版本系統。
下載源碼
拉取源碼
gitclonehttps://github.com/Firefly-rk-linux-utils/ffmedia_release.git
編譯測試
參考:編譯與運行
開發接口
所有接口支持 C++ 與 Python 調用。
C++ 語言范式
autortsp_c =make_shared("rtsp://xxx");autoret = rtsp_c->init()
Python 語言范式
rtsp_c= ff_pymedia.ModuleRtspClient("rtsp://xxx")ret= rtsp_c.init()
典型場景與性能測試
測試環境:ITX-3588J
低延遲實時流播放
測試播放 H265 的 1080p@30fps 的 RTSP 實時流,使用相關模塊:
- RTSP 客戶端:
采用自實現的輕量級 RTSP 客戶端模塊;取流一幀耗時 0.03 毫秒左右;
- MPP 解碼:
基于 MPP 實現的解碼模塊;解碼一幀耗時 1.2 毫秒(多通道模式可低至0.7)左右;
- DRM 顯示:
基于 DRM 框架實現的顯示模塊;送顯一幀耗時 0.9 毫秒左右。
可計算出直播一路 H265(p幀系列為順序方式)、1080P 延遲:數據流從網絡到解碼成 YUV 裸流延遲在1.3 毫秒左右,畫面顯示還受到屏幕刷新率影響。如 60fps 的屏幕刷新間隔為 16.667 毫秒,可得出顯示延遲在 0.9~16.667 毫秒之間。綜上,直播一路 1080P 視頻的最低延遲為 2.4 毫秒左右。
性能指標如下表所示:
簡單測試命令如下:
./demo rtsp://xxx -d 0
測試播放 32 路 H265 的 1080p@30fps rtsp 實時流性能指標如下表所示:
簡單測試命令如下:
./demo rtsp://xxx -d 0 -c 32
實時視頻流轉碼轉播
測試將 H265 的 1080p@30fps 的 RTSP 實時流轉碼成 H264 的 RTSP 流,使用相關模塊:
- RTSP 客戶端:
輕量級 RTSP 客戶端模塊;取流一幀耗時 0.03 毫秒左右;
- MPP 解碼:
基于 MPP 實現的解碼模塊;解碼一幀耗時 1.2 毫秒(多通道模式可低至0.7)左右;
- MPP 編碼:
基于 MPP 實現的編碼模塊;編碼一幀耗時 4.8 毫秒(多通道模式可低至 2.5)左右;
- RTSP 服務端:
輕量級 RTSP 服務端模塊;推流一幀耗時 0.1 毫秒左右。
可初步估計視頻幀從取流、轉碼最后推流理論耗時為6.3毫秒左右。
性能指標如下表所示:
簡單測試命令如下:
./demo rtsp://xxx -e h264 -p 8554# 可用demo或其他軟件拉取轉碼后的rtsp流:rtsp://ip:8554/live/0
-
芯片
+關注
關注
459文章
52481瀏覽量
440581 -
視頻編解
+關注
關注
0文章
3瀏覽量
6298 -
Firefly
+關注
關注
2文章
542瀏覽量
8384
發布評論請先 登錄
國內首款自研ASIC芯片通用網卡 填補25G以上高性能網卡市場空白

RK3568J高性能多媒體處理器特性概述
探索 RK3576 方案:卓越性能與靈活框架,誠邀開發定制合作!
自動駕駛全棧自研可行嗎?
EE-276:Blackfin處理器上圖像處理的視頻框架注意事項

Arm成功將Arm KleidiAI軟件庫集成到騰訊自研的Angel 機器學習框架
字節跳動自研視頻生成模型Seaweed開放
特斯拉FSD,從全棧自研到智能駕駛的未來

比亞迪最快于11月實現自研算法量產,推進智駕芯片自研進程
星曜半導體發布LB L-PAMiD全自研射頻模組芯片
澎峰科技高性能大模型推理引擎PerfXLM解析

國產DSP,自研指令集內核C2000,F28335、F280049、F28377
安謀科技自研“玲瓏”多媒體家族再添新軍,加速超高清顯示和端邊云視頻應用落地

本土自研再上新!安謀科技發布首款“玲瓏”DPU和新一代VPU

兼具高性能和低功耗,物奇微自研RISC-V高性能通信Wi-Fi 6芯片

評論