开发使用Qt5自带解码器,仅支持avi视频解码。可以安装其它解码器来播放其它视频格式。
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
#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; }