利用QT制作简单的播放器 基于QMediaPlayer
1.YaKuMedia.pro
#-------------------------------------------------
#
# Project created by QtCreator 2020-02-06T20:40:33
#
#-------------------------------------------------
QT += core gui multimedia multimediawidgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = YaKuMedia
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
2.mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QVideoWindowControl>
#include <QMediaPlayer>
#include <QFileDialog>
#include <QMediaPlaylist>
#include <QString>
#include <QVideoWidget>
#include <QStringList>
#include <QFile>
#include <QFileInfo>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void addToPlaylist(const QStringList& fileNames);
private slots:
void on_openBtn_clicked();
void on_playBtn_clicked();
void on_stopBtn_clicked();
private:
Ui::MainWindow *ui;
QMediaPlayer *player;
QVideoWidget *videowidget;
QMediaPlaylist *Playlist;
QString m_fileName;
QMediaPlayer::State m_playerState;
};
#endif // MAINWINDOW_H
3.mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//自定义layout并把它设置成中心layout
// QWidget *widget = new QWidget;
// this->setCentralWidget(widget);
player = new QMediaPlayer;
Playlist = new QMediaPlaylist;
player->setPlaylist(Playlist);
videowidget = new QVideoWidget(this);
player->setVideoOutput(videowidget);
ui->horizontalSlider->setRange(0,player->duration()/1000);
videowidget->resize(600,300);
videowidget->move(5,5);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::addToPlaylist(const QStringList &fileNames)
{
foreach(QString const &argument,fileNames){
QFileInfo fileInfo(argument);
if(fileInfo.exists()){
// QUrl url = QUrl::fromLocalFile(fileNames);
QUrl url = QUrl::fromLocalFile(fileInfo.absoluteFilePath());
qDebug() << "url:" << url << ";";
if(fileInfo.suffix().toLower() == QLatin1String("flv")){
Playlist->load(url);
}
else{
Playlist->addMedia(url);
}
}
else{
QUrl url(argument);
if(url.isValid()){
Playlist->addMedia(url);
}
}
}
}
void MainWindow::on_openBtn_clicked()
{
Playlist->clear();
QStringList fileNames = QFileDialog::getOpenFileNames(this,tr("打开视频文件"),"","*.mp4");
addToPlaylist(fileNames);
}
void MainWindow::on_playBtn_clicked()
{
m_playerState = QMediaPlayer::PlayingState;
player->play();
}
void MainWindow::on_stopBtn_clicked()
{
m_playerState = QMediaPlayer::PlayingState;
player->stop();
}
4.mainwindow.ui
5.演示