Vue d'ensemble de la vidéo
Caractéristiques de la vidéo
Qt Multimedia propose des classes C++ de haut et de bas niveau pour la lecture et la manipulation des données vidéo, ainsi que des types QML pour la lecture et l'enregistrement. Certaines des classes présentées ici se recoupent avec celles présentées dans les sections Vue d'ensemble de la caméra et Vue d'ensemble de l'audio.
Détails de l'implémentation vidéo
Lecture de vidéos en C++
Vous pouvez utiliser la classe QMediaPlayer pour décoder un fichier vidéo et l'afficher à l'aide de QVideoWidget, QGraphicsVideoItem, ou d'une classe personnalisée.
Voici un exemple d'utilisation de la classe QVideoWidget:
player = new QMediaPlayer; player->setSource(QUrl("http://example.com/myclip1.mp4")); videoWidget = new QVideoWidget; player->setVideoOutput(videoWidget); videoWidget->show(); player->play();
Et un exemple avec QGraphicsVideoItem:
player = new QMediaPlayer(this); QGraphicsVideoItem *item = new QGraphicsVideoItem; player->setVideoOutput(item); graphicsView->scene()->addItem(item); graphicsView->show(); player->setSource(QUrl("http://example.com/myclip4.ogv")); player->play();
Lecture d'une vidéo en QML
Vous pouvez utiliser VideoOutput pour rendre le contenu fourni par MediaPlayer ou Camera. VideoOutput est un composant visuel qui peut être intégré dans une QQuickScene ou Window, tandis que le décodage des médias et le contrôle de la lecture sont gérés par MediaPlayer ou CaptureSession. Un élément Video a été fourni pour des raisons de commodité. Il combine les éléments MediaPlayer, VideoOutput et AudioOutput en un seul élément.
Travailler avec des images vidéo de bas niveau
Qt Multimedia propose un certain nombre de classes de bas niveau pour faciliter la manipulation des images vidéo. Ces classes sont principalement utilisées lors de l'écriture d'un code qui traite des images vidéo ou de caméra (par exemple, la détection de codes-barres ou l'application d'un effet de vignette fantaisiste), ou qui doit afficher la vidéo d'une manière spéciale qui n'est pas prise en charge par ailleurs.
La classe QVideoFrame encapsule une image vidéo et permet de mapper son contenu dans la mémoire du système à des fins de manipulation ou de traitement. L'utilisation de votre propre QVideoSink vous permet de recevoir ces trames de QMediaPlayer et QCamera.
Enregistrement vidéo
La classe centrale pour tout type de capture ou d'enregistrement audio et vidéo est QMediaCaptureSession (ou le type QML CaptureSession ). Vous pouvez connecter un QCamera (Camera in QML) et un QMediaRecorder (MediaRecorder) à la session, puis demander à l'enregistreur de médias de commencer l'enregistrement.
Formats de médias pris en charge
Les formats de médias pris en charge dépendent de la configuration du système cible.
Windows
Par défaut, ce qui est disponible sur une cible MS Windows dépend de la version de Windows Media Player fournie avec le système d'exploitation. Voir la documentation de Windows Media Player pour des informations officielles.
Indépendamment de Windows Media Player, il existe bien sûr de nombreux packs de codecs qui peuvent être installés. Voir le site du guide des codecs pour quelques exemples.
Android
Voir les formats de médias pris en charge par Android pour cette information.
Linux
Sous Linux, il s'agit d'installer les plugins GStreamer appropriés.
Plugins GStreamer minimum requis
- gstreamer1.0-plugins-base
- gstreamer1.0-plugins-good
- gstreamer1.0-plugins-pulseaudio
Pour une cible Linux, il est fortement recommandé d'avoir gstreamer1.0-libav pour une bonne couverture des codecs et gstreamer1.0-vaapi pour obtenir l'accélération matérielle.
Sur Linux embarqué, l'ensemble des plugins requis peut être quelque peu différent.
Détermination des formats de médias pris en charge au moment de l'exécution
Vous pouvez déterminer les formats disponibles sur un système cible au moment de l'exécution à l'aide de l'API statique QMediaFormat.
- Utilisez QMediaFormat::isSupported() sur un site QMediaFormat::ConversionMode pour demander un format spécifique.
- Utilisez QMediaFormat::supportedFileFormats() sur un site construit par défaut QMediaFormat pour obtenir tous les formats de fichiers pris en charge.
Exemples de formats
Des exemples en C++ et en QML sont disponibles.
Exemples C++
Montre comment capturer une image fixe ou enregistrer une vidéo. | |
Lecture de fichiers audio et vidéo à l'aide de Qt Widgets. |
Exemples QML
Lecture de fichiers audio et vidéo à l'aide de Qt Quick | |
Lecture de fichiers audio et vidéo à l'aide du type MediaPlayer de QML. | |
Enregistrement audio et vidéo à l'aide de Qt Quick. |
Documentation de référence
Classes C++
Abstraction pour les données vidéo | |
La structure QAbstractVideoBuffer::MapData décrit la disposition du plan mappé. | |
Utilisée pour obtenir les informations de base d'une fenêtre capturable | |
Permet la capture de contenu audio et vidéo | |
Permet la lecture de fichiers multimédias | |
Permet d'encoder et d'enregistrer une session de capture | |
Permet le contrôle de bas niveau des options de lecture des médias | |
Cette classe est utilisée pour capturer un écran | |
Représente une image de données vidéo | |
Spécifie le format de flux d'une surface de présentation vidéo | |
Utilisée pour fournir des cadres vidéo personnalisés à QMediaRecorder ou une sortie vidéo via QMediaCaptureSession | |
Représente un puits générique pour les données vidéo | |
Widget qui présente la vidéo produite par un objet média | |
Cette classe est utilisée pour capturer une fenêtre |
Types QML
Le type est utilisé pour obtenir les éléments de base d'une fenêtre disponible pour la capture via WindowCapture. | |
Permet la capture de contenu audio et vidéo | |
Ajoute la lecture de médias à une scène | |
Permet d'encoder et d'enregistrer les médias générés dans une CaptureSession | |
Options de lecture de médias de bas niveau | |
Ce type est utilisé pour capturer un écran | |
Un type pratique pour afficher une vidéo spécifique | |
Rendu d'une vidéo ou d'un viseur de caméra | |
Ce type est utilisé pour capturer une fenêtre | |
Décrit un appareil photo | |
Décrit un format vidéo pris en charge par un appareil photo. | |
Fournit des métadonnées pour les fichiers multimédias |
© 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.