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

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

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

相关文章

程序目录结构 简单实现,用户登录后返回一个jwt的token,下次请求带上token请求用户信息接口并返回信息...
本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简...
简介 默克尔树(MerkleTree)是一种典型的二叉树结构,其主要特点为: 最下面的叶节点包含存储数据或其...
接下来学习并发编程, 并发编程是go语言最有特色的地方, go对并发编程是原生支持. goroutine是go中最近本...
先普及一下, 什么是广度优先搜索 广度优先搜索类似于树的层次遍历。从图中的某一顶点出发,遍历每一个顶...
第一天: 接口的定义和实现 第二天: 一. go语言是面向接口编程. 在学习继承的时候说过, go语言只有封装,...