使用QMediaPlayer播放音频

测试扬声器的实现

主要播放设备:我们使用的是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();
posted @ 2024-12-07 12:24  吴海琼  阅读(273)  评论(0)    收藏  举报