QT Creater中Qt Multimedia模块的使用

Qt 5中Qt Multimedia模块代替Qt 4 Phone模块的使用

音频文件播放:

main.cpp:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

定义mainwindows类对象w

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSoundEffect>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    effect = new QSoundEffect(this);
    effect->setSource(QUrl::fromLocalFile("G:/mysoundeffect/sound.mp3"));
      effect->play();
    effect->setVolume(0.25f);
}

MainWindow::~MainWindow()
{
    delete ui;
}

// 播放按钮
void MainWindow::on_pushButton_clicked()
{
    effect->play();
}
// 停止按钮
void MainWindow::on_pushButton_2_clicked()
{
    effect->stop();
}

void MainWindow::on_spinBox_valueChanged(int arg1)
{
    effect->setLoopCount(arg1);
}

这里定于一了一个QsoundEffect对象,通过本机音频文件的绝对地址通过QsoundEffect对象的setSoure赋值,通过setVolum设置音量取值范围是0.0~1.0,绑定了两个槽

void MainWindow::on_pushButton_clicked()
{
    effect->play();
}
// 停止按钮
void MainWindow::on_pushButton_2_clicked()
{
    effect->stop();

}

开始播放和停止播放两个按钮

如果要播放网络音乐,把本地路径换成网站url就行


视频文件播放:

main.cpp:

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

widget.cpp:

#include "widget.h"
#include "ui_widget.h"
#include <QMediaPlayer>
#include <QVideoWidget>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    player = new QMediaPlayer(this);
    videoWidget = new QVideoWidget(this);
    videoWidget->resize(600, 300);
    player->setVideoOutput(videoWidget);
    player->setMedia(QUrl::fromLocalFile("../myvideowidget/video.wmv"));
    player->play();

    // 亮度
    ui->brightnessSlider->setValue(videoWidget->brightness());
    connect(ui->brightnessSlider, &QSlider::sliderMoved,
            videoWidget, &QVideoWidget::setBrightness);
    connect(videoWidget, &QVideoWidget::brightnessChanged,
            ui->brightnessSlider, &QSlider::setValue);
    // 对比度
    ui->contrastSlider->setValue(videoWidget->contrast());
    connect(ui->contrastSlider, &QSlider::sliderMoved,
            videoWidget, &QVideoWidget::setContrast);
    connect(videoWidget, &QVideoWidget::contrastChanged,
            ui->contrastSlider, &QSlider::setValue);
    // 色相
    ui->hueSlider->setValue(videoWidget->hue());
    connect(ui->hueSlider, &QSlider::sliderMoved,
            videoWidget, &QVideoWidget::setHue);
    connect(videoWidget, &QVideoWidget::hueChanged,
            ui->hueSlider, &QSlider::setValue);
    // 饱和度
    ui->saturationSlider->setValue(videoWidget->saturation());
    connect(ui->saturationSlider, &QSlider::sliderMoved,
            videoWidget, &QVideoWidget::setSaturation);
    connect(videoWidget, &QVideoWidget::saturationChanged,
            ui->saturationSlider, &QSlider::setValue);
}

Widget::~Widget()
{
    delete ui;
}
用到两个类,QMediaPlayer,viedioWidget,通过类QMedia中的setMedia方法传文件路径,videoWidget设置播放视频的窗口,并设置信号与槽,来实现视频文件亮度,对比度,色相,饱和度的调节


猜你喜欢

转载自blog.csdn.net/greedy__/article/details/80789652