音频录制示例
发现可用的设备和支持的编解码器。
音频录制器展示了如何识别可用设备和支持的编解码器,以及如何使用QAudioRecorder类。
运行示例
要从Qt Creator中运行此示例,请打开欢迎模式,然后从示例中选择示例。有关更多信息,请访问构建和运行示例。
显示窗口和音频设置
我们显示一个窗口,用户可以在其中选择合适的音频输入、编解码器、容器、采样率和声道。它允许设置质量或比特率。最后,可以选择输出文件并开始录制。
以下方法用于填充列表
- QMediaDevices::audioInputs()
- QMediaFormat::supportedAudioCodecs
- QMediaFormat::supportedFileFormats
- QAudioDevice::maximumSampleRate()
- QAudioDevice::minimumSampleRate()
质量滑块从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));
© 2024 Qt公司有限公司。本文档中包含的贡献均为各自所有者的版权。提供的文档受自由软件基金会发布的GNU自由文档许可证1.3版本的条款约束。Qt及其相应标志为芬兰以及/或世界上其他国家的Qt公司有限公司的商标。所有其他商标均为各自所有者的财产。