Sur cette page

Configuration avancée de FFmpeg

Cette page répertorie les fonctionnalités configurables du backend multimédia FFmpeg. Toutes ces fonctionnalités font partie de l'API privée et peuvent être modifiées ou supprimées à l'avenir sans préavis. Sachez que les variables d'environnement sont par défaut héritées par les processus enfants et peuvent avoir des conséquences imprévues.

Activer la journalisation depuis FFmpeg et le backend multimédia Qt FFmpeg

Vous pouvez configurer la sortie de journalisation avancée de FFmpeg via des variables d'environnement.

  • QT_FFMPEG_DEBUG=1 active la journalisation supplémentaire de la bibliothèque FFmpeg et peut vous aider à comprendre les problèmes liés à cette bibliothèque.
  • QT_LOGGING_RULES="*.ffmpeg.*=true" active les journaux de développement Qt dans le plugin FFmpeg. Les catégories de journalisation dans le plugin FFmpeg sont généralement nommées « qt.multimedia.ffmpeg.XXX ». Pour activer les journaux de développement de l’ensemble Qt Multimedia, définissez QT_LOGGING_RULES="*.multimedia.*=true"
  • Si vous définissez à la fois QT_FFMPEG_DEBUG et QT_LOGGING_RULES, tous les codecs FFmpeg disponibles seront affichés la première fois que la fonctionnalité d’encodage ou de décodage sera utilisée à partir de QMediaPlayer, QAudioDecoder ou QMediaRecorder. Ces informations peuvent vous aider à comprendre les situations dans lesquelles Qt Multimedia ne trouve pas de décodeur ou d’encodeur FFmpeg approprié. Nous vous recommandons de joindre le dump du codec aux rapports de bogues Qt si vous rencontrez des problèmes spécifiques à un codec.

Activer les codecs FFmpeg expérimentaux

FFmpeg propose quelques codecs, tels que Opus ou Vorbis, en tant que codecs expérimentaux. Les codecs expérimentaux ne respectent pas strictement la norme et peuvent être instables. Ils sont désactivés par défaut. Pour les activer, définissez la variable d'environnement QT_ENABLE_EXPERIMENTAL_CODECS=1.

Configuration des protocoles réseau autorisés

Pour des raisons de sécurité, la bibliothèque FFmpeg restreint l’utilisation des protocoles imbriqués, c’est-à-dire des protocoles utilisés par d’autres protocoles ; consultez la documentation sur les protocoles FFmpeg. Vous pouvez explicitement redéfinir les protocoles autorisés via la variable d’environnement QT_FFMPEG_PROTOCOL_WHITELIST, par exemple :

export QT_FFMPEG_PROTOCOL_WHITELIST=file,crypto,rtp,udp

Avertissement : notez que les protocoles imbriqués peuvent présenter des failles de sécurité lorsqu’ils sont utilisés avec des données non fiables. N’autorisez que les protocoles conformes à vos exigences en matière de sécurité et à vos besoins métier.

Configuration du transport RTSP

Les flux d’entrée RTSP peuvent être ouverts avec un transport RTSP inférieur spécifique à FFmpeg en définissant la variable d’environnement QT_FFMPEG_RTSP_TRANSPORT. La valeur est transmise à l’option d’entrée rtsp_transport de FFmpeg pour les URL de type rtsp://. Par exemple, utilisez l’entrelacement TCP au sein du canal de contrôle RTSP :

export QT_FFMPEG_RTSP_TRANSPORT=tcp

Les valeurs courantes incluent udp, tcp, udp_multicast, http et https; consultez la documentation du protocole RTSP de FFmpeg. Cette option n’est pas activée par défaut et est ignorée pour les sources multimédias non RTSP.

Configurer l’accélération matérielle dans les backends

  • Backends d'accélération matérielle explicites pour le décodage et l'encodage.

    Le plugin FFmpeg choisit le backend d’accélération matérielle pour le décodage et l’encodage en fonction de la disponibilité, de la stabilité, de l’efficacité et des détails d’implémentation. Si le backend matériel sélectionné ne fonctionne pas comme prévu, vous pouvez essayer de définir une liste de priorités personnalisée ou de désactiver tous les backends matériels via les variables d’environnement QT_FFMPEG_DECODING_HW_DEVICE_TYPES et QT_FFMPEG_ENCODING_HW_DEVICE_TYPES. Les backends matériels disponibles sont les suivants :

    • cuda
    • drm
    • dxva2
    • d3d11va
    • d3d12va,
    • OpenCL
    • QSV
    • vaapi
    • vdpau
    • videotoolbox
    • mediacodec
    • vulkan

    Cependant, la disponibilité des backends matériels dépend du système d'exploitation, des pilotes installés, de la version de FFmpeg et de la configuration. Il est important de garder à l'esprit que certains types de périphériques n'ont pas été testés avec Qt Multimedia par les responsables de Qt et peuvent ne pas fonctionner comme prévu. À l'heure où nous écrivons ces lignes, ces backends comprennent :

    • drm
    • opencl
    • qsv
    • vdpau
    • Vulkan

    Exemples :

    # Set vdpau or cuda encoding hardware backends
    export QT_FFMPEG_ENCODING_HW_DEVICE_TYPES=vdpau,cuda
    
    # Set only d3d12va decoding hardware backend
    export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=d3d12va
    
    # Disable decoding hw backends (set an empty list)
    export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=,
  • Conversion des textures matérielles.

    L'utilisation de la conversion par GPU pour les images vidéo décodées et rendues peut réduire considérablement l'utilisation du processeur. Notre objectif est d’exploiter cette fonctionnalité avec le plus grand nombre possible de backends matériels. Si vous constatez des problèmes de rendu, pensez à tester le rendu sans conversion matérielle des textures afin d’en identifier la cause. Vous pouvez désactiver la conversion matérielle des textures à l’aide de la variable d’environnement ` QT_DISABLE_HW_TEXTURES_CONVERSION ` : QT_DISABLE_HW_TEXTURES_CONVERSION=1. Avec le backend matériel VAAPI, la conversion matérielle des textures est désactivée par défaut. Définissez ` QT_XCB_GL_INTEGRATION=xcb_egl ` pour l’activer.

  • Autoriser l’incompatibilité de profil de codec.

    Si le profil de codec ne correspond pas aux capacités déclarées du matériel, vous pouvez ignorer cette incompatibilité et autoriser le décodage matériel via QT_FFMPEG_HW_ALLOW_PROFILE_MISMATCH=1. La configuration de cette option peut s’avérer utile, par exemple, lorsque vous utilisez le décodage accéléré par le matériel pour le profil de base H.264 avec le backend matériel VAAPI, car la plupart de ces flux satisfont aux contraintes du décodeur matériel H.264 existant.

    Avertissement : si le flux n’est pas pris en charge, le décodage matériel forcé peut entraîner une sortie vidéo totalement erronée.

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