QAudioInput:无法打开音频设备
QAudioInput: failed to open audio device
我正在尝试使用 Qt 多媒体打开麦克风和访问数据。我按照官方的例子Audio Input Example得到了如下代码(只是一个测试程序,没问题我会注入到我的其他项目中)。
环境:Windows10 20H2。 Qt Creator、MinGW 64 位或 Microsoft Visual Studio 2019、MSVC2019 64 位
#include "main_window.h"
#include "ui_main_window.h"
MainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow), AvailableAudioInputDevices(QAudioDeviceInfo::availableDevices(QAudio::AudioInput)), Microphone(nullptr), MicrophoneStream(nullptr)
{
ui->setupUi(this);
/* List all devices */
ui->OutputTextBrowser->setPlainText(QString::fromUtf8("Available audio input devices:"));
for(int i=0;i<AvailableAudioInputDevices.size();i++)
{
ui->OutputTextBrowser->append(AvailableAudioInputDevices.at(i).deviceName());
}
/* Set up data format */
DataFormat.setSampleSize(16);
DataFormat.setSampleRate(16000);
DataFormat.setCodec(QString("audio/pcm"));
DataFormat.setSampleType(QAudioFormat::Float);
DataFormat.setByteOrder(QAudioFormat::LittleEndian);
DataFormat.setChannelCount(2);
/* Check format supported */
if(QAudioDeviceInfo::defaultInputDevice().isFormatSupported(DataFormat))
{
ui->OutputTextBrowser->append(QString::fromUtf8("Supported format."));
}
else
{
ui->OutputTextBrowser->append(QString::fromUtf8("Unsupported format."));
}
/* Open */
Microphone.reset(new QAudioInput(QAudioDeviceInfo::defaultInputDevice(), DataFormat));
MicrophoneStream.reset(Microphone->start());
}
我得到了文本浏览器的输出。
Available audio input devices:
Microphone Array (Realtek(R) Audio)
Stereo Mix (Realtek(R) Audio)
Supported format.
调试控制台的输出。
QAudioInput: failed to open audio device
当然我的程序不能运行,但是这个例子可以正常运行。
我从 Google 中找到了一些可能的原因,但是 none 工作,例如打开 Windows 10 隐私设置。
16 位音频必须是有符号整数。
DataFormat.setSampleType(QAudioFormat::SignedInt);
我正在尝试使用 Qt 多媒体打开麦克风和访问数据。我按照官方的例子Audio Input Example得到了如下代码(只是一个测试程序,没问题我会注入到我的其他项目中)。 环境:Windows10 20H2。 Qt Creator、MinGW 64 位或 Microsoft Visual Studio 2019、MSVC2019 64 位
#include "main_window.h"
#include "ui_main_window.h"
MainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow), AvailableAudioInputDevices(QAudioDeviceInfo::availableDevices(QAudio::AudioInput)), Microphone(nullptr), MicrophoneStream(nullptr)
{
ui->setupUi(this);
/* List all devices */
ui->OutputTextBrowser->setPlainText(QString::fromUtf8("Available audio input devices:"));
for(int i=0;i<AvailableAudioInputDevices.size();i++)
{
ui->OutputTextBrowser->append(AvailableAudioInputDevices.at(i).deviceName());
}
/* Set up data format */
DataFormat.setSampleSize(16);
DataFormat.setSampleRate(16000);
DataFormat.setCodec(QString("audio/pcm"));
DataFormat.setSampleType(QAudioFormat::Float);
DataFormat.setByteOrder(QAudioFormat::LittleEndian);
DataFormat.setChannelCount(2);
/* Check format supported */
if(QAudioDeviceInfo::defaultInputDevice().isFormatSupported(DataFormat))
{
ui->OutputTextBrowser->append(QString::fromUtf8("Supported format."));
}
else
{
ui->OutputTextBrowser->append(QString::fromUtf8("Unsupported format."));
}
/* Open */
Microphone.reset(new QAudioInput(QAudioDeviceInfo::defaultInputDevice(), DataFormat));
MicrophoneStream.reset(Microphone->start());
}
我得到了文本浏览器的输出。
Available audio input devices:
Microphone Array (Realtek(R) Audio)
Stereo Mix (Realtek(R) Audio)
Supported format.
调试控制台的输出。
QAudioInput: failed to open audio device
当然我的程序不能运行,但是这个例子可以正常运行。 我从 Google 中找到了一些可能的原因,但是 none 工作,例如打开 Windows 10 隐私设置。
16 位音频必须是有符号整数。
DataFormat.setSampleType(QAudioFormat::SignedInt);