videoplayer.h代码如下(视频播放和音乐播放差不多):
#ifndef VIDEOPLAYER_H
#define VIDEOPLAYER_H
#include <QDialog>
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QMediaPlaylist>
#include <QTime>
#include <QTimer>
namespace Ui {
class VideoPlayer;
}
class VideoPlayer : public QDialog
{
Q_OBJECT
public:
explicit VideoPlayer(QWidget *parent = nullptr);
~VideoPlayer();
public slots:
void init();
void slotButtonStart();
void slotstop();
void closeEvent(QCloseEvent *);
void volumChange(int);
void positionChange(qint64 position);
void seekChange(int position); //滑动滑动条快进、倒退音乐,且音乐已播放时长也跟着变化
void videoTime();
void changestartbutton();
void button_style();
void mute();
private:
QMediaPlayer* player;
QVideoWidget* videoWidget;
QMediaPlaylist* playlist;
Ui::VideoPlayer *ui;
bool isPlay_wm=false;
bool ismute=false;
int moved;
};
#endif // VIDEOPLAYER_H
videoplayer.cpp代码如下:
#include "videoplayer.h"
#include "ui_videoplayer.h"
#include <QDebug>
#include <QFile>
#include <QCloseEvent>
VideoPlayer::VideoPlayer(QWidget *parent) :
QDialog(parent),
ui(new Ui::VideoPlayer)
{
ui->setupUi(this);
qDebug()<<"执行到此处";
connect(ui->Buttonstart,&QPushButton::clicked,this,&VideoPlayer::changestartbutton);
connect(ui->Buttonmute,&QPushButton::clicked,this,&VideoPlayer::mute);
init();
connect(ui->Buttonstart,&QPushButton::clicked,this,&VideoPlayer::slotButtonStart);
connect(ui->voiceSlider, SIGNAL(sliderMoved(int)), this, SLOT(volumChange(int)));
connect(player,SIGNAL(positionChanged(qint64)),this,SLOT(positionChange(qint64)));
connect(ui->timeSlider,SIGNAL(sliderMoved(int)),this,SLOT(seekChange(int)));
connect(player,SIGNAL(durationChanged(qint64)),this,SLOT(videoTime()));
}
VideoPlayer::~VideoPlayer()
{
slotstop();
delete ui;
}
void VideoPlayer::init(){
//widget=new QWidget;
button_style();
player= new QMediaPlayer;
videoWidget=new QVideoWidget;
playlist=new QMediaPlaylist;
playlist->clear();
playlist->addMedia(QUrl::fromLocalFile("C:Users44637MusicMV陈奕迅-我们MV.mp4"));
player->setPlaylist(playlist);
QFile file("C:Users44637MusicMV陈奕迅-我们MV.mp4");
if(!file.open(QIODevice::ReadOnly))
qDebug() << "Could not open file";
player->setVideoOutput(videoWidget);
player->setPlaylist(playlist);
videoWidget->setAutoFillBackground(true);
QPalette qplte;
qplte.setColor(QPalette::Window, QColor(0,0,0));
videoWidget->setPalette(qplte);
ui->verticalLayout->addWidget(videoWidget);
player->play();
isPlay_wm=true;
}
void VideoPlayer::slotButtonStart(){
if(!isPlay_wm){
isPlay_wm=true;
//Player->setVolume(100);
player->play();
//musicTime();
//qApp->quit();
}
else{
isPlay_wm=false;
player->pause();
//musicTime();
}
}
void VideoPlayer::slotstop(){
player->stop();
playlist->clear();
//player->
}
void VideoPlayer::closeEvent(QCloseEvent *event){
slotstop();
event->accept();
}
void VideoPlayer::volumChange(int vol)
{
player -> setVolume(vol);
}
void VideoPlayer::positionChange(qint64 position)
{
ui->timeSlider->setMaximum(player->duration() / 1000);//设置滑块的长度范围为音乐长.00度
ui->timeSlider->setValue(position / 1000);//如果音乐进度改变,则改变滑块显示位置
moved = position;//让播放时间等于音乐进度(毫秒)
QTime moveTime(0,(moved/60000) % 60,(moved / 1000) % 60);//设置时间
ui->currenttime ->setText(moveTime.toString("mm:ss"));//显示时间
QString t=moveTime.toString("mm:ss");
QString mm = t.mid(0,2);
QString ss = t.mid(3, 2);
int m = mm.toInt();
int s = ss.toInt();
int time = m*60*1000 + s*1000;
qDebug()<<"int"<<time;
}
void VideoPlayer::seekChange(int position)
{
player -> setPosition(position * 1000);//如果滑块改变位置,则改变音乐进度
moved = position * 1000;//让播放时间等于音乐进度(毫秒)
QTime moveTime(0,(moved/60000) % 60,(moved / 1000) % 60);//设置时间
}
void VideoPlayer::videoTime(){
qint64 time = player->duration();
QTime Time(0,(time % (1000 * 60 * 60)) / (1000 * 60),(time % (1000 * 60)) / 1000);
ui->videotime->setText(Time.toString("mm:ss"));
qDebug()<<"time:"<<Time;
}
void VideoPlayer::changestartbutton(){
if(!isPlay_wm)
ui->Buttonstart->setIcon(QIcon("E:QTQTcodeMusicPlayericonpause.jpg"));
else
ui->Buttonstart->setIcon(QIcon("E:QTQTcodeMusicPlayericonstart.jpg"));
}
void VideoPlayer::button_style(){
ui->Buttonstart->setIcon(QIcon("E:QTQTcodeMusicPlayericonpause.jpg"));
ui->Buttonmute->setIcon(QIcon("E:QTQTcodeMusicPlayericonvolume.jpg"));
}
void VideoPlayer::mute(){
if(!ismute){
player -> setVolume(0);
ui->Buttonmute->setIcon(QIcon("E:QTQTcodeMusicPlayericonmute.png"));
ismute=true;
}
else{
player -> setVolume(100);
ui->Buttonmute->setIcon(QIcon("E:QTQTcodeMusicPlayericonvolume.jpg"));
ismute=false;
}
}










