Sur cette page

MediaRecorder QML Type

Pour l'encodage et l'enregistrement de médias générés dans un CaptureSession. Plus....

Import Statement: import QtMultimedia
In C++: QMediaRecorder

Propriétés

Signaux

Méthodes

Description détaillée

Utilisez l'élément MediaRecorder dans un site CaptureSession pour encoder et enregistrer :

  • de l'audio capturé à partir d'une interface audio (comme un microphone ou une entrée de ligne).
  • Vidéo capturée à partir d'une caméra, d'un écran ou d'une fenêtre d'application.

Les performances de l'encodage et de l'enregistrement vidéo sont limitées par le matériel, le système d'exploitation, les pilotes graphiques installés et le format vidéo d'entrée. Si Camera, ScreenCapture ou WindowCapture produit des images vidéo plus rapidement que MediaRecorder ne peut les encoder et les enregistrer, l'enregistreur peut perdre certaines images. Cela risque de se produire si la résolution de l'image d'entrée est élevée, 4K par exemple, et que l'encodage accéléré par le matériel n'est pas disponible.

Le code ci-dessous montre une session de capture simple contenant un MediaRecorder utilisant la caméra et l'entrée audio par défaut.

CaptureSession {
    id: captureSession
    camera: Camera {
        id: camera
        active: true
    }
    audioInput: AudioInput {}
    recorder: MediaRecorder {
        id: recorder
    }
}

Le code ci-dessous montre comment l'enregistrement peut être démarré et arrêté.

CameraButton {
    text: "Record"
    visible: recorder.recorderState !== MediaRecorder.RecordingState
    onClicked: recorder.record()
}

CameraButton {
    id: stopButton
    text: "Stop"
    visible: recorder.recorderState === MediaRecorder.RecordingState
    onClicked: recorder.stop()
}

Voir également CaptureSession, Camera, ScreenCapture, WindowCapture, AudioInput, et ImageCapture.

Documentation sur les propriétés

actualLocation : url [read-only]

L'emplacement actuel du dernier contenu multimédia.

L'emplacement actuel est réinitialisé lorsqu'une nouvelle adresse outputLocation est attribuée. Lorsque record() est invoqué, l'enregistreur génère l'emplacement actuel en se basant sur les règles suivantes.

  • Si outputLocation est vide, un répertoire ou un fichier sans extension, l'enregistreur génère l'extension appropriée en fonction du format de média sélectionné et des types MIME du système.
  • Si outputLocation est un répertoire, l'enregistreur génère un nouveau nom de fichier à l'intérieur de celui-ci.
  • Si outputLocation est vide, l'enregistreur génère un nouveau nom de fichier dans le répertoire spécifique au système pour l'audio ou la vidéo.
  • L'enregistreur génère l'emplacement actuel avant d'émettre recorderStateChanged(RecordingState).

audioBitRate : int [since 6.6]

Cette propriété indique le débit du flux audio compressé en bits par seconde.

Cette propriété a été introduite dans Qt 6.6.

audioChannelCount : int [since 6.6]

Cette propriété indique le nombre de canaux audio.

Cette propriété a été introduite dans Qt 6.6.

audioSampleRate : int [since 6.6]

Cette propriété contient le taux d'échantillonnage audio en Hz.

Cette propriété a été introduite dans Qt 6.6.

duration : qint64 [read-only]

Cette propriété indique la durée du média enregistré en millisecondes.

encodingMode : enumeration [since 6.6]

Cette propriété contient le mode d'encodage.

Cette propriété a été introduite dans Qt 6.6.

Voir aussi QMediaRecorder::EncodingMode.

error : enumeration [read-only]

Cette propriété contient l'état d'erreur actuel de l'enregistreur de médias.

ConstanteDescription
MediaRecorder.NoErrorPas d'état d'erreur.
MediaRecorder.ResourceErrorRessources système insuffisantes
MediaRecorder.FormatErrorle format actuel n'est pas pris en charge.
MediaRecorder.OutOfSpaceErrorIl n'y a plus d'espace sur le périphérique.
MediaRecorder.LocationNotWriteableL'emplacement de sortie n'est pas accessible en écriture.

errorString : string [read-only]

Cette propriété contient une chaîne de caractères décrivant l'état actuel de l'erreur.

Voir aussi error.

mediaFormat : mediaFormat

Cette propriété contient le MediaFormat actuel de l'enregistreur.

metaData : mediaMetaData

Cette propriété contient les métadonnées associées à l'enregistrement.

Lorsqu'un enregistrement est lancé, toutes les métadonnées attribuées seront attachées à cet enregistrement.

Remarque : assurez-vous que les métadonnées sont correctement attribuées en les attribuant avant de lancer l'enregistrement.

Voir également mediaMetaData.

outputLocation : url

L'emplacement de destination du contenu multimédia.

