Lecteur de médias
Lecture de fichiers audio et vidéo à l'aide de Qt Quick.

Cet exemple présente une application QML capable de lire des fichiers audio et vidéo à l'aide de divers codecs.
Exécution de l'exemple
Pour exécuter l'exemple à partir de Qt CreatorOuvrez le mode Welcome et sélectionnez l'exemple à partir de Examples. Pour plus d'informations, voir Qt Creator: Tutoriel : Construire et exécuter.
Structure du projet

Cette architecture d'application est composée de trois modules QML personnalisés :
MediaControlMediaPlayerConfig
Cela se reflète également dans le fichier de premier niveau CMakeLists.txt:
add_subdirectory(MediaPlayer)
target_link_libraries(MediaPlayerApp PRIVATE
Qt6::Core
Qt6::Svg
Qt6::Quick
Qt6::Multimedia
MediaControlsplugin
MediaPlayerplugin
ConfigpluginChaque module QML est créé à l'aide de la macro qt_add_qml_module, voir par exemple comment le module Config est créé.
qt_add_library(Config STATIC)
set_source_files_properties(Config.qml
PROPERTIES
QT_QML_SINGLETON_TYPE true
)
qt_add_qml_module(Config
URI "Config"
OUTPUT_DIRECTORY Config
QML_FILES
"Config.qml"
)Qt Quick application
A la base, il s'agit d'une application QML, voir Getting Started programming with Qt Quick: An Alarm Application pour des informations spécifiques à ce sujet. Cette documentation se concentre sur la façon dont cet exemple utilise la macro Qt Multimedia QML Types.
Le module QML Custom Config
Ce type de module contrôle les thèmes et les dispositions d'une application, en fonction du système d'exploitation cible.
Tout d'abord, nous déclarons qu'il s'agit d'un singleton, car nous n'avons besoin de l'instancier qu'une seule fois et créer des copies serait un gaspillage de ressources.
Pour ce faire, nous ajoutons ce qui suit en haut de la page Config.qml
pragma Singleton
Nous créons ensuite un fichier qmldir dans le répertoire Config nommé qmldir qui contient ce qui suit :
module Config singleton Config 1.0 Config.qml
Pour l'utiliser dans notre application, voyons comment il est référencé dans le fichier Main.qml de MediaPlayer:
color: Config.mainColor
Le module QML MediaControls personnalisé
Ce module contient tous les types utilisés pour définir les contrôles de l'application :

- AudioControl.qml
- ControlImages.qml
- CustomButton.qml
- CustomRadioButton.qml
- CustomSlider.qml
- PlaybackControl.qml
- PlaybackRateControl.qml
- PlaybackSeekControl.qml
Voir le fichier de définition de chaque type spécifique pour plus de détails sur la façon dont ces contrôles sont mis en œuvre. Il s'agit d'une évolution des contrôles de l'exemple de lecteur multimédia QML.
Le module QML personnalisé MediaPlayer
Ce module contient le fichier Main.qml qui déclare où la plupart des types de haut niveau de l'application sont utilisés, et surtout où les types QML Qt Multimedia MediaPlayer et VideoOutput sont déclarés.
MediaPlayer { id: mediaPlayer playbackRate: playbackControl.playbackRate videoOutput: videoOutput audioOutput: AudioOutput { id: audio volume: playbackControl.volume } source: new URL("https://download.qt.io/learning/videos/media-player-example/Qt_LogoMergeEffect.mp4") function updateMetadata() { root.metadataInfo.clear() root.metadataInfo.read(mediaPlayer.metaData) } onMetaDataChanged: updateMetadata() onActiveTracksChanged: updateMetadata() onErrorOccurred: { errorPopup.errorMsg = mediaPlayer.errorString errorPopup.open() } onTracksChanged: { settingsInfo.tracksInfo.selectedAudioTrack = mediaPlayer.activeAudioTrack settingsInfo.tracksInfo.selectedVideoTrack = mediaPlayer.activeVideoTrack settingsInfo.tracksInfo.selectedSubtitleTrack = mediaPlayer.activeSubtitleTrack updateMetadata() } onMediaStatusChanged: { if ((MediaPlayer.EndOfMedia === mediaStatus && mediaPlayer.loops !== MediaPlayer.Infinite) && ((root.currentFile < playlistInfo.mediaCount - 1) || playlistInfo.isShuffled)) { if (!playlistInfo.isShuffled) { ++root.currentFile } root.playMedia() } else if (MediaPlayer.EndOfMedia === mediaStatus && root.playlistLooped && playlistInfo.mediaCount) { root.currentFile = 0 root.playMedia() } } } VideoOutput { id: videoOutput anchors.top: fullScreen || Config.isMobileTarget ? parent.top : menuBar.bottom anchors.bottom: fullScreen ? parent.bottom : playbackControl.top anchors.left: parent.left anchors.right: parent.right anchors.leftMargin: fullScreen ? 0 : 20 anchors.rightMargin: fullScreen ? 0 : 20 visible: mediaPlayer.hasVideo property bool fullScreen: false TapHandler { onDoubleTapped: { if (parent.fullScreen) { root.showNormal() } else { root.showFullScreen() } parent.fullScreen = !parent.fullScreen } onTapped: { root.closeOverlays() } } }
Le module contient les autres types douaniers utilisés pour récupérer et afficher les informations sur les fichiers, ainsi que pour appeler le sélecteur de fichiers.
- ErrorPopup.qml
- Images.qml
- MetadataInfo.qml
- PlayerMenuBar.qml
- PlaylistInfo.qml
- SettingsInfo.qml
- ThemeInfo.qml
- TouchMenu.qml
- TracksInfo.qml
- TracksOptions.qml
- UrlPopup.qml
Voir le fichier de définition de chaque type spécifique pour plus de détails sur la façon dont les types sont mis en œuvre. Certains sont une évolution de ceux trouvés dans l'exemple de lecteur multimédia QML.
Nouvelles fonctionnalités
Cet exemple d'application comporte de nouvelles fonctionnalités mises en œuvre par des types tels que PlaylistInfo et ThemeInfo. Voir les fichiers .qml respectifs pour plus de détails sur leur mise en œuvre.
Fichiers sources
Voir aussi Tous les exemples Qt, Qt Quick Exemples et tutoriels, et Qt Multimedia 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.