使用QMediaPlayer播放音訊

吴海琼發表於2024-12-07

測試揚聲器的實現

主要播放裝置:我們使用的是QMediaPlayer來實現播放音訊。

實現步驟

  1. 使用QMediaDevices::audioOutputs()方法來獲取電腦上的所有音訊輸出裝置。並存放到QList<QAudioDevice> outputDevices中;預設使用系統預設的輸出即耳機,下標為0的outputDevices中;
  2. 我們初始化的輸出裝置的下標為0,然後從QList中去獲取輸出裝置:QAudioDevice selectedDevice = outputDevices[currentAudioOutputDeviceIndex];
  3. 建立一個QMediaPlayer物件並指定當前類為其父類物件;
  4. 使用選擇的輸出裝置,建立一個QAudioOutput物件:QAudioOutput *audioOutput = new QAudioOutput(selectedDevice, this);
  5. 設定QMediaPlayer的輸出物件: player->setAudioOutput(audioOutput);
  6. 設定音訊檔案並播放音訊:player->setSource(QUrl("qrc:/resources/gaisidewenrou.mp3")); player->play();

流程圖解

[選擇輸出設定] ---(生成)--->[輸出裝置物件(QAudioOutput)]------>[建立QMediaPlayer]------> [繫結輸出物件]------> [設定音訊檔案]------> [播放]

程式碼實現

outputDevices = QMediaDevices::audioOutputs();
    QString deviceName;
    for (const QAudioDevice &device : outputDevices) {
        deviceName = device.description();
        speakerDevice->addItem(deviceName);
    }

 if (outputDevices.isEmpty()) {
        qDebug() << "No audio output devices available!";
        return;
    }
    QAudioDevice selectedDevice = outputDevices[currentAudioOutputDeviceIndex];
    QAudioOutput *audioOutput = new QAudioOutput(selectedDevice, this);
    //audioOutput->setVolume(1.0);

    // 設定音訊輸出
    player = new QMediaPlayer(this);
    player->setAudioOutput(audioOutput);
    player->setSource(QUrl("qrc:/resources/gaisidewenrou.mp3"));
    player->play();

相關文章