golang直接调用ffmpeg预编译类库(windows)已更新

11 篇文章 1 订阅

MinGW介绍
MINGW(Minimalist GNU on Windows)是一个可以在windows下编译Linux程序的仿真linux编译环境,他提供了linux下的C、C++头文件、系统库和一些linux下的编译工具集合,例如gcc、g++和make工具。使得编译出来的二进制可以在windows上运行。(此前的 cygwin 虽然也是 GNU 的 Windows 移植,但是 cygwin 是有版权的,不是 GNU)

【MinGW32下载】
http://sourceforge.NET/projects/mingw/
【MinGW64下载】
https://sourceforge.net/projects/mingw-w64/

【MinGW32安装配置】
http://jingyan.baidu.com/article/6b97984da0bd8a1ca2b0bf90.html
【MinGW64和MSYS安装配置】
http://www.jb51.cc/article/p-ohvcqmmg-pv.html
http://jingyan.baidu.com/article/19192ad816ea01e53e570730.html

【32位】
下载最新的MinGW,运行后他会根据你实际选择需要安装的工具集另行下载这些包,比如gcc、g++之类的。

运行MinGW.exe: 默认安装到C:\MinGW目录下

一般来说工具集选择以下三个就足够了:

MinGW base tools //基本的gcc 编译器
g++ compiler //g++编译器
MingGW Make //Make工具

【64位】
点击mingw-w64进行安装,选择:
Version:选最新版本 我这个是5.9.2
Architecture:x86_64 (64位系统环境开发64位程序)
Threads:posix
Exception:seh
Build revision:1
一直“下一步”,安装完成。

测试是否安装成功?
命令行中输入gcc -v或gcc --version后如果出现正确的版本信息就说明 PATH 路径OK了
FFmpeg预编译库下载
从http://ffmpeg.zeranoe.com/builds/网站上

1.下载Dev版本,里面包含了ffmpeg的xxx.h头文件以及xxx.lib库文件。
2.下载Shared版本,里面包含了ffmpeg的dll文件。
3.解压之后,
【32位放置位置】

  • 把dev版本文件夹中的Include和lib目录整个儿复制合并到C:\MinGW\include和C:\MinGW\lib目录下。
  • 将share版本文件夹中bin目录下对应的所有dll复制合并到C:\MinGW\bin项目路径下
    【64位放置位置】
  • 把dev版本文件夹中的lib目录整个儿复制合并到C:\MinGW\mingw64\lib目录下。
  • 把dev版本文件夹中的include目录整个儿复制合并到C:\MinGW\mingw64\x86_64-w64-mingw32\include目录下。
  • 将share版本文件夹中bin目录整个复制合并到C:\MinGW\mingw64\bin目录下
    Golang程序
package main
 
/*
#cgo LDFLAGS: -llibavformat -llibavcodec -llibavutil -llibavdevice -llibavfilter -llibswresample -llibswscale
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libavutil/avutil.h>
#include <libavutil/opt.h>
#include <libavdevice/avdevice.h>
 
static const AVStream *go_av_streams_get(const AVStream **streams,unsigned int n)
{
    return streams[n];
}
*/
import "C"
 
import (
    "fmt"
)
 
func main() {
    fmt.Println(C.avdevice_version())
}

参考FFmpeg封装类,以便扩展
https://github.com/imkira/go-libav
https://github.com/giorgisio/goav

如果你觉得有用,请为我点赞!

总结
以上是编程之家为你收集整理的golang直接调用ffmpeg预编译类库(windows)已更新全部内容。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给好友。

https://www.jb51.cc/go/189164.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,Golang提供了一种称为"Cgo"的机制,允许直接调用C语言函数。通过Cgo,你可以在Golang代码中调用C语言函数,并在C和Golang之间传递数据。 要在Golang调用C语言函数,首先需要在Golang代码中导入`"C"`包。然后,可以使用特殊的`C.`前缀来调用C语言函数。 在调用C语言函数时,需要注意以下几点: 1. 函数声明:在Golang代码中,需要使用`//export`注释来声明要导出的C语言函数。这样,这些函数才能在Golang中被调用。 2. 数据类型转换:Golang和C语言的数据类型可能存在差异,因此需要进行适当的数据类型转换。 3. 内存管理:在涉及到内存分配和释放的操作时,需要小心处理内存管理问题,以避免内存泄漏或访问无效内存。 下面是一个简单的示例,展示了如何在Golang调用C语言函数: ```go package main /* #include <stdio.h> void helloFromC() { printf("Hello from C!\n"); } */ import "C" func main() { C.helloFromC() } ``` 在上述示例中,我们在Golang代码中声明了一个要导出的C函数`helloFromC()`,然后通过`C.helloFromC()`来调用它。 需要注意的是,Cgo机制需要依赖C编译器来编译相关代码,所以在构建Golang代码时,需要使用`go build`或`go run`命令,而不是直接使用`go`命令。另外,Cgo还提供了更高级的功能,例如在Golang中使用C语言的数据结构、调用C语言库等。更多关于Cgo的详细信息可以参考Golang官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值