MinGW编译windows可以调试的ffmpeg4.4

编译好的ffmpeg可以直接用,但是不能调试,不能看到函数内部是如何实现的,遇到问题一头雾水,不知道哪里出错了。这时候需要自己编译ffmpeg。
看了很多博客,只有一篇能用,主要借鉴这篇博客。特此记录,以备使用。

不要出现中文路径

1.准备MINGW,yasm

MinGW下载地址,目录随意,我选择安装在F:\mingw,不要有中文目录

yasm下载,我选择的是64位的,下载完成后,改名为yasm.exe,并复制到F:\mingw\bin目录下。
在这里插入图片描述

在这里插入图片描述
打开MinGW Installation Manager,下载几个Package。
在这里插入图片描述
点击Apply Changes
在这里插入图片描述
在这里插入图片描述

2.下载VS2017,这里不说明了

3.配置运行环境的脚本

https://blog.csdn.net/zdhsoft/article/details/86776283

  1. 复制F:\mingw\msys\1.0\msys.batF:/mingw/msys/1.0/msys_vs2017.bat
  2. 编辑msys_vs2017.bat,并在第一行的@echo off的后面,增加下面一条语句(注意:这里的vs2017是默认目录),根据自己真实目录添加
    完成后如下:
@echo off
call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/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
... ... 余下未修改的,略去

4.准备ffmpeg源码

ffmpeg源码下载

在这里插入图片描述
下载解压后放在F:\ffmpeg\ffmpeg

4.编译ffmpeg

双击运行msys_vs2017.bat,出现
在这里插入图片描述
在上边这个对话框里边依次输入以下命令

1.cd /f/ffmpeg/ffmpeg/
2../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=F:/ffmpeg/VS2017_build --toolchain=msvc --arch=x86 --extra-cflags="-MDd" --extra-ldflags="/NODEFAULTLIB:libcmt" --enable-debug
3.make -j4 
4.make install

1是进入configure 的目录
2是进行configure 设置,其中--prefix=F:/ffmpeg/VS2017_build指定生成路径。这个命令要执行一会,耐心等待
3make
4安装
在这里插入图片描述

等待过后,编译好的ffmpeg如下
在这里插入图片描述
这个编译好的ffmpeg没有ffplay.exe,暂时不需要,以后再说。
编译过程发现有下边的问题,不知道怎么解决。忽视这个问题也能正常编译运行。
在这里插入图片描述

5.验证调试ffmepg

vs2017创建简单的工程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
附加依赖项是:

Bcrypt.lib
Ws2_32.lib
Secur32.lib
libavcodec.a
libavdevice.a
libavfilter.a
libavformat.a
libavresample.a
libavutil.a
libswresample.a
libswscale.a

main函数如下:
一定要有下边这些

#pragma comment(lib,"Strmiids.lib")
#pragma comment(lib,"Mfuuid.lib")
#pragma comment(lib,"Mfplat.lib")
#pragma comment(lib,"Bcrypt.lib")
#pragma comment(lib,"Secur32.lib")

调试到断点处,按F11,发现可以进入函数avformat_network_init进行调试。

#include <stdio.h>
#pragma comment(lib,"Strmiids.lib")
#pragma comment(lib,"Mfuuid.lib")
#pragma comment(lib,"Mfplat.lib")
#pragma comment(lib,"Bcrypt.lib")
#pragma comment(lib,"Secur32.lib")
extern "C"
{
#include <libavformat/avformat.h>
#include <libavutil/dict.h>
}
int main(int argc, char * argv[]) {
	avformat_network_init();
	printf("hello ffmpeg!");
	return 0;
}

到此,大功告成。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值