提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
最近开始学习音视频,第一步开始编译FFMPEG,特别是在windows上面编译配置比较麻烦所以记录一下如何配置。。
提示:以下是本篇文章正文内容,下面案例可供参考
一、配置
查看了这篇博客很详细基本可以按照一步步走:https://blog.csdn.net/cry_smile_hate/article/details/134276617。
二、遇到的问题
1.相关的库未找到
代码如下(示例):
比如需要的模块:x264,fdk-aac等.
会出现 ERROR: x264 not found using pkg-config。
一般设置环境变量: export PKG_CONFIG_PATH=/d/msys64/usr/local/lib/pkgconfig 就可以了 (最好设置绝对路径)如果还不行就在./configure 后面添加相对于的安装模块库的路径:
CC=cl.exe ./configure --prefix=./install --toolchain=msvc --arch=x64 --enable-debug --disable-optimizations --disable-static --enable-shared --enable-sdl2 --enable-gpl --enable-libx264 --enable-libfdk-aac --enable-nonfree --extra-cflags=“-fPIC” --extra-cxxflags=“-fPIC” --extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include
配置后开始make make install.
2.编译问题
错误1:
fftools/opt_common.c(206): error C2065: “slib”: 未声明的标识符
解决方案:
修改fftools/opt_common.c 源码文件, 将第 206 行注释掉,原因是 CC_IDENT 标识未定义引起的,如下所示:
static void print_program_info(int flags, int level)
{
const char *indent = flags & INDENT? " " : "";
av_log(NULL, level, "%s version " FFMPEG_VERSION, program_name);
if (flags & SHOW_COPYRIGHT)
av_log(NULL, level, " Copyright (c) %d-%d the FFmpeg developers",
program_birth_year, CONFIG_THIS_YEAR);
av_log(NULL, level, "\n");
//av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);
av_log(NULL, level, "%sconfiguration: " FFMPEG_CONFIGURATION "\n", indent);
}
错误2.=:
fftools/ffprobe.c(378): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据
解决方案:
注释CC_IDENT所在的行,如下所示:
static void ffprobe_show_program_version(WriterContext *w)
{
AVBPrint pbuf;
av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED);
writer_print_section_header(w, NULL, SECTION_ID_PROGRAM_VERSION);
print_str("version", FFMPEG_VERSION);
print_fmt("copyright", "Copyright (c) %d-%d the FFmpeg developers",
program_birth_year, CONFIG_THIS_YEAR);
//print_str("compiler_ident", CC_IDENT);
print_str("configuration", FFMPEG_CONFIGURATION);
writer_print_section_footer(w);
av_bprint_finalize(&pbuf, NULL);
}
总结
编译生成后在install/bin目录下面有相关的库: