[总结]FFMPEG源码编译-Windows篇

0 前言----目前还不可信,不要看~~~~~


ffmpeg本身就是在 linux开发的,因此在linux下编译非常简单,而在windows下编译就不是那么容易了。一般在windows下使用MinGW的gcc toolchain进行编译,这样的话,因为ffmpeg的导出函数均是C风格,因而gcc编译的lib可以被vs链接。但是gcc的debug符号与 vs的debug符号(*.pdb)是无法兼容的,因此我们用vs来开发基于ffmpeg的程序时无法深入ffmpeg内部进行debug,这不管对于学 习还是工程使用都不是那么友好。因而,使用同一套编译系统好处多多。本文的编译工具采用的是Visual Studio的编译器MSVC.

本文是在参考ffmpe官方wiki文档中的CompilationGuide以及网友Blog,并结合自己的实践所写就的一篇文章,以做积累。为了尊重前人工作,前言中先列出参考如下:

ffmpeg wiki: 这个Guide文献有必要仔细浏览一遍,尤其是讲述了Unix以及衍生的系统上(Linux, MacOs)上如何进行源码编译的基础流程以及各个流程中做了什么样的工作:configure->make->make install。

CompilationGuide       

 CompilationGuide/MSVC

Blogs:  ffmpeg wiki上的编译方法可能会比较老旧,其实各位前行者的Blog可以作为重要参考,以下几篇文献相对比较靠谱

在windows上编译FFmpeg源代码的方法

Windows下使用Visual Studio 2010 编译ffmpeg全过程

1 编译环境


WIindows 7 专业版 Service pack 1

Visual Studio 2013版本

本文编译流程应该可以兼容win7 win10系统,但不兼容vs2013以下版本,若是vs2013以下版本可以参见前言中的wiki文档以及Blog,都有详细的介绍。

2 工具准备


放了方便以后使用,所有工具打包上传CSDN,下载地址为:还没过审核~~~

2.1 ffmpeg源码:


ffmpeg官网下载页 提供了git克隆地址: https://git.ffmpeg.org/ffmpeg.git。目前(2019年3月8日)版本为4.1。请注意,在git clone源码前,务必先执行如下命令“git config --global core.autocrlf false”,这是因为不同平台文本文件的换行符是不一样的,比如windows平台为CRLF,而Linux平台仅为LF,在windows上clone代码时,所有文本文件的换行均会替换为CRLF,而咱们编译ffmpeg是在mingw环境下编译,这是一个windows上模拟linux的最小运行环境,因此其处理换行LF,为了不引发编码上的问题,因此,有上诉操作。具体分析在网上找到了StackOverFlow一篇分析的文章,可详细了解:git replacing LF with CRLF。 

本机将源码下载到目录:E:\study\AV\ffmpeg\compile\windows\src\ffmpeg

2.2 MinGW+MSYS环境安装:


官网http://www.mingw.org/下载MinGW的安装工具mingw-get-setup.exe.

运行安装,直接将MinGW安装在C:/MinGW目录下了,也可自由选择其他目录。

安装完成后,运行界面勾选如下项,然后菜单Installation中Apply Changes去下载安装相应的包,完成安装。其中就包含msys环境。

2.3 yasm汇编工具


yasm是汇编编译器,因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE。因此需要安装这个工具。

下载地址为:http://yasm.tortall.net/

下载好此汇编工具后,解压出来为vsyasm.exe,需要改名为yasm.exe,并移动到 C:/MinGW/msys/1.0/bin目录下

2.4 下载pkg-config-0.23-2.zip及glib_2.18.4-1_win32.zip


pkg-config是一个辅助的配置、链接工具,可以方便的支持gcc自动配置。

下载  pkg-config-0.23-2.zip
下载地址:http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip
下载后:解压zip包,将pkg-config.exe拷贝到C:/MinGW/bin/

下载  glib_2.18.4-1_win32.zip
下载地址: http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.18/glib_2.18.4-1_win32.zip
下载后: 把libglib-2.0-0.dll拷贝到C:/MinGW/bin/。

2.5 下载SDL库


ffmpeg中的ffplay依赖于SDL库,因此,如果需要编译ffplay.exe的话,这个是必要的库。

下载SDL: https://www.libsdl.org/release/SDL2-devel-2.0.8-mingw.tar.gz

解压之后,把目录下lib,bin,include,share下面的内容拷贝到C:\MinGW\msys\1.0的对应目录下,注意是全部

2.6 下载 nasm


下载nasm,地址:https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/win32/

将nasm.exe拷贝到C:\MinGW\msys\1.0\bin下面。

3 修改必要配置文件


3.1 配置msys.bat


编辑C:/MinGW/msys/1.0/msys.bat文件, 在此文件的最前面(@echo off之后)添加一行如下内容:
Call ”C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat”
(具体的路依VS2013实际安装路径来修改)

3.2  重命名link.exe


重命名 C:/MinGW/msys/1.0/bin/link.exe 为link_renamed.exe (依实际安装选择路径),这一步是防止这个link.exe与VC的link.exe发生冲突,编译完成后可修改回来。

3.3  配置pkg-config


使用notepad++或者其他文本工具打开C:/MinGW/msys/1.0/etc/profile文件,在
if [ $MSYSTEM == MINGW32 ]; then
  export PATH=".:/usr/local/bin:/mingw/bin:/bin:$PATH"
else
  export PATH=".:/usr/local/bin:/bin:/mingw/bin:$PATH"
fi

后面加上下面的环境变量设置

if [ -z “$PKG_CONFIG” ]; then
export PKG_CONFIG=E:/MinGW/bin/pkg-config.exe
fi

if [ -z “$PKG_CONFIG_PATH” ]; then

export PKG_CONFIG_PATH=MinGW/lib/pkgconfig:/usr/local/lib/pkgconfig
fi

4 源码编译


1. 双击运行 C:\MinGW\msys\1.0\msys.bat 批处理文件

2. 切换目录到源码目录 E:\study\AV\ffmpeg\compile\windows\src\ffmpeg

3. 执行configure

4. 执行make

5. 执行make install

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值