如何在 QT C++ 中录制和保存音频?

Posted

技术标签:

【中文标题】如何在 QT C++ 中录制和保存音频?【英文标题】:How can I record and save audio in QT C++? 【发布时间】:2017-08-16 11:18:24 【问题描述】:

我正在尝试使用 Qt c++ 录制和保存音频文件,这是我的代码。

QAudioRecorder * audioRecorder = new QAudioRecorder();

if(audioRecorder->state() == audioRecorder->StoppedState)

    // Set recording Settings
    QAudioEncoderSettings settings;
    settings.setCodec("audio/pcm");     // Not sure what to put here
    settings.setSampleRate(16000);
    settings.setBitRate(32);
    settings.setQuality(QMultimedia::HighQuality);
    settings.setEncodingMode(QMultimedia::ConstantQualityEncoding);

    audioRecorder->setEncodingSettings(settings);

    //Set Audio Input
    audioRecorder->setAudioInput(audioRecorder->defaultAudioInput());

    // Sets Output location where to store the file
    QUrl url("hello.wav");
    audioRecorder->setOutputLocation(QUrl::fromLocalFile("hello.wav"));
    audioRecorder->setContainerFormat("mp3");

    audioRecorder->record();

    qDebug()<<audioRecorder->state();

else

    qDebug()<<"stopped";

但它不保存任何文件,而是显示消息no service found for - "org.qt-project.qt.audiosource"。 如何保存音频文件?

【问题讨论】:

【参考方案1】:

您应该安装一些Qt Multimedia Backend - 检查此列表(适合您使用的 Qt 版本)并为您的操作系统选择后端。

【讨论】:

感谢@trivelt,您提供的来源很难开始。你能推荐任何初学者级别的资源吗? 嗯,你用的是哪个操作系统和Qt版本? 我使用的是 ubuntu 16.04,QT 版本是 5.7。 @trivelt 你安装了 gstreamer 吗?如果不试试这个:sudo apt-get install libgstreamer1.0-0 另外,我记得,对于某些 QtMultimedia 功能,您还需要安装其他 gstreamer 插件。如果您输入sudo apt-get install gstreamer1.0 并双击tab,您可以看到可用的插件并尝试安装其中的一些。

以上是关于如何在 QT C++ 中录制和保存音频?的主要内容,如果未能解决你的问题,请参考以下文章

xcode:如何在使用 AVFoundation 录制音频后保存音频文件

在 Xamarin.Forms 中录制语音后如何保存音频文件

如何更改录制音频的音高并在后台保存?

如何在gstreamer中录制音频和视频

如何录制/保存 iPhone 应用程序中正在播放的音频?

如何使用混响效果保存录制的音频