1.简介
FFmpeg
是音视频编解码的开源框架,下面主要是如何在Qt
工程中导入FFmpeg
,以及在导入FFmpeg
过程中遇到的一些问题与问题解决方法
2.下载FFmpeg库
解压库文件,并将其放到合适的目录,我这里放在了工程目录的平级处
3.创建工程或控制台程序(testffmpeg
)
配置testffmpeg.pro
,将开发库包含到我们的工程中
4.编译项目
编译我们发现有如下错误提示
missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
的错误,这里我们直接在main.cpp
文件 中加入#define __STDC_CONSTANT_MACROS
定义来屏蔽这个错误
继续尝试编译,这个时候会发现如下错误提示
我们根据错误提示,进行对问题逐个解决,这里会提示头文件未对UINT64_C
进行定义,我们在main文件中手动的添加定义UINT64_C
的定义:
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif
这样就解决了编译错误的问题,运行我们编译好的程序
我们会发现,在程序中我们尝试在控制台中打印了字符Hello FFmpeg
但是控制台中并没有显示,但是我们的编译并没有报错,我们尝试到项目文件夹中找到我们编译的可执行exe
文件,我们手动运行该testffmpeg.exe
文件,这个时候会提示如下信息
我们会发现我们程序很多动态库文件找不到,这个时候有两种解决办法
1.找到我们程序依赖的dll
动态库文件,直接加到testffmpeg.exe
可执行文件的同级目录下
2.在编译Qt
项目的时候在编译选项中加入动态库路径的配置,具体做法如下:
找到动态库的路径,例如我们程序运行需要依赖的FFmpeg
的动态库(我们之前解压的库文件ffmpeg-2.5.2-win32-shared
),将库路径加入到Qt
编译PATH
中
动态库路径配置完毕后就可以正常运行我们的程序了