Может ли входной звук обрабатываться несколькими приложениями одновременно с помощью Qt?

#c #qt

#c #qt

Вопрос:

Я хотел бы использовать QAudioRecorder для записи звука с микрофона. Мой вопрос в том, должен ли быть продолжающийся вызов Skype или другое приложение попытается использовать микрофон, приведет ли это к какой-либо ошибке или и это приложение, и мое приложение получат одинаковые входные аудиоданные?

Аналогичным образом, могу ли я использовать QCamera и QMediaRecorder для доступа к веб-камере, которая уже используется?

Ответ №1:

Да, это будет работать просто отлично, ошибок не будет. Оба приложения будут получать одинаковые входные аудиоданные. Я тестировал одновременную запись одного и того же, используя программу диктофона Windows и простую программу Qt, созданную с помощью следующего кода, и результатом было то, что в обоих выходных файлах звук был записан правильно:

 #include <QApplication>
#include <QAudioRecorder>
#include <QPushButton>
#include <QUrl>

int main(int argc, char **argv){
    QApplication app(argc, argv);
    QAudioRecorder *audioRecorder = new QAudioRecorder;

    QAudioEncoderSettings audioSettings;
    audioSettings.setCodec("audio/amr");
    audioSettings.setQuality(QMultimedia::HighQuality);

    audioRecorder->setEncodingSettings(audioSettings);
    audioRecorder->setOutputLocation(QUrl::fromLocalFile("C:\Users\dduck\Desktop\test.amr"));

    QPushButton b("Start");

    QObject::connect(amp;b, amp;QPushButton::clicked, [amp;](){
        if(b.text() == "Start"){
            audioRecorder->record();
            b.setText("Stop");
        }
        else{
            audioRecorder->stop();
            app.quit();
        }
    });

    b.show();
    return app.exec();
}
  

Я предполагаю, что это также сработает, если вы запустите эту программу одновременно со Skype.

Итак, входной звук может обрабатываться программой Qt одновременно с его обработкой другими программами.