Я пытаюсь прочитать аудиоданные с микрофона, используя QT API, и у меня возникли некоторые проблемы с настройкой QIODevice, который позволит мне читать данные в буфер.
Ниже мой существующий код:
int main() {
QAudioInput *audio;
// Specifying format
QAudioFormat format;
format.setSampleRate(16000);
format.setChannelCount(1);
format.setSampleSize(8);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::UnSignedInt);
QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice();
qWarning() << "Device being used:" << info.deviceName();
if (!info.isFormatSupported(format)) {
qWarning() << "Default format not supported, trying to use the nearest.";
format = info.nearestFormat(format);
}
// Setting up the input
audio = new QAudioInput(format);
qWarning() << "\nAudio initialisation error:" << audio->error();
qWarning() << "Audio initialisation state:" << audio->state() << "\n";QIODevice *inputStream = audio->start();
qWarning() << "Audio stream start error:" << audio->error();
qWarning() << "Audio stream start state:" << audio->state() << "\n";
if (inputStream->waitForReadyRead(1000) == false) {
qWarning() << inputStream->errorString();
exit(1);
}
char input_data[512];
while (true) {
inputStream->read(input_data,512);
}
return 0;
}
Мой вывод при запуске:
Device being used: "Built-in Microphone"
Audio initialisation error: NoError
Audio initialisation state: StoppedState
QObject::startTimer: Timers can only be used with threads started with QThread
Audio stream start error: NoError
Audio stream start state: IdleState
"Unknown error"
Я уверен, что часть проблемы заключается в ошибке QObject :: startTimer, которая явно связана с чем-то, что происходит внутри объекта QAudioInput, но я не смог отследить, откуда это происходит внутри объекта QAudioInput просматривая документацию.
Итак, что я хотел бы знать:
Задача ещё не решена.
Других решений пока нет …