Top

本地磁盘小日记ヾ(≧▽≦*)ゝ

世界无限大.且行且珍惜w~
编码.计算机视觉.网络.语言.绘图在学/M2F/各种发烧友/死宅/见习天使w;

教程:在WinQt下搭建FFmpeg开发环境(MinGW版本).

轻教程。

最近一直在补习C/C++,想着折腾出一个ffmpeg+sdl+opencv的一个图像序列和声波分析的工具玩,先用MinGW版的Qt练手做噗噗噗。想着做的过程遇到的要点和问题就在blog里分享一波吧w,请大家多多指教的说!


第一步,Qt环境的搭建:

这是窝的环境ww,qt安装什么的,就不多赘述辣。

泥需要mingw编译器,Qt库,还有IDE。安装过程跟着提示走就好了,安装顺序mingw-库-ide。三个子环境都可以在qt和mingw官网获取到(过段日子窝传到网盘上一份吧)。

三个子环境安装完惹QtCreator里配置一波,"工具-选项","构建和运行","编译器"。

添加MinGW编译器,找到刚刚咱们安装的mingw的根目录,那里的bin文件夹里就要mingw g++编译器的主程序了。

设置完成这一步点一下"应用"按钮。

接着Qt版本选项卡。

“添加",找到咱们刚刚安装的Qt库根目录下的bin/qmake.exe,设置完成这一步点一下"应用"按钮。

最后构建套件选项卡。

“添加",调一下"名称”.“编译器"和"Qt版本",设置完成这一步点一下"确定"按钮。

至此泥可以新建一个qt工程试一试,(Ctrl+N),应用程序-QtGUI程序,然后根据向导提示填写信息。

要注意一点就是工程的目录和名称中绝对不能有中文字符,因为Win的GBK字符限制编译器编译时如果不经过设置是不会识别的。

向导结束了,DeBug模式,直接点左下角的"播(运)放(行)“按钮,如果出现惹一个空白界面,就代表Qt环境基本上是做完了。


第二步,FFmpeg的获取与选择:

窝们这篇文章因为暂时不牵扯ffmpeg源代码及其实现的研究,所以直接采用官方build的版本就可以惹。

官方下载地址:https://ffmpeg.zeranoe.com/builds/

Dev是Lib文件,Static是静态库版本文件,Shared是动态库版本文件。

这里我们需要下载一份lib版本用于链接,shared版本主程序(版本一致就好)。

下面新建工程:QtCreator:新建工程-非Qt项目-纯Cpp语言项目-根据向导提示填写信息。

注意填写路径和项目名称的时候请不要使用中文字符。

然后去新建的这个工程根目录,新建名字为"ffmpeg"的文件夹,把下载的lib文件里(include和lib两个文件夹)解压到这个目录里。

把下载的shared文件里(bin文件夹里的所有文件)先解压到一旁备用。


第三步,写一个FFmpegHelloWorld试试吧:

进入QtCreator我们刚刚建立好的项目,进入Pro(工程配置)文件开始配置,把ffmpeg调用到我们的项目里,引用头和库文件。

1
2
3
4
5
6
7
8
9
10
11
代码范例:
INCLUDEPATH += $$PWD/ffmpeg/include

LIBS += $$PWD/ffmpeg/lib/avcodec.lib \
        $$PWD/ffmpeg/lib/avdevice.lib \
        $$PWD/ffmpeg/lib/avfilter.lib \
        $$PWD/ffmpeg/lib/avformat.lib \
        $$PWD/ffmpeg/lib/avutil.lib \
        $$PWD/ffmpeg/lib/postproc.lib \
        $$PWD/ffmpeg/lib/swresample.lib \
        $$PWD/ffmpeg/lib/swscale.lib

然后编写"main.cpp",开始编写这个程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
代码范例:
#include <iostream>
#include <stdlib.h>

using namespace std;

extern "C" //FFMPEG基于C语言编写

{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavdevice/avdevice.h>
}

int main()
{
    cout << "(T ^ T) I want to die." << endl;
  //输出ffmpeg版本号操作
    av_register_all();    //使用ffmpeg前必须注册
    unsigned version = avcodec_version();    //执行获取命令
    cout << "This FFmpeg Version Is : " << version;
    system("pause");
    return 0;
}

写好惹先DeBug一下,然后去这个工程的根目录下的DeBug文件夹,把把下载的shared文件里(bin文件夹里的所有文件)复制到这个文件夹。

然后再运行即可,效果如图。


至此环境搭建完成。


@本地磁盘姬 撰稿

ohayou.aimo.moe

微博:@萌萌的本地磁盘w

2017年10月18日