ffmpeg-rockchip
本项目旨在为支持MPP(Media Process Platform)和RGA(2D Raster Graphic Acceleration)的Rockchip平台提供完整的FFmpeg CLI硬件转码流程。这包括硬件解码器、编码器和滤镜。典型的目标平台是基于RK3588/3588s的设备。
亮点
- MPP解码器支持高达8K 10位H.264、HEVC、VP9和AV1解码
- MPP解码器支持生成AFBC(ARM帧缓冲压缩)图像
- MPP解码器支持使用IEP(图像增强处理器)进行去隔行
- MPP解码器支持半内部和纯外部分配器模式
- MPP编码器支持高达8K的H.264和HEVC编码
- MPP编码器支持异步编码,即帧并行
- MPP编码器支持使用AFBC图像
- RGA滤镜支持图像缩放和像素格式转换
- RGA滤镜支持图像裁剪
- RGA滤镜支持图像转置
- RGA滤镜支持两个图像的混合
- RGA滤镜支持异步操作
- RGA滤镜支持生成和使用AFBC图像
- 以上阶段中的零拷贝DMA
使用方法
文档可在本项目的Wiki页面上找到。
编解码器和滤镜
解码器/硬件加速
V..... av1_rkmpp Rockchip MPP(Media Process Platform)AV1解码器(编解码器av1)
V..... h263_rkmpp Rockchip MPP(Media Process Platform)H263解码器(编解码器h263)
V..... h264_rkmpp Rockchip MPP(Media Process Platform)H264解码器(编解码器h264)
V..... hevc_rkmpp Rockchip MPP(Media Process Platform)HEVC解码器(编解码器hevc)
V..... mpeg1_rkmpp Rockchip MPP(Media Process Platform)MPEG1VIDEO解码器(编解码器mpeg1video)
V..... mpeg2_rkmpp Rockchip MPP(Media Process Platform)MPEG2VIDEO解码器(编解码器mpeg2video)
V..... mpeg4_rkmpp Rockchip MPP(Media Process Platform)MPEG4解码器(编解码器mpeg4)
V..... vp8_rkmpp Rockchip MPP(Media Process Platform)VP8解码器(编解码器vp8)
V..... vp9_rkmpp Rockchip MPP(Media Process Platform)VP9解码器(编解码器vp9)
编码器
V..... h264_rkmpp Rockchip MPP(Media Process Platform)H264编码器(编解码器h264)
V..... hevc_rkmpp Rockchip MPP(Media Process Platform)HEVC编码器(编解码器hevc)
V..... mjpeg_rkmpp Rockchip MPP(Media Process Platform)MJPEG编码器(编解码器mjpeg)
滤镜
... overlay_rkrga VV->V Rockchip RGA(2D Raster Graphic Acceleration)视频合成器
... scale_rkrga V->V Rockchip RGA(2D Raster Graphic Acceleration)视频缩放器和格式转换器
... vpp_rkrga V->V Rockchip RGA(2D Raster Graphic Acceleration)视频后处理(缩放/裁剪/转置)
重要提示
- 需要Rockchip BSP/vendor内核,5.10和6.1是两个经过测试的版本。
- 关于支持的最大分辨率和帧率,您可以参考数据表或TRM。
- 用户必须被授予访问这些设备文件的权限。
# DRM分配器
/dev/dri
# DMA_HEAP分配器
/dev/dma_heap
# RGA滤镜
/dev/rga
# MPP编解码器
/dev/mpp_service
# 可选,用于与旧内核和SoC兼容
/dev/iep
/dev/mpp-service
/dev/vpu_service
/dev/vpu-service
/dev/hevc_service
/dev/hevc-service
/dev/rkvdec
/dev/rkvenc
/dev/vepu
/dev/h265e
待办事项
- 支持MPP MJPEG/JPEG解码器
- 支持MPP VP8视频编码器
- ...
致谢
@hbiyik @HermanChen @rigaya
FFmpeg自述文件
FFmpeg是一个用于处理多媒体内容(如音频、视频、字幕和相关元数据)的库和工具集合。
库
libavcodec
提供了广泛的编解码器实现。libavformat
实现了流协议、容器格式和基本I/O访问。libavutil
包括哈希器、解压缩器和其他实用函数。libavfilter
提供了通过连接过滤器的有向图来改变解码后的音频和视频的方法。libavdevice
提供了访问捕获和播放设备的抽象。libswresample
实现了音频混合和重采样例程。libswscale
实现了颜色转换和缩放例程。
工具
- ffmpeg是一个命令行工具箱,用于操作、转换和流式传输多媒体内容。
- ffplay是一个极简的多媒体播放器。
- ffprobe是一个用于检查多媒体内容的简单分析工具。
- 其他小工具如
aviocat
、ismindex
和qt-faststart
。
文档
离线文档可在**doc/**目录中找到。
示例
编码示例可在doc/examples目录中找到。
许可
FFmpeg代码库主要采用LGPL许可,可选组件采用GPL许可。详细信息请参阅LICENSE文件。
贡献
补丁应使用git format-patch
或git send-email
提交到ffmpeg-devel邮件列表。应避免使用Github拉取请求,因为它们不是我们审查过程的一部分,将被忽略。