Erweiterte FFmpeg-Konfiguration
Diese Seite listet die konfigurierbaren Funktionen des FFmpeg-Medien-Backends auf. Alle Funktionen sind Teil der privaten API und können in Zukunft ohne Vorankündigung geändert oder entfernt werden. Beachten Sie, dass Umgebungsvariablen standardmäßig von untergeordneten Prozessen übernommen werden und unbeabsichtigte Folgen haben können.
Protokollierung von FFmpeg und dem Qt-FFmpeg-Medien-Backend aktivieren
Sie können die erweiterte FFmpeg-Protokollausgabe über Umgebungsvariablen konfigurieren.
QT_FFMPEG_DEBUG=1aktiviert zusätzliche Protokollierung aus der FFmpeg-Bibliothek und kann Ihnen helfen, Probleme im Zusammenhang mit der FFmpeg-Bibliothek zu verstehen.QT_LOGGING_RULES="*.ffmpeg.*=true"aktiviert Qt-Entwicklerprotokolle im FFmpeg-Plugin. Protokollierungskategorien im FFmpeg-Plugin werden üblicherweise als „qt.multimedia.ffmpeg.XXX“ bezeichnet. Um Entwicklerprotokolle aus dem gesamten Bereich „ Qt Multimedia “ zu aktivieren, setzen SieQT_LOGGING_RULES="*.multimedia.*=true"- Wenn Sie sowohl „
QT_FFMPEG_DEBUG“ als auch „QT_LOGGING_RULES“ setzen, werden alle verfügbaren FFmpeg-Codecs ausgegeben, sobald zum ersten Mal die Kodierungs- oder Dekodierungsfunktionalität von „ QMediaPlayer “, „ QAudioDecoder “ oder „ QMediaRecorder “ genutzt wird. Diese Informationen können Ihnen helfen, Situationen zu verstehen, in denen „ Qt Multimedia “ keinen passenden FFmpeg-Dekoder oder -Kodierer findet. Wir empfehlen, den Codec-Dump an Qt-Fehlerberichte anzuhängen, wenn Sie auf codecspezifische Probleme stoßen.
Experimentelle FFmpeg-Codecs aktivieren
FFmpeg stellt einige Codecs, wie beispielsweise Opus oder Vorbis, als experimentelle Codecs zur Verfügung. Experimentelle Codecs halten sich nicht strikt an den Standard und können instabil sein. Sie sind standardmäßig deaktiviert. Um sie zu aktivieren, setzen Sie die Umgebungsvariable „ QT_ENABLE_EXPERIMENTAL_CODECS=1 “.
Konfiguration zulässiger Netzwerkprotokolle
Aus Sicherheitsgründen schränkt die FFmpeg-Bibliothek die Verwendung von verschachtelten Protokollen ein, d. h. von Protokollen, die von anderen Protokollen verwendet werden; siehe Dokumentation zu FFmpeg-Protokollen. Sie können die zulässigen Protokolle über die Umgebungsvariable ` QT_FFMPEG_PROTOCOL_WHITELIST` explizit überschreiben, zum Beispiel:
export QT_FFMPEG_PROTOCOL_WHITELIST=file,crypto,rtp,udpWarnung: Beachten Sie , dass verschachtelte Protokolle bei der Verwendung mit nicht vertrauenswürdigen Daten Sicherheitslücken verursachen können. Erlauben Sie nur Protokolle, die Ihren Sicherheits- und Geschäftsanforderungen entsprechen.
Konfiguration des RTSP-Transports
RTSP-Eingabestreams können mit einem bestimmten FFmpeg-RTSP-Untertransport geöffnet werden, indem die Umgebungsvariable ` QT_FFMPEG_RTSP_TRANSPORT ` gesetzt wird. Der Wert wird an die FFmpeg-Eingabeoption ` rtsp_transport ` für ` rtsp:// `-URLs übergeben. Verwenden Sie beispielsweise TCP-Interleaving innerhalb des RTSP-Steuerkanals:
export QT_FFMPEG_RTSP_TRANSPORT=tcpZu den gängigen Werten gehören udp, tcp, udp_multicast, http und https; siehe die Dokumentation zum RTSP-Protokoll von FFmpeg. Diese Option ist standardmäßig nicht gesetzt und wird bei Nicht-RTSP-Medienquellen ignoriert.
Hardwarebeschleunigung in Backends konfigurieren
- Explizite Backends für die Hardwarebeschleunigung bei der Dekodierung und Kodierung.
Das FFmpeg-Plugin wählt das Hardwarebeschleunigungs-Backend für Dekodierung und Kodierung basierend auf Verfügbarkeit, Stabilität, Effizienz und Implementierungsdetails aus. Wenn das ausgewählte Hardware-Backend nicht wie erwartet funktioniert, können Sie versuchen, eine benutzerdefinierte Prioritätenliste festzulegen oder alle Hardware-Backends über die Umgebungsvariablen
QT_FFMPEG_DECODING_HW_DEVICE_TYPESundQT_FFMPEG_ENCODING_HW_DEVICE_TYPESzu deaktivieren. Zu den verfügbaren Hardware-Backends gehören:- cuda
- drm
- dxva2
- d3d11va
- d3d12va,
- OpenCL
- QSV
- VAAPI
- vdpau
- Videotoolbox
- mediacodec
- Vulkan
Die Verfügbarkeit von Hardware-Backends hängt jedoch vom Betriebssystem, den installierten Treibern, der FFmpeg-Version und der Konfiguration ab. Es ist wichtig zu beachten, dass einige Gerätetypen von den Qt-Betreuern nicht mit „ Qt Multimedia “ getestet wurden und möglicherweise nicht wie vorgesehen funktionieren. Zum Zeitpunkt der Erstellung dieses Artikels gehören zu diesen Backends:
- drm
- opencl
- qsv
- vdpau
- Vulkan
Beispiele:
# 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=, - Konvertierung von Hardware-Texturen.
Die Nutzung der GPU-basierten Konvertierung für decodierte und gerenderte Videobilder kann die CPU-Auslastung erheblich reduzieren. Wir streben an, diese Funktion mit möglichst vielen Hardware-Backends zu nutzen. Sollten Sie Probleme beim Rendern feststellen, sollten Sie erwägen, das Rendern ohne GPU-Texturkonvertierung zu testen, um die Ursache zu ermitteln. Sie können die GPU-Texturkonvertierung mithilfe der Umgebungsvariable „
QT_DISABLE_HW_TEXTURES_CONVERSION“ deaktivieren:QT_DISABLE_HW_TEXTURES_CONVERSION=1. Beim Hardware-Backend „VAAPI“ ist die Hardware-Texturkonvertierung standardmäßig deaktiviert. Setzen Sie „QT_XCB_GL_INTEGRATION=xcb_egl“, um sie zu aktivieren. - Codec-Profil-Diskrepanz zulassen.
Wenn das Codec-Profil nicht mit den gemeldeten Fähigkeiten der Hardware übereinstimmt, können Sie diese Nichtübereinstimmung ignorieren und die Hardware-Decodierung über
QT_FFMPEG_HW_ALLOW_PROFILE_MISMATCH=1zulassen. Die Aktivierung dieser Option kann beispielsweise hilfreich sein, wenn Sie die hardwarebeschleunigte Dekodierung für das Baseline-Profil H.264 mit dem Hardware-Backend „VAAPI“ verwenden, da die meisten dieser Streams die Anforderungen des vorhandenen H.264-Hardware-Dekoders erfüllen.Warnung: Wenn der Stream nicht unterstützt wird, kann die erzwungene Hardware-Dekodierung zu einer völlig fehlerhaften Videoausgabe führen.
© 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.