Sur cette page

Exemple d'enregistreur audio

Découverte des périphériques disponibles et des codecs pris en charge.

L'exemple «Enregistreur audio » montre comment identifier les périphériques disponibles et les codecs pris en charge, ainsi que l'utilisation de la classe QAudioRecorder.

Panneau de paramètres permettant de choisir l'entrée audio, le codec et le type de format

Exécution de l’exemple

Vous pouvez exécuter l'exemple à partir de :

Affichage de la fenêtre et des paramètres audio

Nous affichons une fenêtre permettant à l’utilisateur de sélectionner l’entrée audio, le codec, le conteneur, la fréquence d’échantillonnage et les canaux appropriés. Elle permet de définir soit la qualité, soit le débit binaire. Enfin, le fichier de sortie peut être sélectionné et l’enregistrement peut démarrer.

Les listes sont remplies à l’aide des méthodes suivantes :

Le curseur de qualité est réglable de 0 (zéro) à QMediaRecorder::VeryHighQuality, avec une valeur par défaut de QMediaRecorder::NormalQuality, tandis que les valeurs de débit binaire sont codées en dur dans la liste.

Enregistrement audio

Pour enregistrer du son, il suffit de créer un objet QAudioRecorder,

audioRecorder = new QAudioRecorder(this);

et de configurer les listes comme décrit ci-dessus. Le texte des boutons d’enregistrement et de pause change en fonction de l’ state de l’objet audioRecorder. Cela signifie que si l’état est QMediaRecorder::StoppedState, le texte des boutons sera « Enregistrer » et « Pause ». Dans l’ QMediaRecorder::RecordingState, le bouton d’enregistrement affichera le texte « Arrêter », et dans l’ QMediaRecorder::PausedState, le bouton de pause affichera le texte « Reprendre ».

Appuyer sur les boutons entraînera également une bascule en fonction de l’état. Si l’enregistrement est arrêté, appuyer sur le bouton d’enregistrement définira les paramètres d’encodage et le conteneur sur l’objet audioRecorder, puis lancera l’enregistrement à l’aide de la méthode record().

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();

Pendant l’enregistrement, la barre d’état de l’application est mise à jour avec les informations de durée provenant du signal « durationChanged » de l’objet « audioRecorder ».

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

Exemple de projet @ 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.