音频录制示例

发现可用的设备和支持的编解码器。

音频录制器展示了如何识别可用设备和支持的编解码器,以及如何使用QAudioRecorder类。

运行示例

要从Qt Creator中运行此示例,请打开欢迎模式,然后从示例中选择示例。有关更多信息,请访问构建和运行示例

显示窗口和音频设置

我们显示一个窗口,用户可以在其中选择合适的音频输入、编解码器、容器、采样率和声道。它允许设置质量或比特率。最后,可以选择输出文件并开始录制。

以下方法用于填充列表

质量滑块从0(零)设置到QMediaRecorder::VeryHighQuality,默认值为QMediaRecorder::NormalQuality,而比特率框则直接编写到列表中。

录制音频

为了录制音频,我们只需创建一个QAudioRecorder对象,

audioRecorder = new QAudioRecorder(this);

然后像上面描述的那样设置列表。记录和暂停按钮上的文本会根据audioRecorder对象的状态切换。这意味着如果状态是QMediaRecorder::StoppedState,则按钮文本将是"Record"和"Pause"。在QMediaRecorder::RecordingState状态下,记录按钮的文本将是"Stop",在QMediaRecorder::PausedState状态下,暂停按钮的文本将是"Resume"。

按下按钮也会根据状态进行切换。如果停止录制,则按下记录按钮将设置audioRecorder对象的编码设置和容器,并使用record()方法开始录制。

QMediaFormat format;
format.setCodec(boxValue(ui->audioCodecBox).toString());
audioRecorder->setMediaFormat(format);
audioRecorder->setSampleRate(boxValue(ui->sampleRateBox).toInt());
audioRecorder->setBitRate(boxValue(ui->bitrateBox).toInt());
audioRecorder->setQuality(QMediaRecorder::EncodingQuality(ui->qualitySlider->value()));
audioRecorder->setEncodingMode(ui->constantQualityRadioButton->isChecked() ?
                         QMediaRecorder::ConstantQualityEncoding :
                         QMediaRecorder::ConstantBitRateEncoding);

QString container = boxValue(ui->containerBox).toString();

audioRecorder->record();

录制过程中,应用程序的状态栏会更新durationChanged信号从audioRecorder对象传递来的持续时间信息。

ui->statusbar->showMessage(tr("Recorded %1 sec").arg(duration / 1000));

示例项目 @ code.qt.io

© 2024 Qt公司有限公司。本文档中包含的贡献均为各自所有者的版权。提供的文档受自由软件基金会发布的GNU自由文档许可证1.3版本的条款约束。Qt及其相应标志为芬兰以及/或世界上其他国家的Qt公司有限公司的商标。所有其他商标均为各自所有者的财产。