1. 程式人生 > >QT Creater中Qt Multimedia模組的使用

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,綁定了兩個槽

voidMainWindow::on_pushButton_clicked()
{
effect->play();
}
//停止按鈕
voidMainWindow::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設定播放視訊的視窗,並設定訊號與槽,來實現視訊檔案亮度,對比度,色相,飽和度的調節