一步步将ffmpeg封装golang/cgo库

本文详细介绍了如何将ffmpeg的C语言接口封装到Golang中,通过cgo技术实现音视频处理功能。文章从cgo封装技巧、编程步骤、动态链接与静态链接的编译方法等方面进行了阐述,并提供了测试代码示例。
摘要由CSDN通过智能技术生成

欢迎访问博客原文:https://lightfish.cn/2018-12-24-ffmpeg-cgo

前言

继上一篇 ffmpeg音视频C编程入门, 使用高性能的C语言进行音视频的处理,比较执行效率比较高,但是业务需求,快捷开发需要使用更方便的语言,比如 golang,本文介绍如何将 将视频转成GIF 的C语言方法封装成 golang 方法以便调用。

认识cgo的封装技巧

最简单的 cgo 封装例子看这篇 cgo快速入门

我这里讲几个注意事项

  • CGO构建程序会自动构建当前目录下的C源文件,即是 go 会将当前目录下 *.c 文件都编译成 *.o目标文件,再链接汇编,这个特点衍生出几个注意事项:

    • go 代码以静态库或动态库方式引用 C 函数的话,需要将对应的C源文件移出 go源文件所在的目录
    • 如果想要将 C 函数编译到 go 程序,就需要将 C源文件与 go 文件放在同一目录下
  • 在C/C++混编下, go 中引用 C 函数,需要将 C 函数名置于全局,即 extern C

开始编程

第一步,处理例子中已经写好的 gen_gif 方法,修改 gen_gif.h 文件

#ifdef __cplusplus
extern "C" {
   
#endif

int gen_gif(const int gifSeconds, const int rotate, void* data, int data_size, void* outBuf, int outBufLen, int *outSize);

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值