1.FFmpeg的编译
按着下面的连接做完就行:
https://blog.csdn.net/Jay_Xio/article/details/125321586?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-6-125321586-blog-81605472.t5_refersearch_landing&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-6-125321586-blog-81605472.t5_refersearch_landing&utm_relevant_index=7
生成后是这样的:
2.VS配置
首先,先把三个文件夹bin、include、lib都复制到项目文件夹中
由于这里的lib文件是放在bin里的,但是bin里配置后好像找不到lib文件,所以把他们剪切到lib中
其余两文件夹:
在vs在配置调式时动态库
bin中包含的是dll动态文件,一般来说同时有lib文件和dll文件时,lib的作用是链接dll动态库,本身不具备具体的实现代码,如果忽略这步可能会导致:LNK1104错误,找不到某些调用的库,如avcodec-58.dll库。当然也可以直接把dll文件剪切到项目的主目录,也就是这里的test目录,这样他也能直接找到dll文件,但是这里放在bin里,他找不到,所以要加上这步。
配置头文件库,也就是include那个库,里面包含各种头文件
配置lib文件,lib是静态库文件,先配置文件夹地址,再填上所有的依赖项
这里给你们贴上:
avcodec.lib
avdevice.lib
avfilter.lib
avformat.lib
avutil.lib
postproc.lib
swscale.lib
swresample.lib
测试
代码:
// test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
// 这句是FFmpeg规定的在C++中必须加的一句
#define __STDC_CONSTANT_MACROS
#include <iostream>
// ffmpeg是基于C的,因此要告诉C++文件,这里调用的C语言的库,要用extern
extern "C"
{
// 告知这部分代码用C编译器进行编译,C++和C的编译是不同的,C++支持函数重载,C不支持,具体看:https://baike.baidu.com/item/extern%20%22C%22/15267013
#include "libavcodec/avcodec.h"
}
int main()
{
// 输出配置
std::cout << avcodec_configuration();
}
// 输出
--prefix=./install --toolchain=msvc --arch=x64 --enable-shared --enable-sdl2 --enable-gpl --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-nonfree