Qt播放视频

主要调用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有整个工程的源码可以下载,如果有什么疑问,可以评论。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值