用vs2017编译ffmpeg 4.0.3详细过程,并可调试

本文详细介绍了如何使用Visual Studio 2017在Windows环境下编译FFmpeg 4.0.3,并提供可调试版本。首先介绍准备MSYS和MinGW环境,接着下载并安装VS2017,配置运行环境的脚本。然后通过configure和make编译FFmpeg,最后创建VS2017工程并解决编译过程中遇到的问题,如添加依赖库。附录中给出了编译选项帮助和预编译库的下载链接。
摘要由CSDN通过智能技术生成

1. 用vs2017编译ffmpeg 4.0.3,并可调试

1.1  MSYS

使用MSYS 1.0和2.0在这里都成功了,建议使用MSYS 2.0的方案。这个文章,已经放到git上面了,并开源了https://github.com/passer2019/xmplayer

1.2 计划构造一个android studio的工程,目标是可以调试C语言代码部分。

1.3 windows下面用vs2017编译

1.3.1 准备mingw环境

这个是老的方式,也可以编译出所需要库,但建议使用后面的MSYS2的方式 可以编译出ffplay.exe

1

2

3

4

5

6

7

8

9

然后等它他安装完成。

1.3.2 下载yasm

a1

1.3.3 安装vs2017

  • 这个网上大把文章,就不在这里说明了

1.3.4 配置运行环境的脚本

  • 复制一个C:/MinGW/msys/1.0/msys.batC:/MinGW/msys/1.0/msys_vs2017.bat
  • 编辑msys_vs2017.bat,并在第一行的@echo off的后面,增加下面一条语句(注意:这里的vs2017是默认安装的)
call "C:/program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Auxiliary/Build/vcvars32.bat"
  • 完成后,如下:
@echo off
call "C:/program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Auxiliary/Build/vcvars32.bat"

rem Copyright (C):  2001, 2002, 2003, 2004, 2005  Earnie Boyd
rem   mailto:earnie@users.sf.net
rem This file is part of Minimal SYStem
rem   http://www.mingw.org/msys.shtml
rem
rem File:	    msys.bat
rem Revision:	    2.4
rem Revision Date:  December 8th, 2005
... ... 余下未修改的,略去

1.3.5 Debug编译

  • 在windows文件管理器下,双击运行msys_vs2017.bat,启动依赖环境
  • 这里ffmpeg解压到c:\ffmpeg4.0.3 输入
cd c:/ffmpeg4.0.3
# 在这里可以看到configure这个文件 按照我以前的理解习惯,以为是cd /cygdrive/c/ffmpeg4.0.3 但是在这个msys则不用,用cd d:则切换到d盘,其它依赖类推
  • 进入代码目录后,就可以用configure生成所需的头文件和makefile了,这里是编译生成可调试的静态库,就不生成动态库了,也不使用汇编优化了
$ ./configure --disable-asm --enable-avdevice --enable-doc --disable-programs --enable-avresample  --disable-shared --enable-static --disable-bzlib  --enable-gray --disable-libopenjpeg --disable-iconv --disable-zlib --prefix=./vs2017_build --toolchain=msvc --arch=x86 --extra-cflags="-MDd" --extra-ldflags="/NODEFAULTLIB:libcmt" --enable-debug
$ make -j4  #我这里是4核的CPU,所以用-j4,如果是双核的则-j2,八核的则-j8
$ make install
# 如果要修改配置选项,请用 ./configure --help查找编译选项
  • 完成后,在./vs2017_build如下:

a2

  • 到这里,就完成了,所有需要的头文件和库了

1.3.6 编译ffplay

  • 这个请用下面的MSYS2环境编译
  • 请确定安装了SDL2的包 mingw-w64-i686-SDL2 然后如下操作。
cd c:/ffmpeg4.0.3
./configure --enable-shared --prefix=./vs2017_ffplay
make -j4
make install
#这样,在c:/ffmpeg4.0.3/vs2017_ffplay/bin下,就能看到 ffplay.exe
#不过,还需要手动复制一些dll 在C:\msys2\mingw32\bin\下,将SDL2.dll和libbz2-1.dll复制到ffplay.exe同一个目录下,就可以了。
ffplay d:/work/ts/cctv2.ts 
# 就可以看到有节目播出来了

1.4 MSYS2的编译环境

  • Mingw默认带的MSYS环境是1.0的版本,ffmpeg官方已经不推荐操作。 这里参考官方文档,重新定义MSYS2的编译过程。
  • 1.0版本不能编译ffplay.c,这个版本可以。
  • https://www.ffmpeg.org/platform.html#Windows 官方参考文档 <4 Windows>

官方文档目录截图

1.4.1 下载MSYS2,并安装

  • 下载地址:https://www.msys2.org/
  • 安装,默认安装就可以了(我这里选择的是32位版本,i686),没有什么
# Update the package database and core system packages(更新包数据库和核心包)
pacman -Syu

# normal msys2 packages
# pacman -S make pkgconf diffutils  
# 官方提供的pkgconf不存在,试出了pkg-config这个可以安装 
pacman -S make pkg-config diffutils yasm

#
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值