Auf dieser Seite

Beispiel für einen Audio-Recorder

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

Das Beispiel„Audio Recorder“ veranschaulicht, wie man die verfügbaren Geräte und unterstützten Codecs ermittelt und wie man die Klasse „QAudioRecorder“ verwendet.

Einstellungsfenster zur Auswahl des Audioeingangs, des Codecs und des Formats

Ausführen des Beispiels

Sie können das Beispiel wie folgt ausführen:

Anzeige des Fensters und der Audioeinstellungen

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

Die Listen werden mithilfe der folgenden Methoden gefüllt:

Der Qualitätsregler ist auf Werte von 0 (Null) bis QMediaRecorder::VeryHighQuality eingestellt, wobei der Standardwert QMediaRecorder::NormalQuality lautet, während die Bitratenwerte fest in die Liste eingetragen 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 Schaltflächen „Aufnahme“ und „Pause“ wechselt je nach dem state des audioRecorder -Objekts. Das bedeutet: Wenn der Zustand „ QMediaRecorder::StoppedState “ ist, lautet der Text auf den Schaltflächen „Aufnahme“ und „Pause“. Bei „ QMediaRecorder::RecordingState “ trägt die Aufnahmeschaltfläche den Text „Stopp“, und bei „ QMediaRecorder::PausedState “ trägt die Pausenschaltfläche den Text „Fortsetzen“.

Das Drücken der Schaltflächen bewirkt zudem je nach Status eine Umschaltung. Ist die Aufnahme gestoppt, werden durch Drücken der Aufnahmetaste die Kodierungseinstellungen und der Container im 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 Informationen zur Dauer aktualisiert, die vom Signal „ durationChanged “ des Objekts „ audioRecorder “ stammen.

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

Beispielprojekt @ code.qt.io

© 2026 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.