Sur cette page

Qt Multimedia

Image d'icônes multimédia, avec l'aimable autorisation de misirlou du Noun Project

Qt Multimedia se trouve un module complémentaire qui fournit un ensemble complet de types QML et de classes C++ permettant de gérer les contenus multimédias. Il contient une API facile à utiliser pour lire des fichiers audio et vidéo et les afficher à l'écran, ainsi qu'une API complète pour enregistrer de l'audio et de la vidéo à partir de diverses sources, notamment les caméras et microphones du système, les captures d'écran ou de fenêtre, et les tampons mémoire audio ou vidéo.

Les fonctionnalités de ce module sont réparties entre les sous-modules suivants :

Qt MultimediaFournit une API pour des cas d'utilisation spécifiques au multimédia.
Qt Multimedia WidgetsFournit une API multimédia basée sur des widgets.
Qt Spatial AudioFournit une API permettant de mettre en œuvre des champs sonores dans un espace 3D.

Pour commencer

Si vous effectuez une migration de Qt 5 vers Qt 6, consultez la section Modifications apportées à Qt Multimedia.

Si vous découvrez Qt Multimedia, les types QML peuvent être importés dans une application à l'aide de l'instruction suivante dans votre fichier .qml.

import QtMultimedia

Pour lier votre projet aux bibliothèques C++, ajoutez ce qui suit au fichier ` CMakeLists.txt ` de votre projet. Remplacez ` mytarget ` par le nom de votre projet.

find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)

Consultez la section « Compilation d’ Qt Multimedia à partir des sources » pour obtenir des conseils sur la compilation d’ Qt Multimedia à partir des sources.

Présentation générale et sujets importants

Types QML

Le tableau suivant présente certains types QML importants.

TypeDescription
MediaPlayerAjoute une fonctionnalité de lecture audio/vidéo à une scène.
CaptureSessionCrée une session pour la capture audio/vidéo.
CameraAccède à une caméra connectée au système.
AudioInputAccéder à une entrée audio (microphone) connectée au système.
AudioOutputAccéder à une sortie audio (haut-parleur, casque) connectée au système.
VideoOutputAfficher du contenu vidéo.
MediaRecorderEnregistrer du son et de la vidéo à partir de l'CaptureSession.
ImageCaptureCapturer des images fixes à partir de la caméra.
VideoAjoute une fonctionnalité de lecture vidéo à une scène. Utilise les types « MediaPlayer » et « VideoOutput » pour fournir une fonctionnalité de lecture vidéo.
ScreenCaptureCapture un écran.
WindowCaptureCapture une fenêtre de niveau supérieur.
GStreamerVideoSourceSource vidéo GStreamer personnalisée (avec le backend multimédia GStreamer).

Classes C++

Le tableau suivant présente certaines classes C++ importantes.

ClasseDescription
QMediaPlayerLecture d'un média à partir d'une source.
QVideoWidgetAffiche une vidéo provenant d’un lecteur multimédia ou d’une session de capture.
QMediaCaptureSessionCapture audio et vidéo.
QCameraAccéder à une caméra connectée au système
QAudioInputAccéder à une entrée audio (microphone) connectée au système.
QAudioOutputAccéder à une sortie audio (haut-parleur, casque) connectée au système.
QImageCaptureCapturer des images fixes avec une caméra.
QMediaRecorderEnregistrer du contenu multimédia à partir d'une session de capture.
QVideoSinkAccéder à des images vidéo individuelles et les afficher.
QAudioSinkEnvoie des données audio brutes vers un périphérique de sortie audio.
QScreenCaptureCapture un écran.
QWindowCaptureCapture une fenêtre de niveau supérieur.
QVideoFrameInputPermet d’afficher ou d’enregistrer des images vidéo à partir de tampons mémoire.
QAudioBufferInputPrend en charge la lecture ou l'enregistrement audio à partir de tampons mémoire.
QGStreamerVideoSourceSource vidéo GStreamer personnalisée (avec le backend multimédia GStreamer).

