QtAV编译配置和入门使用(Qt5.11.1+VS2017)

参考文档:https://github.com/wang-bin/QtAV/wiki/Build-QtAV

为Qt的音视频开发储备

一、编译准备

QtAV发行(为了后续编译需要的头文件):https://sourceforge.net/projects/qtav/

QtAV源码:https://github.com/wang-bin/QtAV

FFmpeg Dev(ffmpeg-4.0.2-win64-dev.zip):https://ffmpeg.zeranoe.com/builds/

FFmpeg Share(ffmpeg-4.0.2-win64-shared.zip):https://ffmpeg.zeranoe.com/builds/

我的编译环境:Qt5.11.1-msvc2017-64bit

二、编译配置

1.把下载好的ffmpeg-4.0.2-win64-dev.zip的include里面的文件夹复制到D:\Qt\Qt5.11.1\5.11.1\msvc2017_64\include

2.把下载好的ffmpeg-4.0.2-win64-dev.zip的lib里面的文件夹复制到D:\Qt\Qt5.11.1\5.11.1\msvc2017_64\lib

如图:

三、编译完成

配置好后开始编译,本次测试大概出了60个编译警告,忽略即可。

编译完成后,找到输出路劲下的lib_win_x86_64文件夹并打开,可以看到生成的dll和lib,那么就可以开始玩耍了。

四、测试编译

进入编译输出路劲的bin目录下,打开Player.exe,随便扔一个视频进去播放。

如果不行先试试把ffmpeg-4.0.2-win64-shared.zip里面的bin目录下的*.dll都复制到player.exe的目录下再试试。

五、简单入门

测试编译都没有问题了以后,试试在自己的代码里面实现播放视频。

1.新建Qt Desktop工程qav

例如我的工程建在D:\Qt\Qpro\qav\qav.pro

把所有头文件放到D:\Qt\Qpro\qav\qtav\include目录下(头文件在https://sourceforge.net/projects/qtav/里可以找到)

把之前生成的QtAV1.lib、QtAVWidgets1.lib、QmlAV.lib放到D:\Qt\Qpro\qav\qtav\lib目录下。

然后打开qav.pro文件增加如下几行:

PROJECT_DIRECTORY = ../qav
QTAV_LIB = $${PROJECT_DIRECTORY}/qtav/lib
QTAV_HEADER = $${PROJECT_DIRECTORY}/qtav/include

INCLUDEPATH += $${QTAV_HEADER}
INCLUDEPATH += $${QTAV_HEADER}/QtAV
INCLUDEPATH += $${QTAV_HEADER}/QtAVWidgets
LIBS += -L$${QTAV_LIB} -lQtAV1
LIBS += -L$${QTAV_LIB} -lQtAVWidgets1

然后根据作者官网给出的最简单的播放视频例子:

Write a media player using QtAV is quite easy.

GLWidgetRenderer2 renderer;
renderer.show();
AVPlayer player;
player.setRenderer(&renderer);
player.play("test.avi");

因为需要在自己的窗口显示视频,所以稍作修改:

1.mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>
#include <QtAV>
#include <QtAVWidgets>

using namespace QtAV;

namespace Ui {
class MainWindow;
}

class MainWindow : public QWidget
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    GLWidgetRenderer2 m_renderer;
    AVPlayer m_player;
};

#endif // MAINWINDOW_H

 2.mainwindow.ui

增加一个QWidget,ObjectName命名为widgetPlayer。

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QWidget" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>795</width>
    <height>528</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QWidget" name="widgetPlayer" native="true"/>
   </item>
  </layout>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

3.mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    m_renderer.setParent(this);
    ui->widgetPlayer->hide();
    ui->verticalLayout->addWidget(&m_renderer);
    m_renderer.show();
    m_player.setRenderer(&m_renderer);
    m_player.play("C:\\Users\\ema\\Desktop\\example.mp4");
}

MainWindow::~MainWindow()
{
    delete ui;
}

编译成功但发现运行不了:

把需要的dll都放到exe目录下即可,如图:

效果显示:

最后放出示例工程:https://download.csdn.net/download/mccoy39082/10683124

猜你喜欢

转载自blog.csdn.net/mccoy39082/article/details/82818716
今日推荐