Beispiel für einen Audiorekorder

Erkennen der verfügbaren Geräte und unterstützten Codecs.

Audio Recorder demonstriert, wie die verfügbaren Geräte und unterstützten Codecs identifiziert werden können und wie die Klasse QAudioRecorder verwendet wird.

Ausführen des Beispiels

Zum Ausführen des Beispiels von Qt Creatorzu starten, öffnen Sie den Modus Welcome und wählen Sie das Beispiel unter Examples aus. Weitere Informationen finden Sie unter Erstellen und Ausführen eines Beispiels.

Anzeige des Fensters und der Audioeinstellungen

Es wird ein Fenster angezeigt, in dem der Benutzer den entsprechenden Audioeingang, Codec, Container, die Abtastrate und die Kanäle auswählen kann. Es ermöglicht die Einstellung von Qualität und Bitrate. Schließlich kann die Ausgabedatei ausgewählt und die Aufnahme gestartet werden.

Die Listen werden mit den folgenden Methoden ausgefüllt:

Der Schieberegler für die Qualität reicht von 0 (Null) bis QMediaRecorder::VeryHighQuality mit einem Standardwert von QMediaRecorder::NormalQuality, während die Bitratenboxen in der Liste fest codiert sind.

Audio aufnehmen

Um Audio aufzunehmen, erstellen wir einfach ein QAudioRecorder Objekt,

audioRecorder = new QAudioRecorder(this);

und richten die Listen wie oben beschrieben ein. Der Text auf den Aufnahme- und Pausentasten wird in Abhängigkeit von state des audioRecorder Objekts umgeschaltet. Das heißt, wenn der Status QMediaRecorder::StoppedState ist, lautet der Text der Schaltflächen "Aufnahme" und "Pause". In QMediaRecorder::RecordingState hat die Aufnahmetaste den Text "Stop" und in QMediaRecorder::PausedState hat die Pausentaste den Text "Resume".

Das Drücken der Tasten führt auch zu einer Umschaltung je nach Status. Wenn die Aufnahme gestoppt ist, werden durch Drücken der Aufnahmetaste die Codierungseinstellungen und der Container auf dem Objekt audioRecorder festgelegt und die Aufnahme mit der Methode record() gestartet.

QMediaFormat format;
format.setCodec(boxValue(ui->audioCodecBox).toString());
audioRecorder->setMediaFormat(format);
audioRecorder->setSampleRate(boxValue(ui->sampleRateBox).toInt());
audioRecorder->setBitRate(boxValue(ui->bitrateBox).toInt());
audioRecorder->setQuality(QMediaRecorder::EncodingQuality(ui->qualitySlider->value()));
audioRecorder->setEncodingMode(ui->constantQualityRadioButton->isChecked() ?
                         QMediaRecorder::ConstantQualityEncoding :
                         QMediaRecorder::ConstantBitRateEncoding);

QString container = boxValue(ui->containerBox).toString();

audioRecorder->record();

Während der Aufnahme wird die Statusleiste der Anwendung mit den Dauerinformationen des durationChanged Signals vom audioRecorder Objekt aktualisiert.

ui->statusbar->showMessage(tr("Recorded %1 sec").arg(duration / 1000));

Beispielprojekt @ code.qt.io

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.