VS2017编译ffmpeg4.3.1
2020-11-27 17:47:26
200次阅读
0个评论

一、安装msys

安装方法见:http://blog.yundiantech.com/?log=blog&id=38

安装后复制msys.bat到msys-vs2017.bat,用notepad++打开,

加入:call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvars32.bat"

如下:




二、编译(以静态编译为例

打开msys-vs2.17.bat

cd到ffmpeg代码所在目录,

./configure --toolchain=msvc --prefix="E:/build/ffmpeg-4.3.1" --enable-static  

make
make install


三、问题修改

make过程中会遇到如下问题:

1.

fftools/cmdutils.c(1153): error C2065: “slib”: 未声明的标识符
fftools/cmdutils.c(1153): error C2296: “%”: 非法,左操作数包含“char [138]”类型
fftools/cmdutils.c(1153): error C2059: 语法错误:“数字上的错误后缀”
fftools/cmdutils.c(1153): error C2059: 语法错误:“%”
fftools/cmdutils.c(1153): error C2017: 非法的转义序列
fftools/cmdutils.c(1153): error C2015: 常量中的字符太多
fftools/cmdutils.c(1153): error C2001: 常量中有换行符
fftools/cmdutils.c(1184): error C2143: 语法错误: 缺少“)”(在“*”的前面)
fftools/cmdutils.c(1184): error C2143: 语法错误: 缺少“{”(在“*”的前面)
fftools/cmdutils.c(1184): error C2059: 语法错误:“)”
fftools/cmdutils.c(1185): error C2054: 在“options”之后应输入“(”
fftools/cmdutils.c(1286): error C2143: 语法错误: 缺少“)”(在“*”的前面)
fftools/cmdutils.c(1286): error C2143: 语法错误: 缺少“{”(在“*”的前面)
fftools/cmdutils.c(1286): error C2059: 语法错误:“)”
fftools/cmdutils.c(1287): error C2054: 在“avclass”之后应输入“(”
fftools/cmdutils.c(1296): error C2143: 语法错误: 缺少“;”(在“*”的前面)
fftools/cmdutils.c(1296): error C2100: 非法的间接寻址


2.

fftools/ffprobe.c(3090): error C2001: 常量中有换行符
fftools/ffprobe.c(3091): error C2146: 语法错误: 缺少“)”(在标识符“writer_print_string”的前面)
fftools/ffprobe.c(3091): error C2198: “writer_print_string”: 用于调用的参数太少
fftools/ffprobe.c(3198): warning C4133: “=”: 从“int *”到“SectionID *”的类型不兼容
fftools/ffprobe.c(3488): warning C4133: “=”: 从“const int *”到“const SectionID *”的类型不兼容

解决方法:

经过百度,发现因为CC_IDENT引起的,解决方法就是直接注释掉

1.打开fftools/cmdutils.c,注释掉1153行的://av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);

2.打开fftools/ffprobe.c,注释掉3090行的://print_str("compiler_ident", CC_IDENT);



收藏 0 0

登录 后评论。没有帐号? 注册 一个。

群主
  • 0 回答
  • 0 粉丝
  • 0 关注