注意:这个是编译Debug版本的。
必要资源:FFMPEG SDK 3.2(已经编译好的,可以去
http://www.bairuitech.com/html/ruanjianxiazai/ffmpeg/20080414/89.html
下载)
1.建立一个空的VC++工程
建立好之后,将FFMPEG SDK 3.2下的output_example.c文件拷贝至路径“%Project Dir%\%Project Name%\”下 其“%Project Dir%”为你所建立的工程的路径,“%Project Name%”为工程名。我的工程路径为“D:\ARM DEV\FFMPEG\VS FFMPEG\example”, 工程名为example,因此我就要将output_example.c拷贝至路径“D:\ARM DEV\FFMPEG\VS FFMPEG\example\example”下。
2.拷贝头文件
将FFMPEG SDK 3.2下的include文件夹下的所有文件及文件夹拷贝至output_example.c同一个目录下。
3.为工程导入output_example.c以及头文件
A:在解决方案视图里右键单击“Source Files”->Add->Exsiting Item 然后选择工程路径下的output_example.c文件。
B:在解决方案视图里右键单击“Header Files”->Add->Exsiting Item 然后选择工程路径下的前面拷贝过去的所有的头文件。
4.修改头文件
修改你所引用到的头文件。因为output_example.c里只引用了2个头文件avformat.h,swscale.h
所以分别在这两个头文件中加入如下代码:
#ifdef __cplusplus
extern "C" {
#endif
/*.你要引用的头文件的内容..*/
#ifdef __cplusplus
}
#endif
前半部分放在头文件的最开头,后半部分放在头文件的最末尾。这样就可以引用正常使用ffmpeg提供的函数了。
5.拷贝lib文件
将FFMPEG SDK 3.2下的lib文件夹拷贝至output_example.c同一个目录下。
6.为项目添加所需要的lib文件
A:在Project->Properties->Linker->General->Additional Library Directories下输入“$(SolutionDir)\$(ProjectName)\lib”,然后点OK。
B:在Project->Properties->Linker->Input->Additional Dependencies下输入“avcodec.lib avdevice.lib avfilter.lib avformat.lib avutil.lib swscale.lib”,然后点OK。
7.修改output_example.c文件
将output_example.c里的“#include "avformat.h"”和“#include "swscale.h"”
修改为“#include "libavformat/avformat.h"”和“#include "libswscale/swscale.h"”。
8.修改编译输出路径
在Project->Properties->Linker->General->Output Directory下输入“$(SolutionDir)\$(ProjectName)\$(ConfigurationName)”,然后点OK。
好了,开始编译。会发现找不到stdint.h这个文件,于是将出现问题的头文件中的“include <stdint.h>”改为“include "stdint.h"”,继续编译,直到所有头文件中的“include <stdint.h>”都改为“include "stdint.h"”为止。
好了,到这一步编译已经没有问题了,可是运行的时候会出现找不到avformat.dll等信息。要想能运行必须为工程添加相应的dll文件。
9.添加dll文件
将FFMPEG SDK 3.2下的bin文件夹下的所有文件拷贝至工程文件夹下的Debug文件夹下,这个时候就可以运行output_example.exe了。