La définition de l'emplacement peut échouer, par exemple lorsque le service ne prend en charge que les emplacements du système de fichiers local, mais qu'une URL réseau a été transmise. Si l'opération échoue, le signal errorOccurred() est émis.

L'emplacement de sortie peut être vide, un répertoire ou un fichier. Le chemin d'accès à un répertoire ou à un fichier peut être relatif ou absolu. La méthode record() génère l'emplacement réel en fonction de l'emplacement de sortie spécifié et des paramètres spécifiques au système. Reportez-vous à la description de la propriété actualLocation pour plus de détails.

Voir également actualLocation et errorOccurred().

quality : enumeration

Énumère les niveaux d'encodage de la qualité.

ConstanteValeur
MediaRecorder.VeryLowQuality
MediaRecorder.LowQuality
MediaRecorder.NormalQuality
MediaRecorder.HighQuality
MediaRecorder.VeryHighQuality

recorderState : enumeration [read-only]

Cette propriété contient l'état actuel de l'enregistreur de médias.

La propriété state représente la demande de l'utilisateur et est modifiée de manière synchrone lors des appels record(), pause() ou stop(). RecorderSstate peut également changer de manière asynchrone lorsque l'enregistrement échoue.

ConstanteDescription de l'état de l'enregistreur
MediaRecorder.StoppedStateL'enregistreur n'est pas actif.
MediaRecorder.RecordingStateL'enregistrement est demandé.
MediaRecorder.PausedStateL'enregistreur est en pause.

videoBitRate : int [since 6.6]

Cette propriété indique le débit du flux vidéo compressé en bits par seconde.

Cette propriété a été introduite dans Qt 6.6.

videoFrameRate : real [since 6.6]

Cette propriété contient la fréquence d'images vidéo.

Une valeur de 0 indique que l'enregistreur doit faire un choix optimal basé sur ce qui est disponible à partir de la source vidéo et les limitations du codec.

Cette propriété a été introduite dans Qt 6.6.

videoResolution : Size [since 6.6]

Cette propriété contient la résolution de la vidéo encodée.

Définissez une taille vide pour que l'enregistreur choisisse une résolution optimale basée sur ce qui est disponible à partir de la source vidéo et les limitations du codec.

Cette propriété a été introduite dans Qt 6.6.

Documentation sur le signal

actualLocationChanged(const QUrl &location)

Signale que le site location du support enregistré a changé.

Ce signal est généralement émis au début de l'enregistrement.

Remarque : le gestionnaire correspondant est onActualLocationChanged.

durationChanged(qint64 duration)

Signale que le site duration du support enregistré a changé.

Remarque : le gestionnaire correspondant est onDurationChanged.

errorOccurred(Error error, const QString &errorString)

Signale qu'une erreur s'est produite à l'adresse error.

Le message errorString contient une description de l'erreur.

Remarque : le gestionnaire correspondant est onErrorOccurred.

metaDataChanged()

Signale que les méta-données d'un objet média ont changé.

Si plusieurs éléments de méta-données sont modifiés, metaDataChanged() n'est émise qu'une seule fois.

Remarque : le gestionnaire correspondant est onMetaDataChanged.

recorderStateChanged(RecorderState state)

Signale que l'adresse state d'un enregistreur de médias a changé.

Remarque : le gestionnaire correspondant est onRecorderStateChanged.

Documentation de la méthode

void pause()

Interrompt l'enregistrement.

L'état de l'enregistreur devient QMediaRecorder.PausedState.

Selon la plate-forme, la mise en pause de l'enregistrement peut ne pas être prise en charge. Dans ce cas, l'état de l'enregistreur reste inchangé.

void record()

Démarre l'enregistrement.

Bien que l'état de l'enregistreur passe immédiatement à MediaRecorder.RecordingState, l'enregistrement peut commencer de manière asynchrone.

Si l'enregistrement échoue, le signal error() est émis et l'état de l'enregistreur est réinitialisé à QMediaRecorder.StoppedState.

Cette méthode met à jour actualLocation conformément à ses règles de génération.

Remarque : sur les appareils mobiles, l'enregistrement se fait dans l'orientation que l'appareil avait lorsqu'il a appelé record et il est verrouillé pendant la durée de l'enregistrement. Pour éviter les artefacts sur l'interface utilisateur, nous recommandons de verrouiller l'interface utilisateur dans la même orientation tant que l'enregistrement est en cours en utilisant la propriété contentOrientation de la fenêtre et de la déverrouiller à nouveau une fois l'enregistrement terminé.

void stop()

Arrête l'enregistrement.

L'enregistreur arrête l'enregistrement. Le traitement des données vidéo et audio en attente peut toutefois prendre un certain temps. L'enregistrement est terminé lorsque l'état de l'enregistreur de médias passe à QMediaRecorder::StoppedState.

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