使用Qt開發視頻播放器
基礎開發說明
環境准備
開發使用Qt5自帶解碼器,僅支持avi視頻解碼。可以安裝其它解碼器來播放其它視頻格式。
開發過程
Qt模塊
pro文件中添加 QT += multimedia multimediawidgets
頭文件中添加
#include <QMediaPlayer>
#include <QVideoWidget>
代碼
頭文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLayout>
#include <QMediaPlayer>
#include <QVideoWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
cpp文件
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("視頻播放器");
QMediaPlayer *player = new QMediaPlayer; // 用於解析視頻流的媒體播放器
QVideoWidget *videowidget = new QVideoWidget; // 用於播放視頻
// QVBoxLayout *layout = new QVBoxLayout; // 用於指定視頻播放的位置
// player->setMedia(QUrl::fromLocalFile("C:\\Users\\Administrator\\Desktop\\2021-12-31_14-28-58.mkv")); //打開音視頻流文件
player->setMedia(QUrl::fromLocalFile("C:\\Users\\Administrator\\Desktop\\22.avi")); //打開音視頻流文件
// videowidget->resize(this->size()); //把視頻輸出圖像的大小重新調整為label的大小
//指定視頻播放的位置
// layout->addWidget(videowidget);
// ui->label->setLayout(layout);
player->setVideoOutput(videowidget); //設置視頻輸出附加到媒體播放器
player->play(); //開始播放視頻
videowidget->setParent(this); // 將顯示控件放到widget中
videowidget->setGeometry(0,0,this->size().width(),this->size().height()); // 設置視頻顯示的坐標與大小。
}
Widget::~Widget()
{
delete ui;
}