使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(一)https://developer.aliyun.com/article/1473994
将 ffmpeg.c 文件中的 #include
改为 #include "stdatomic.h"
将 stdatomic.h文件中 # include "../compat/atomics/win32/stdatomic.h"
改为 # include
10、为解决下面报错,将 FFmpeg-4.3.r98065 目录下相关的文件拷贝到工程文件对应的文件夹
11、为解决下面报错,定义一个宏 _CRT_SECURE_NO_WARNINGS;
如下图所示
12、将 FFmpeg-4.3.r98065/libavutil 目录下的 timer.h 拷贝到 ffmpeg431_test/ffmpeg431devw32/include/libavutil 目录下
13、将 ffmpeg431_test/ffmpeg431devw32/include/libavutil/internal.h 目录下的 #include "config.h"
注释
14、针对下面问题,在 ffmpeg431_test/ffmpeg431devw32/include/libavutil 目录下新建一个 x86 目录,并将 FFmpeg-4.3.r98065/libavutil/x86 目录下的 timer.h 拷贝进去
如下图所示:
15、同上面情况一样,并将 FFmpeg-4.3.r98065/libavutil/x86 目录下的 emms.h 拷贝进去
如下图所示:
16、针对下面报错,F12 跳转到定义的地方将对应的指针赋初值为 NULL
如下图所示:
17、为解决下面报错,需要将 FFmpeg-4.3.r98065 目录下相关的文件拷贝到工程文件对应的文件夹
18、为解决下面报错,需要将 FFmpeg-4.3.r98065/SMP 目录下的 unistd.h 拷贝到 ffmpeg431_test 工程目录下
并将 ffmpeg.c 中 #include
改成 #include "unistd.h"
19、为解决下面报错,需要将 FFmpeg-4.3.r98065 目录下相关的文件拷贝到工程文件对应的文件夹
20、针对下面报错,需要禁用特定警告 4996
21、针对下面报错,将 ffmpeg.c 文件的 main 函数改为 main_ffmpeg431
22、针对下面问题,添加依赖库
avcodec.lib avdevice.lib avfilter.lib avformat.lib avutil.lib postproc.lib swresample.lib swscale.lib
编译还会报错
这里耽搁了很多时间去查这个问题,参考下面的博客,发现原来是文中所讲的原因七:位数选择错误
“error LNK2019: 无法解析的外部符号”原因总结
23、按照上面的修改成 WIN32 后,之前属性页所配置的需要再配置一遍,再次编译,无报错!!!
四、测试 ffmpeg.c
1、在 ffmpeg.h 中声明 main_ffmpeg431 函数
2、修改 ffmepg431_test.cpp,将下面代码复制到 ffmepg431_test.cpp
#include <iostream> extern "C" { #include "ffmpeg.h" } int main(int argc, char** argv) { main_ffmpeg431(argc, argv); }
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)https://developer.aliyun.com/article/1473996