Qt AudioInput Stream: & quot; UnknownError & quot;

Я пытаюсь прочитать аудиоданные с микрофона, используя 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 просматривая документацию.

Итак, что я хотел бы знать:

  • Что происходит внутри QAudioInput, когда я вызываю start (), и почему это вызовет предупреждение, показанное выше?
  • Где я могу найти реализацию функции start (), чтобы увидеть, что происходит под капотом?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]