Pour la lecture audio et vidéo, les classes ` QMediaPlayer`, ` QAudioOutput` et ` QVideoWidget ` contiennent toutes les fonctionnalités nécessaires. D’autres classes sont dédiées à la capture de contenu audio et vidéo, la classe ` QMediaCaptureSession ` servant de classe centrale pour gérer l’ensemble du processus de capture et d’enregistrement.

Licences et mentions d’attribution

Le module Qt Multimedia est disponible sous des licences commerciales auprès de The Qt Company. Il est également disponible sous des licences de logiciels libres. Depuis Qt 5.6, ces licences de logiciels libres sont la Licence publique générale restreinte GNU, version 3, ou la Licence publique générale GNU, version 2. Consultez la page Licences Qt pour plus de détails.

Par ailleurs, le module « Qt Multimedia » de Qt 6.12.0 peut contenir des modules tiers sous les licences permissives suivantes :

DR Libs, version 0.14.6-snapshot-ee937527

La licence « Unlicense » ou MIT sans attribution

FFmpeg, version 9.0.1

Licence publique générale réduite GNU v2.1 ou ultérieure, licence BSD à 3 clauses « nouvelle » ou « révisée », licence BSD à 2 clauses « simplifiée », licence BSD d’attribution du code source, licence ISC, licence MIT et licence publique Mozilla 2.0

Signalsmith Stretch, version 1.1.0

Licence MIT

Two-Level Segregated Fit, version v3.1

Licence BSD à 3 clauses « New » ou « Revised »

boost

Licence Boost Software 1.0

libjpeg

Licence de l'Independent JPEG Group

zlib

Licence zlib

Veuillez noter que les normes de compression vidéo, telles que la norme de compression multimédia H.264, peuvent être couvertes par des brevets et donner lieu au paiement de redevances. Cela peut s'appliquer à toute implémentation, y compris si celle-ci est fournie en tant que service du système d'exploitation, via une bibliothèque tierce ou l'un des backends de Qt Multimedia. Les licences Qt ne couvrent pas ces redevances.

Remarques sur la plate-forme cible et les backends

Qt Multimedia offre des API multiplateformes conviviales pour la lecture multimédia, l’enregistrement et la gestion des périphériques. L’implémentation des API principales, notamment QMediaDevices, QAudioDevice, QSoundEffect, QAudioSink et QAudioSource, est intégrée à la bibliothèque principale Qt Multimedia, ce qui élimine le besoin de bibliothèques supplémentaires. D’autres API d’ Qt Multimedia sont implémentées à l’aide de bibliothèques de plugins appelées « backends multimédias ». Le backend multimédia principal, basé sur FFmpeg, garantit une fonctionnalité multiplateforme transparente et est utilisé par défaut sur toutes les plateformes, à l’exception de WebAssembly et de Linux embarqué/Boot2Qt. Avec Boot2Qt, le backend par défaut repose sur GStreamer, mais le backend multimédia FFmpeg peut être activé à l’aide de la variable d’environnement QT_MEDIA_BACKEND.

Le backend FFmpeg

Le backend multimédia FFmpeg s’appuie sur les bibliothèques FFmpeg 9.0.1, qui sont incluses dans le pack de développement « Qt Online Installer » et testées par les responsables de maintenance. Les paquets binaires issus du programme d’installation en ligne utilisent une liaison dynamique avec FFmpeg. Par conséquent, les applications doivent soit intégrer les binaires FFmpeg dans leur programme d’installation, soit s’appuyer sur FFmpeg déjà installé sur le système d’exploitation. Les bibliothèques FFmpeg sont automatiquement déployées à l’aide des outils de déploiement de Qt, comme décrit dans la documentation « Déploiement d’applications Qt », sauf sous Linux/X11. Les applications peuvent également déployer leur propre version de FFmpeg, sous forme de bibliothèques partagées ou statiques, à condition que la version majeure de FFmpeg corresponde à celle utilisée par Qt.

