Sur cette page

Qt Multimedia

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

Qt Multimedia est un module complémentaire qui fournit un riche ensemble de types QML et de classes C++ pour gérer le contenu multimédia. 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 l'enregistrement audio et vidéo à partir de diverses sources, y compris les caméras et les microphones du système, les captures d'écran ou de fenêtre, et les tampons de mémoire audio ou vidéo.

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

Qt MultimediaFournit une API pour les 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 pour la mise en œuvre de champs sonores dans l'espace 3D.

Pour commencer

Si vous passez de Qt 5 à Qt 6, consultez les modifications apportées à Qt Multimedia.

Si vous n'avez jamais utilisé 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 établir un lien avec les bibliothèques C++, ajoutez ce qui suit au fichier CMakeLists.txt de votre projet. Remplacez my_project par le nom de votre projet.

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

Voir Construire Qt Multimedia à partir des sources pour obtenir des conseils sur la construction de Qt Multimedia à partir des sources.

Aperçus et sujets importants

Types de QML

Le tableau suivant présente quelques types de QML importants.

TypeDescription
MediaPlayerAjouter une fonctionnalité de lecture audio/vidéo à une scène.
CaptureSessionCréer une session de capture audio/vidéo.
CameraAccéder à 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 un contenu vidéo.
MediaRecorderEnregistrer de l'audio/vidéo à partir du site CaptureSession.
ImageCaptureCapturer des images fixes à partir de la caméra.
VideoAjouter 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 premier niveau.

Classes C

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

ClasseDescription de la classe
QMediaPlayerLecture d'un média à partir d'une source.
QVideoWidgetAffichage d'une vidéo à partir 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 à l'aide d'un appareil photo.
QMediaRecorderEnregistrer du contenu multimédia à partir d'une session de capture.
QVideoSinkAccéder à des images vidéo individuelles et les restituer.
QAudioSinkEnvoyer des données audio brutes à un périphérique de sortie audio.
QScreenCaptureCapture un écran.
QWindowCaptureCapture une fenêtre de premier niveau.
QVideoFrameInputPermet d'afficher ou d'enregistrer des images vidéo à partir de tampons de mémoire.
QAudioBufferInputPrend en charge la lecture ou l'enregistrement de données audio à partir de mémoires tampons.

Pour la lecture de l'audio et de la vidéo, 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, QMediaCaptureSession étant la classe centrale qui gère l'ensemble du processus de capture et d'enregistrement.

Licences et attributions

Le module Qt Multimedia est disponible sous licence commerciale auprès de The Qt Company. En outre, il est disponible sous des licences de logiciel libre. Depuis Qt 5.6, ces licences de logiciel libre sont la GNU Lesser General Public License, version 3, ou la GNU General Public License, version 2. Voir Qt Licensing pour plus de détails.

En outre, Qt Multimedia dans Qt 6.11.0 peut contenir des modules tiers sous les licences permissives suivantes :

DR Libs, version 0.14.5

The Unlicense ou MIT No Attribution

FFmpeg, version 7.1.3

GNU Lesser General Public License v2.1 ou ultérieure et BSD 3-Clause "New" or "Revised" License et BSD 2-Clause "Simplified" License et BSD Source Code Attribution et ISC License et MIT License et Mozilla Public License 2.0

Signalsmith Stretch, version 1.0.0

Licence MIT

Two-Level Segregated Fit, version v3.1

Licence BSD à 3 clauses "nouvelle" ou "révisée

boost

Boost Software License 1.0

libjpeg

Licence du groupe JPEG indépendant

zlib

Licence zlib

Notez 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 à des redevances. Cela peut s'appliquer à toute implémentation, même si l'implémentation est fournie en tant que service du système d'exploitation, par le biais d'une bibliothèque tierce ou de l'un des backends de Qt Multimedia. Les licences Qt ne couvrent pas ces frais.

Notes sur la plate-forme cible et le backend

