FFmpeg window编译,遇到的坑
结合各中百度,找到了总结一个编译流程
根据网站安装(但是安装过程的步骤可以根据一下命令)
其他作者网站
https://blog.csdn.net/m0_63230155/article/details/132216971
自己总结安装需要修改的地方
在编译FFMPEG的时候需要修改一下,可以用下面的命令安装
./configure --toolchain=msvc --enable-cross-compile --prefix=/usr/local/ffmpeg-6.0 --disable-static --enable-shared --extra-cflags=-l/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib
错误信息:
D:\program\win_compile_ffmpeg\ffmpeg-6.0\config.h(1): warning C4828: 文件包含在偏移 0x284 处开始的字
符,该字符在当前源字符集中无效(代码页 65001)。
D:\program\win_compile_ffmpeg\ffmpeg-6.0\config.h(1): warning C4828: 文件包含在偏移 0x293 处开始的字
符,该字符在当前源字符集中无效(代码页 65001)。
D:\program\win_compile_ffmpeg\ffmpeg-6.0\config.h(1): warning C4828: 文件包含在偏移 0x294 处开始的字
符,该字符在当前源字符集中无效(代码页 65001)。
fftools/ffmpeg.c(346): warning C4267: “函数”: 从“size_t”转换到“unsigned int”,可能丢失数据
fftools/ffmpeg.c(545): warning C4090: “函数”: 不同的“const”限定符
fftools/ffmpeg.c(834): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffmpeg.c(2991): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffprobe.c(359): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffprobe.c(589): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffprobe.c(2380): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffprobe.c(2381): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffprobe.c(3537): error C2001: 常量中有换行符
fftools/ffprobe.c(3538): error C2146: 语法错误: 缺少“)”(在标识符“writer_print_string”的前面)
fftools/ffprobe.c(3537): error C2198: “writer_print_string”: 用于调用的参数太少
fftools/ffprobe.c(3653): warning C4133: “=”: 从“int *”到“SectionID *”的类型不兼容
fftools/ffprobe.c(3946): warning C4133: “=”: 从“const int *”到“const SectionID *”的类型不兼容
make: *** [ffbuild/common.mak:81: fftools/ffprobe.o] Error 2
STRIP libavcodec/x86/vp9itxfm.o
skipping strip -x libavcodec/x86/vp9itxfm.o
找到第一个错误点:fftools/ffprobe.c(3537): error C2001: 常量中有换行符
其实是由于文件的编码格式导致,找到错误文件 fftools/ffprobe.c
定位到错误行号(3537):
更改信息:
/* Automatically generated by configure - do not modify! */
#ifndef FFMPEG_CONFIG_H
#define FFMPEG_CONFIG_H
#define FFMPEG_CONFIGURATION "--toolchain=msvc --enable-cross-compile --prefix=/usr/local/ffmpeg-5.1.2-full_build-shared/ --disable-static --enable-shared --extra-cflags=-l/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib"
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
#define CONFIG_THIS_YEAR 2023
#define FFMPEG_DATADIR "/usr/local/ffmpeg-5.1.2-full_build-shared//share/ffmpeg"
#define AVCONV_DATADIR "/usr/local/ffmpeg-5.1.2-full_build-shared//share/ffmpeg"
// #define CC_IDENT "���� x64 �� Microsoft (R) C/C++ �Ż������� 19.29.30151 ��" //这个文件用utf8打开会有问题,出现乱码,此文件默认编码gbk才能打开正确,但是编译文件默认选用utf8,需要将乱码改掉如下:
#define CC_IDENT "用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.29.30151 版"
#define OS_NAME win32
#define av_restrict restrict
#define EXTERN_PREFIX ""
#define EXTERN_ASM
再去执行make -j8 && make install (完美)