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=1active 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éfinissezQT_LOGGING_RULES="*.multimedia.*=true"- Si vous définissez à la fois
QT_FFMPEG_DEBUGetQT_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,udpAvertissement : 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=tcpLes 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_TYPESetQT_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érielVAAPI, 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érielVAAPI, 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.