Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

105 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FFmpeg-GCU

FFmpeg-GCU 是基于 燧原 GCU 硬件加速的 FFmpeg 视频编解码插件,通过 TopsCodec SDK 实现高性能视频编解码。

1 特性

  • 支持 GCU300 及以上硬件
  • 支持 H.264、H.265/HEVC、VP8、VP9、AV1、AVS、AVS2、MJPEG、MPEG2、MPEG4、VC-1、H.263 等格式硬件解码
  • 支持 H.264、H.265/HEVC 格式硬件编码
  • 支持 Online CSC(颜色空间转换)、Resize、Crop、Rotation 等后处理
  • 兼容 FFmpeg 命令行、C API 等多种调用方式
  • 支持 FFmpeg n3.2 / n4.4 / n7.1 多版本构建

2 编译与运行

2.1 前置依赖

依赖项 说明
燧原 GCU 硬件 GCU300 及以上
TopsPlatform 软件栈 包含 FFmpeg-GCU 依赖的 TopsCodec 和 TopsRuntime,需提前安装

如需获取 TopsPlatform 对应版本,请联系燧原科技商务对接人员。

具体安装步骤请参见 TopsPlatform 安装使用手册

推荐预先安装 nasm 汇编器,FFmpeg n4.4 / n7.1 在 x86 平台会默认检测,缺失时会导致 configure 失败。 或者也可以通过将 build_ffmpeg.sh 脚本中的 _disable_asm 置为 true 直接关闭 CPU 汇编优化,对燧原 GCU 硬件编解码功能没有影响。

已验证的编译环境

OS GCC glibc
Ubuntu 16.04 4.8.5 2.23
Ubuntu 18.04 7.5.0 2.27
Ubuntu 20.04 9.4.0 2.31
Ubuntu 24.04 13.3.0 2.39

2.2 编译出带燧原硬件加速的 FFmpeg 可执行程序

FFmpeg-GCU 编译依赖 TopsPlatform 的头文件,需指定头文件所在的路径(默认安装路径为 /opt/tops/include)。

# 基本用法(默认 n7.1),TopsPlatform 默认安装的头文件路径在 /opt/tops/include
./build_ffmpeg.sh n7.1 -f "-I/opt/tops/include"

# 为了避免从 github 上拉取 FFmpeg 源代码缓慢,可以指定本地 FFmpeg 源码路径(提前下载所需版本 FFmpeg 源码)
./build_ffmpeg.sh n7.1 -f "-I/opt/tops/include" -s /path/to/FFmpeg

# 指定安装包格式,可选 deb、rpm、both、none、auto,默认生成 deb
./build_ffmpeg.sh n7.1 -f "-I/opt/tops/include" -P rpm

# 查看完整编译选项
./build_ffmpeg.sh -h

支持的 FFmpeg 版本标签:n3.2n4.4n7.1

如果希望支持更多的 FFmpeg 版本,请联系燧原科技商务对接人员。

编译安装结果位于 <build_path>/ffmpeg_gcu/ 目录。安装包位于 <build_path>/packages/ 目录,默认生成 .deb 安装包,可通过 -P 指定生成 .rpm 或同时生成两种格式。

2.3 安装

sudo dpkg -x ffmpeg-gcu_<version>_<arch>.deb /usr/local/
sudo rpm2cpio ffmpeg-gcu-<version>-1.<arch>.rpm | sudo cpio -idmv -D /usr/local/

安装后,可在 /usr/local/lib/usr/local/bin/usr/local/include 下找到对应的库文件、可执行文件和头文件。

2.4 添加环境变量

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

2.5 运行

成功安装带有燧原硬件加速的 FFmpeg 后,可通过以下命令行进行验证。

FFmpeg 命令行举例

# 将输入文件 test.264 解码,并输出到 out.yuv 文件,YUV文件格式指定为 YUV420P
ffmpeg -c:v h264_topscodec -output_pixfmt yuv420p -i test.264 -y out.yuv

# 将输入文件 test.265 解码,并输出到 out.yuv 文件,YUV文件格式指定为 NV12
ffmpeg -c:v hevc_topscodec -output_pixfmt nv12 -i test.265 -y out.yuv

# 将输入 YUV 文件编码为 HEVC 码流
ffmpeg -f rawvideo -pix_fmt yuv420p -s 1920x1080 -i in.yuv -c:v hevc_topscodec_enc -y out.265

# 编码同时设置 GOP、B 帧和帧率参数
ffmpeg -f rawvideo -pix_fmt yuv420p -s 1920x1080 -i in.yuv -c:v h264_topscodec_enc -g 30 -bf 0 -enc_fps 30 -y out.264

3 文档

详细的使用说明、API 参考、命令行示例,请参阅在线文档:

FFmpeg-GCU 用户文档

4 Release Notes

详见 RELEASE_NOTES.md

About

有关燧原科技topscodec编解码ffmpeg插件

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages