基于QT实现简易音视频播放器
目录
基于QT实现简易音视频播放器
目录:
一、界面布局
二、播放本地音频
2.1 打开本地音频保存路径
2.2 选中想要播放的音频加入到播放列表
2.3 播放低延迟音频效果
2.4 实现相关播放操作
三、播放本地视频
3.1 打开本地视频保存路径
3.2 选中想要播放的视频加入到播放列表
3.3 实现相关播放操作
3.4 使用QMovie播放本地视频
一、界面布局
1、这里的界面布局是UI界面拖动控件布局的方式,界面背景和控件样式可以根据自己的喜好自行设置;控件的图标需要自己下载.png样式的图标,并且添加到资源文件夹下。
2、功能实现
pro里面的需要添加如下代码
QT += core gui multimedia multimediawidgets
· widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QVideoWidget>
#include <QFileDialog>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
protected:
void paintEvent(QPaintEvent *event);
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_open_clicked(); //打开
void on_pushButton_pre_clicked(); //上一个
void on_pushButton_start_stop_clicked(); //暂停——播放
void on_pushButton_next_clicked(); //下一个
void on_pushButton_stop_clicked(); //结束
void on_horizontalSlider_pace_valueChanged(int value); //进度
void on_verticalSlider_volume_valueChanged(int value); //音量
private:
Ui::Widget *ui;
QMediaPlayer *myplayer = nullptr; //播放者
QMediaPlaylist *myplayerlist = nullptr; //播放列表
QVideoWidget *mywidget = nullptr; //在哪播放
bool isstart = false; //初始播放状态为false
};
#endif // WIDGET_H
· widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//播放者
myplayer = new QMediaPlayer;
//播放列表
myplayerlist = new QMediaPlaylist;
//在哪播放
mywidget = new QVideoWidget(ui->label);
myplayer->setPlaylist(myplayerlist);
myplayer->setVideoOutput(mywidget);
mywidget->resize(ui->label->size()); //设置播放界面大小
setWindowTitle("QT-视频播放器"); //设置界面名称
myplayer->setVolume(50); //设置初始音量为50
ui->verticalSlider_volume->setRange(0,100);//设置音量范围
ui->verticalSlider_volume->setValue(50); //设置滑动杆的初始位置为50
//设置播放进度
connect(myplayer,&QMediaPlayer::positionChanged,ui->horizontalSlider_pace,&QSlider::setValue);
connect(myplayer,&QMediaPlayer::durationChanged,ui->horizontalSlider_pace,[&](qint64 temp){
ui->horizontalSlider_pace->setRange(0,(int)temp);
});
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent _event)
{
mywidget->resize(ui->label->size());//设置播放界面大小为标签大小
}
//打开
void Widget::on_pushButton_open_clicked()
{
//打开文件
QStringList mylist = QFileDialog::getOpenFileNames(this,"选择播放路径", //弹出"选择播放路径"窗口
"D:\\Qt\\220701QT\\VideoPlayer\\音视频", //播放路径
"allfiles(_._);;" //所以文件类型
"MP3(_.mp3);;" //音频
"MP4(*.mp4);;"); //视频
myplayerlist->clear();
for(const auto &k:mylist)
myplayerlist->addMedia(QUrl(k));
}
//上一个
void Widget::on_pushButton_pre_clicked()
{
myplayer->stop();
myplayerlist->previous();
myplayer->play();
}
//暂停——播放
void Widget::on_pushButton_start_stop_clicked()
{
if(isstart)
{
ui->pushButton_start_stop->setStyleSheet("QPushButton#pushButton_start_stop{border-image:url(:/播放.png)}");
isstart = false;
myplayer->pause();//暂停
}
else
{
ui->pushButton_start_stop->setStyleSheet("QPushButton#pushButton_start_stop{border-image:url(:/暂停.png)}");
isstart = true;
myplayer->play();
ui->pushButton_stop->setEnabled(true);
}
}
//下一个
void Widget::on_pushButton_next_clicked()
{
myplayer->stop();
myplayerlist->next();
myplayer->play();
}
//结束
void Widget::on_pushButton_stop_clicked()
{
myplayer->stop();
ui->pushButton_stop->setEnabled(false);
ui->pushButton_start_stop->setStyleSheet("QPushButton#pushButton_start_stop{border-image:url(:/播放.png)}");
}
//进度
void Widget::on_horizontalSlider_pace_valueChanged(int value)
{
myplayer->setPosition((qint64)value);
}
//音量
void Widget::on_verticalSlider_volume_valueChanged(int value)
{
myplayer->setVolume(value);
}
二、播放本地音频
1、打开音频的本地文件夹,将需要播放的音频加入的播放列表中
三、播放本地视频
1、打开视频的本地文件夹,将需要播放的视频加入的播放列表中
2、播放视频