Bootstrap

QT:实现视频播放器

一.pro文件添加模块

1.multimedia模块

2.multimediawidgets模块

二.添加头文件

#include <QtMultimedia/QtMultimedia> 是一个C++预处理指令,用于在代码中包含Qt Multimedia模块的头文件。这个模块提供了处理多媒体内容的类和函数,例如音频、视频播放、录制等。通过包含这个头文件,你可以在你的项目中使用Qt Multimedia模块的功能。

#include <QtMultimediaWidgets/QVideoWidget> 是一个C++预处理指令,用于在代码中包含Qt Multimedia Widgets模块的头文件。这个模块提供了一些用于显示和控制多媒体内容的控件,例如视频播放器、音频播放器等。通过包含这个头文件,你可以在你的项目中使用Qt Multimedia Widgets模块的功能。

#include <QFileDialog> 是一个C++预处理指令,用于在代码中包含Qt的QFileDialog类。这个类提供了一个文件对话框,允许用户选择文件或目录。通过包含这个头文件,你可以在你的项目中使用QFileDialog类来创建一个文件对话框,以便让用户选择文件或目录。

#include <QUrl> 是一个C++预处理指令,用于在代码中包含Qt的QUrl类。这个类提供了一个URL(统一资源定位符)的表示和操作方法。通过包含这个头文件,你可以在你的项目中使用QUrl类来处理URL相关的操作,例如解析、构造、比较等。

三.创建视频播放器

1.设置窗口大小值

  this->setFixedSize(800, 800);

2.设置视频播放器大小

    QVideoWidget* videoWin = new QVideoWidget(this);
    videoWin->resize(800,800);

3.创建了一個名为player的QMediaPlayer实例并且将videoWin设置为player的视频输出。

    QMediaPlayer* player = new QMediaPlayer(this);
    player->setVideoOutput(videoWin);

4.调用了QFileDialoggetOpenFileName函数,用于选择一个文件,如果用户选择了一个视频文件,则会在QVideoWidget上播放该视频文件。

QString filePath = QFileDialog::getOpenFileName(this, tr("选择视频文件"), "", tr("MP4 Files (*.mp4);;All Files (*)"));
    if (!filePath.isEmpty()) {
        player->setMedia(QMediaContent(QUrl::fromLocalFile(filePath)));
        player->play();
    }

四.效果演示

五.代码演示

#include "widget.h"
#include "ui_widget.h"
#include <QtMultimedia/QtMultimedia>
#include <QtMultimediaWidgets/QVideoWidget>
#include <QFileDialog>
#include <QUrl>

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

    this->setFixedSize(800, 800);

    QVideoWidget* videoWin = new QVideoWidget(this);
    videoWin->resize(800,800);

    QMediaPlayer* player = new QMediaPlayer(this);
    player->setVideoOutput(videoWin);

    QString filePath = QFileDialog::getOpenFileName(this, tr("选择视频文件"), "", tr("MP4 Files (*.mp4);;All Files (*)"));
    if (!filePath.isEmpty()) {
        player->setMedia(QMediaContent(QUrl::fromLocalFile(filePath)));
        player->play();
    }
}



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

;