Bien qu’ Qt Multimedia utilise le backend multimédia FFmpeg sur la plupart des systèmes d’exploitation, des différences fonctionnelles ou visuelles spécifiques à chaque plateforme peuvent apparaître entre les applications sur différentes plateformes. FFmpeg n’offre pas une prise en charge identique des codecs et des formats sur toutes les plateformes, et les performances des fonctionnalités d’ Qt Multimedia peuvent dépendre d’une prise en charge matérielle disponible uniquement sur certaines plateformes. Par exemple, FFmpeg rencontre des problèmes spécifiques liés à l’accélération matérielle sur les cibles Linux dotées d’architectures ARM. Il est donc recommandé de tester les applications Qt Multimedia sur toutes les plateformes cibles.

Remarque : le projet FFmpeg propose des fonctionnalités sous différentes licences. Les bibliothèques FFmpeg précompilées fournies via le programme d’installation en ligne n’incluent que les fonctionnalités conformes aux licences permissives répertoriées dans la section « Licences et attributions ».

Pour faciliter le développement et le débogage, certaines fonctionnalités de FFmpeg sont configurables via des variables d’environnement faisant partie de l’API privée Qt Multimedia.

Backends natifs

Pour assurer la compatibilité avec les applications existantes, nous maintenons des backends multimédias natifs pour chaque système d’exploitation :

  • Backend GStreamer sur Linux embarqué
  • AVFoundation sur macOS et iOS
  • Windows Media Foundation sous Windows (obsolète depuis Qt 6.10)
  • Framework MediaCodec sur Android
  • WebAudio et WebVideo sur WebAssembly

Remarque : le backend multimédia FFmpeg est le backend par défaut, sauf sur WebAssembly, où les backends natifs restent disponibles mais avec une prise en charge limitée. Le backend GStreamer n'est disponible que sous Linux et n'est recommandé que pour les applications embarquées.

Remarque : MediaCodec sur Android est obsolète depuis Qt 6.8 et sera supprimé dans la prochaine version majeure.

Remarque : le backend multimédia Windows, basé sur Windows Media Foundation, est déprécié depuis Qt 6.10 et sera supprimé dans la prochaine version majeure.

Les responsables de Qt s'efforceront de corriger les problèmes critiques liés aux backends natifs, mais ne garantissent pas la correction des problèmes mineurs, notamment les comportements incohérents d'une plateforme à l'autre. Les nouvelles fonctionnalités ne seront implémentées que sur le backend multimédia FFmpeg, à l'exception de WebAssembly.

Le backend GStreamer dispose de certaines API privées permettant un contrôle plus fin. Cependant, il existe des bogues connus dans le backend GStreamer. Vous trouverez plus de détails dans les notes de plate-forme concernant le backend GStreamer.

Les limitations des backends seront documentées, et leur état sera mis à jour dans les classes correspondantes.

Changement de backend

En cas de problèmes avec le backend FFmpeg par défaut, nous vous suggérons de tester un backend natif. Vous pouvez passer à un backend natif en définissant la variable d'environnement ` QT_MEDIA_BACKEND ` sur ` windows`, ` gstreamer ` (sous Linux embarqué), ` darwin ` (sous macOS et iOS) ou ` android` :

export QT_MEDIA_BACKEND=darwin

Pour forcer l’utilisation de FFmpeg comme backend, définissez la variable sur ffmpeg:

export QT_MEDIA_BACKEND=ffmpeg

Lors de l'étape de compilation de Qt Multimedia, le backend multimédia par défaut peut être configuré via la variable CMake QT_DEFAULT_MEDIA_BACKEND.

Remarques sur les plateformes cibles

Les pages suivantes répertorient les problèmes rencontrés sur certaines plateformes cibles.

Autorisations

À partir de Qt 6.6, le module Qt Multimedia utilise la nouvelle API QPermission pour gérer les autorisations camera et microphone. Cela signifie que Qt ne demande plus ces autorisations ; cette opération doit donc être effectuée directement depuis l'application cliente.

Veuillez vous reporter à la page « Autorisations d’application » pour découvrir un exemple d’intégration de la nouvelle API QPermission dans l’application.

Référence et exemples

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