700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > MinGW编译windows可以调试的ffmpeg4.4

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

时间:2021-04-02 12:04:44

相关推荐

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.下载VS,这里不说明了

3.配置运行环境的脚本

/zdhsoft/article/details/86776283

复制F:\mingw\msys\1.0\msys.batF:/mingw/msys/1.0/msys_vs.bat编辑msys_vs.bat,并在第一行的@echo off的后面,增加下面一条语句(注意:这里的vs是默认目录),根据自己真实目录添加

完成后如下:

@echo offcall "C:/Program Files (x86)/Microsoft Visual Studio//Community/VC/Auxiliary/Build/vcvars32.bat"rem Copyright (C): 2001, 2002, , , Earnie Boydrem mailto:earnie@rem This file is part of Minimal SYStemrem /msys.shtmlremrem File: msys.batrem Revision: 2.4rem Revision Date: December 8th, ... ... 余下未修改的,略去

4.准备ffmpeg源码

ffmpeg源码下载

下载解压后放在F:\ffmpeg\ffmpeg

4.编译ffmpeg

双击运行msys_vs.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/VS_build --toolchain=msvc --arch=x86 --extra-cflags="-MDd" --extra-ldflags="/NODEFAULTLIB:libcmt" --enable-debug3.make -j4 4.make install

1是进入configure 的目录

2是进行configure 设置,其中--prefix=F:/ffmpeg/VS_build指定生成路径。这个命令要执行一会,耐心等待

3make

4安装

等待过后,编译好的ffmpeg如下

这个编译好的ffmpeg没有ffplay.exe,暂时不需要,以后再说。

编译过程发现有下边的问题,不知道怎么解决。忽视这个问题也能正常编译运行。

5.验证调试ffmepg

vs创建简单的工程

附加依赖项是:

Bcrypt.libWs2_32.libSecur32.liblibavcodec.alibavdevice.alibavfilter.alibavformat.alibavresample.alibavutil.alibswresample.alibswscale.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;}

到此,大功告成。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。