前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >QT5.14.2编译部署QTAV播放器环境

QT5.14.2编译部署QTAV播放器环境

作者头像
DS小龙哥
发布2022-01-12 13:48:03
发布2022-01-12 13:48:03
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

一、编译环境与QTAV介绍

QTAV是开源的跨平台的播放器框架,框架是基于QT开发的,可以在Android、IOS、WINDOWS、Linux各个平台编译部署运行。

QTAV官网介绍: http://www.qtav.org/

QTAV源码下载地址GitHub: https://github.com/wang-bin/QtAV

直接在GitHub上下载最新的源码就行。

我当前使用的QT环境是QT5.14.2,编译器是minGW和VS2017 都采用的是32位的编译器。

QT的下载地址:https://download.qt.io/archive/qt/5.14/5.14.2/

当前编译时,我使用的ffmpeg的版本是4.2.2 ,也可以使用最新的版本,QTAV的说明里就介绍,最好使用最新的ffmpeg版本。

ffmpeg4.2.2的库地址:https://download.csdn.net/download/xiaolong1126626497/13328939

也可以直接去ffmpeg的官方下载:http://www.ffmpeg.org/download.html

二、编译QTAV源码

在GitHub上作者也介绍过,如何编译部署QTAV。 地址: https://github.com/wang-bin/QtAV/wiki/Build-QtAV

在windows下编译,作者推荐了2种方法:

第一种: 直接把ffmpeg的头文件和库文件拷贝到QT安装目录下的编译器目录里,这样做简单粗暴。

第二种: 打开QTAV源码工程,修改qmake.conf文件,指定ffmpeg的头文件和库文件路径 让QT编译器能找到ffmpeg库和头文件在哪里。

我这里就是采用的第二种方法,直接指定路径,不污染QT安装目录下的文件。

代码语言:javascript
代码运行次数:0
运行
复制
INCLUDEPATH += C:/FFMPEG/ffmpeg_x86_4.2.2/include
LIBS += -LC:/FFMPEG/ffmpeg_x86_4.2.2/lib

设置好路径之后,直接点击构建即可。

构建如果没有问题的话,在生成的目录下就会有一个自动安装脚本,双击运行即可自动拷贝文件到QT的安装目录下。

可以分别使用VS2017编译器、minGW编译器构建一遍QTAV源码,这样两个编译器都可以引用QTAV进行开发播放器。

编译完成之后,接下来就可以使用QTAV了。

在使用QTAV框架时,如果使用的是VS2017编译器,编译可能会报错,提示max函数不能识别。

解决办法如下:

在QT的pro工程文件里需要引用QTAV的框架库:

代码语言:javascript
代码运行次数:0
运行
复制
#LIBS     += -L$$quote(C:\Qt\Qt5.14.2\5.14.2\mingw73_32\lib) -lQtAV1 -lQtAVWidgets1
LIBS     += -L$$quote(C:\Qt\Qt5.14.2\5.14.2\msvc2017\lib) -lQtAV1 -lQtAVWidgets1
LIBS += -lopengl32 -lglu32

三、使用QTAV开发播放器

3.1 mainwindow.cpp 源码

代码语言:javascript
代码运行次数:0
运行
复制
#include "mainwindow.h"
#include "ui_mainwindow.h"

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

    Widgets::registerRenderers();
    VideoOutput *m_vo;
    AVPlayer *m_player;
    m_player = new AVPlayer(this);
    m_vo = new VideoOutput(this);
    m_player->setRenderer(m_vo);
    setCentralWidget(m_vo->widget());
    m_player->play("D:/test1080.flv");
}

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

3.2 mainwindow.h 源码

代码语言:javascript
代码运行次数:0
运行
复制
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QtAV>
#include <QtAVWidgets>

using namespace QtAV;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

3.3 运行效果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/11/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、编译环境与QTAV介绍
  • 二、编译QTAV源码
  • 三、使用QTAV开发播放器
    • 3.1 mainwindow.cpp 源码
    • 3.2 mainwindow.h 源码
    • 3.3 运行效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档