主要调用Qt的QMediaPlay来进行播放,首先步骤是打开对应的mp4视频文件,之后点击播放即可打开,主要代码如下:
#include "dialog.h"
#include "ui_dialog.h"
#include<QDebug>
#include <QMediaPlayer>
#include<QFileDialog>
#include<QVideoWidget>
#include<QVBoxLayout>
#include<QFile>
#include<QMessageBox>
#include<QMediaPlaylist>
QVBoxLayout* layout_video;//布局
QMediaPlayer* player; //播放器
QVideoWidget* widget; //视频播放控件
//播放状态,true为播放,false为暂停
bool play_state;
//是否重新载入视频
bool if_reload=false;
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
ui->pushButton_play->setEnabled(false);
// QString directory = QFileDialog::getOpenFileName(
// this,
// tr("选择文件"),
// "/",
// "(*.png);;All files(*.*)");
// if (!directory.isEmpty())
// {
// qDebug() << directory;
// }
// QMediaPlayer qtaudioPlayer;
// qtaudioPlayer.setMedia(QUrl::fromLocalFile(directory));
// qtaudioPlayer.play();
// QVideoWidget *m_videoW = new QVideoWidget(this);
// //将QVideoWidget 对象添加到布局
// m_layout->addWidget(m_videoW);
// //设置页面布局
// this->setLayout(m_layout);
// //设置媒体文件输出
// m_player->setVideoOutput(m_videoW);
// //显示m_videoW
// m_videoW->show();
// //播放视频
// m_player->play();
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_pushButton_open_clicked()
{
QString filename = QFileDialog::getOpenFileName(this,tr("选择视频文件"),".",tr("视频格式(*.avi *.mp4 *.flv *.mkv)"));
QFile file(filename);
qDebug()<<filename;
if(!file.open(QIODevice::ReadOnly))
{
QMessageBox::information(NULL, "Title", "Content", QMessageBox::Ok, QMessageBox::Ok);
printf("111111111111111111111\n");
return;
}
if(if_reload)
{//重新加载视频时,重置以下变量
delete layout_video;
delete player;
delete widget;
//delete timer;
}
if_reload = true;
layout_video = new QVBoxLayout;
player = new QMediaPlayer;
widget = new QVideoWidget;
layout_video->setMargin(1);
//ui->label_mp4->setMargin(1);
widget->resize(ui->label_mp4->size());
layout_video->addWidget(widget);
//layout()->addWidget(widget);
ui->label_mp4->setLayout(layout_video);
player->setVideoOutput(widget);
player->setMedia(QUrl::fromLocalFile(filename));
play_state=true;
ui->pushButton_play->setEnabled(true);
ui->pushButton_play->setText("暂停");
player->play();
}
void Dialog::on_pushButton_play_clicked()
{
if(play_state)
{
player->pause();
ui->pushButton_play->setText("播放");
}
else
{
player->play();
ui->pushButton_play->setText("暂停");
}
play_state=!play_state;
}
效果图如下:
主页上https://download.csdn.net/download/qq_42981739/11375793有整个工程的源码可以下载,如果有什么疑问,可以评论。