音频
例子 - qt6
(我的理解),QAudioOutput相当于一个容器,paly播放器是一个接口工具,将内容放到这个容器中
QT += multimedia
#include <QMediaPlayer>
#include <QUrl>
#include <QAudioOutput>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 定义一个媒体播放对象
player=new QMediaPlayer(this);
/* 音频文件 */
// 定义一个音频输出
audioOut=new QAudioOutput(this);
player->setAudioOutput(audioOut);
audioOut->setVolume(50);
// 用播放器播放
player->setSource(QUrl::fromLocalFile("f:/qt-learning/exp12/testAudio.wav"));
// 开始播放
player->play();
// player->stop();
/* 视频文件 */
}
视频
(我的理解)QVideoWidget相当于一个窗体(容器),play播放器是一个接口工具(相当于一个搬运工具),将内容放到这个窗体中去
QT += multimediawidgets
#include "widget.h"
#include "ui_widget.h"
#include <QMediaPlayer>
#include <QUrl>
#include <QtMultimediaWidgets>
#include <QVideoWidget>
#include <QDebug>
#include <QSlider>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 定义一个媒体播放对象
player=new QMediaPlayer(this);
/* 视频文件 */
connect(ui->horizontalSlider,&QSlider::valueChanged,this,&Widget::skipFrame);
// 要是获得视频时长,必须要触发一个信号
connect(player,&QMediaPlayer::durationChanged,this,&Widget::getDuration);
videoWidget=new QVideoWidget(this);
videoWidget->resize(1920/2,1024/2);
player->setVideoOutput(videoWidget); // 表明视频要输出到哪里去,显示到videoWidget窗体内
player->setSource(QUrl::fromLocalFile("./testVideo.wmv")); // 设置视频的来源,视频内容从哪来
qDebug()<<player->duration();
// videoWidget->show(); // 好像不加这句话也可以
player->play();
}
Widget::~Widget()
{
delete ui;
}
void Widget::getDuration()
{
// qDebug()<<player->duration();
ui->horizontalSlider->setMaximum(player->duration());
}
void Widget::skipFrame()
{
skipPos = ui->horizontalSlider->value();
player->setPosition(skipPos);
}