搭建基于QT Creator的ffmpeg开发环境
date
Sep 24, 2020
slug
2020-09-24-qt-creator-ffmpeg
status
Published
tags
QT
ffmpeg
type
Post
AI summary
summary
总结在Windows环境中基于QT Creator搭建ffmpeg的开发环境及其测试代码。
操作系统版本:Windows 10.
从ffmpeg上下载windows平台上预编译好的ffmpeg库
下载地址: https://ffmpeg.zeranoe.com/builds/。
在基于动态链接库开发的情况下,需要下载下图中的Shared和Dev两个包:
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F686cacde-542e-418e-b72f-86d488231512%2F9971fc4f-5892-4a08-acb2-a6d4be0cdcdc%2FUntitled.png%3Fid%3D0847eaf1-998a-4816-8bd9-e19d87e494d2%26table%3Dblock%26spaceId%3D686cacde-542e-418e-b72f-86d488231512%26expirationTimestamp%3D1721707200000%26signature%3DPA2uchGbtzdMrJ76J5SZBKF2My7Zq-Ld_-NpcUAyzYQ?table=block&id=0847eaf1-998a-4816-8bd9-e19d87e494d2&cache=v2)
下载后解压缩到某个指定的目录中备用,此处把两个包均解压缩到D:\development\ffmpeg_lib目录下:
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F686cacde-542e-418e-b72f-86d488231512%2F9b25486b-8324-4b13-ad12-a12cd1cb30a4%2FUntitled.png%3Fid%3D0c4a2116-411f-4252-b071-557c62ce5a59%26table%3Dblock%26spaceId%3D686cacde-542e-418e-b72f-86d488231512%26expirationTimestamp%3D1721707200000%26signature%3DVZLLhIvAlHxQEPuDu7aW_ZlomhTQoNEF5AWWfHX4Kdc?table=block&id=0c4a2116-411f-4252-b071-557c62ce5a59&cache=v2)
在系统环境变量中设置动态链接库的目录
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F686cacde-542e-418e-b72f-86d488231512%2F8280db5e-aa45-436b-aef8-38148aef6e77%2FUntitled.png%3Fid%3D0187b8b5-6f32-40bf-8327-3a9b2ccf75c0%26table%3Dblock%26spaceId%3D686cacde-542e-418e-b72f-86d488231512%26expirationTimestamp%3D1721707200000%26signature%3Dm5SPVXVdvD4rWIA-BBf0QHd4AlQmz22UA_EWrh91OTo?table=block&id=0187b8b5-6f32-40bf-8327-3a9b2ccf75c0&cache=v2)
- 这样就不需要把动态链接库拷贝到应用程序所在的目录下了;
新建QT项目,修改QT项目的pro文件,增加头文件和库文件路径
INCLUDEPATH += D:\development\ffmpeg_lib\ffmpeg-4.3-win64-dev\include
LIBS += D:\development\ffmpeg_lib\ffmpeg-4.3-win64-dev\lib\avcodec.lib \
D:\development\ffmpeg_lib\ffmpeg-4.3-win64-dev\lib\avdevice.lib \
D:\development\ffmpeg_lib\ffmpeg-4.3-win64-dev\lib\avfilter.lib \
D:\development\ffmpeg_lib\ffmpeg-4.3-win64-dev\lib\avformat.lib \
D:\development\ffmpeg_lib\ffmpeg-4.3-win64-dev\lib\avutil.lib \
D:\development\ffmpeg_lib\ffmpeg-4.3-win64-dev\lib\postproc.lib \
D:\development\ffmpeg_lib\ffmpeg-4.3-win64-dev\lib\swresample.lib \
D:\development\ffmpeg_lib\ffmpeg-4.3-win64-dev\lib\swscale.lib
环境测试代码
#include "widget.h"
#include <QApplication>
#include <QDebug>
//ffmpeg include
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libavutil/pixfmt.h"
#include "libswscale/swscale.h"
#include "libavutil/time.h"
#include "libavutil/mathematics.h"
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
av_register_all();
unsigned int version = avcodec_version();
qDebug()<< version;
char * filename="D:\\video.mp4";
AVFormatContext * fc = NULL;
int ret = avformat_open_input(&fc, filename, 0, 0);
if(ret == 0){
qDebug() << "Video Duration:" << fc->duration / AV_TIME_BASE << " secs";
avformat_close_input(&fc);
}
w.show();
return a.exec();
}