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