Qt Multimedia Qt offre des API conviviales et multiplateformes pour la lecture, l'enregistrement et la gestion des appareils multimédias. La mise en œuvre des API de base, notamment QMediaDevices, QAudioDevice, QSoundEffect, QAudioSink et QAudioSource, est intégrée dans la bibliothèque principale Qt Multimedia, ce qui évite d'avoir recours à des bibliothèques supplémentaires. D'autres API de Qt Multimedia sont mises en œuvre à l'aide de bibliothèques d'extension connues sous le nom de "media backends". Le principal backend média, construit sur FFmpeg, garantit une fonctionnalité multiplateforme transparente et est la valeur par défaut sur toutes les plateformes, à l'exception de WebAssembly et de Linux/Boot2Qt embarqué. Avec Boot2Qt, le backend par défaut est construit au-dessus de GStreamer, mais le backend média FFmpeg peut être activé en utilisant la variable d'environnement QT_MEDIA_BACKEND.

Le backend FFmpeg

Le backend média FFmpeg s'appuie sur les bibliothèques FFmpeg 7.1.3, qui sont incluses dans le site Qt Online Installer et testées par les mainteneurs. Les paquets binaires de l'installateur en ligne utilisent la liaison dynamique avec FFmpeg. Par conséquent, les applications doivent soit intégrer les binaires FFmpeg dans leur programme d'installation, soit dépendre de l'installation de FFmpeg 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 des applications Qt, sauf pour 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 à la version utilisée par Qt.

Bien que Qt Multimedia exploite le backend média FFmpeg sur la plupart des systèmes d'exploitation, des différences fonctionnelles ou visuelles spécifiques à la plate-forme peuvent apparaître entre les applications sur différentes plates-formes. FFmpeg n'offre pas une prise en charge identique des codecs et des formats sur toutes les plateformes, et les performances des fonctionnalités de Qt Multimedia peuvent dépendre d'une prise en charge matérielle qui n'est disponible que sur certaines plateformes. Par exemple, FFmpeg rencontre des problèmes spécifiques avec l'accélération matérielle sur les cibles Linux avec des architectures ARM. Il est donc recommandé de tester les applications Qt Multimedia sur toutes les plateformes cibles.

Note : Le projet FFmpeg fournit des fonctionnalités sous différentes licences. Les bibliothèques FFmpeg préconstruites qui sont fournies par l'installateur en ligne n'incluent que des fonctionnalités qui sont en accord avec les licences permissives listées sous Licences et Attributions.

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

Backends natifs

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

  • GStreamer sur Embedded Linux
  • AVFoundation sur macOS et iOS
  • Windows Media Foundation sur Windows (obsolète depuis Qt 6.10)
  • MediaCodec framework sur Android
  • WebAudio et WebVideo sur WebAssembly

Note : Le backend FFmpeg est le backend par défaut sauf sur WebAssembly, les backends natifs sont toujours disponibles mais avec un support limité. 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.

Note : Le backend Windows media construit sur Windows Media Foundation est obsolète à partir de Qt 6.10 et sera supprimé dans la prochaine version majeure.

Les responsables de Qt s'efforceront de résoudre les problèmes critiques avec les backends natifs, mais ne garantissent pas la résolution des problèmes mineurs, y compris les comportements incohérents entre les plates-formes. Les nouvelles fonctionnalités ne seront implémentées que sur le backend mé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. Plus de détails peuvent être trouvés dans les notes de plateforme pour le backend GStreamer.

Les limitations des backends seront documentées et leur statut sera maintenu dans les classes respectives.

Changement de backend

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

export QT_MEDIA_BACKEND=darwin

Pour forcer l'assignation de FFmpeg comme backend utilisé, définissez la variable à ffmpeg:

export QT_MEDIA_BACKEND=ffmpeg

Lors de la compilation de Qt Multimedia, le backend média par défaut peut être configuré via la variable cmake QT_DEFAULT_MEDIA_BACKEND.

Notes sur les plates-formes cibles

Les pages suivantes répertorient les problèmes liés à des plates-formes cibles spécifiques.

Permissions

À partir de Qt 6.6, le module Qt Multimedia utilise la nouvelle API QPermission pour gérer les permissions camera et microphone. Cela signifie que Qt lui-même ne demande plus ces permissions, ce qui doit être fait directement à partir de l'application cliente.

Veuillez vous référer à la page Permissions de l'application pour un exemple d'intégration de la nouvelle API QPermission dans l'application.

Références 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.