Erweiterte FFmpeg-Konfiguration

Diese Seite listet die konfigurierbaren Funktionen des FFmpeg Media Backends auf. Alle Funktionen sind Teil der privaten API und können in Zukunft ohne Bestätigung geändert oder entfernt werden. Beachten Sie, dass Umgebungsvariablen standardmäßig an Kindprozesse vererbt werden und unbeabsichtigte Folgen haben können.

Aktivieren der Protokollierung von FFmpeg und dem Qt FFmpeg Media Backend

Sie können die erweiterte FFmpeg-Protokollausgabe über Umgebungsvariablen konfigurieren.

  • QT_FFMPEG_DEBUG=1 aktiviert zusätzliche Protokollierung von der FFmpeg-Bibliothek und kann Ihnen helfen, Probleme zu verstehen, die die FFmpeg-Bibliothek betreffen.
  • QT_LOGGING_RULES="*.ffmpeg.*=true" schaltet Qt-Entwicklerprotokolle im FFmpeg-Plugin ein. Die Logging-Kategorien im FFmpeg-Plugin heißen normalerweise "qt.multimedia.ffmpeg.XXX". Um Entwicklerprotokolle von allen Qt Multimedia zu aktivieren, setzen Sie QT_LOGGING_RULES="*.multimedia.*=true"
  • Wenn Sie sowohl QT_FFMPEG_DEBUG als auch QT_LOGGING_RULES setzen, werden alle verfügbaren FFmpeg-Codecs ausgedruckt, wenn zum ersten Mal eine Kodierungs- oder Dekodierungsfunktion von QMediaPlayer, QAudioDecoder oder QMediaRecorder verwendet wird. Diese Informationen können Ihnen helfen, Situationen zu verstehen, in denen Qt Multimedia keinen geeigneten FFmpeg-Decoder oder -Encoder findet. Wir empfehlen, den Codec-Dump an Qt-Fehlerberichte anzuhängen, wenn Sie auf Codec-spezifische Probleme stoßen.

Aktivieren Sie experimentelle FFmpeg Codecs

FFmpeg stellt einige Codecs, wie Opus oder Vorbis, als experimentelle Codecs zur Verfügung. Experimentelle Codecs halten sich nicht streng 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.

Konfigurieren der zulässigen 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 FFmpeg-Dokumentation zu Protokollen. Sie können die erlaubten Protokolle explizit außer Kraft setzen, z.B. über die Umgebungsvariable QT_FFMPEG_PROTOCOL_WHITELIST:

export QT_FFMPEG_PROTOCOL_WHITELIST=file,crypto,rtp,udp

Warnung: Beachten Sie, dass verschachtelte Protokolle Sicherheitsschwachstellen verursachen können, wenn sie mit nicht vertrauenswürdigen Daten verwendet werden. Lassen Sie nur Protokolle zu, die mit Ihren Sicherheits- und Geschäftsanforderungen übereinstimmen.

Konfigurieren Sie die Hardware-Beschleunigung in Backends

  • Explizite Dekodierung und Kodierung mit Hardware-Beschleunigung in Backends.

    Das FFmpeg-Plugin wählt das Hardware-Beschleunigungs-Backend für die Dekodierung und Kodierung auf der Grundlage von 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 zu erstellen oder alle Hardware-Backends über die Umgebungsvariablen QT_FFMPEG_DECODING_HW_DEVICE_TYPES und QT_FFMPEG_ENCODING_HW_DEVICE_TYPES zu 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 bedenken, dass einige Gerätetypen von den Qt-Maintainern nicht mit Qt Multimedia getestet wurden und daher möglicherweise nicht wie vorgesehen funktionieren. Zum Zeitpunkt des Verfassens dieses Artikels umfassen diese 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 dekodierte und gerenderte Videobilder kann die CPU-Nutzung erheblich reduzieren. Wir sind bestrebt, diese Funktion mit so vielen Hardware-Backends wie möglich zu nutzen. Wenn Sie Rendering-Probleme feststellen, sollten Sie das Rendering ohne GPU-Texturkonvertierung testen, um die Ursache zu ermitteln. Sie können die GPU-Texturkonvertierung mit der Umgebungsvariablen QT_DISABLE_HW_TEXTURES_CONVERSION deaktivieren: QT_DISABLE_HW_TEXTURES_CONVERSION=1. Mit dem VAAPI Hardware-Backend ist die Hardware-Texturkonvertierung standardmäßig deaktiviert. Setzen Sie QT_XCB_GL_INTEGRATION=xcb_egl, um sie zu aktivieren.

  • Codec-Profil-Fehlanpassung zulassen.

    Wenn das Codec-Profil nicht mit den gemeldeten Fähigkeiten der Hardware übereinstimmt, können Sie die Abweichung ignorieren und die Hardware-Dekodierung über QT_FFMPEG_HW_ALLOW_PROFILE_MISMATCH=1 zulassen. Die Einstellung dieser Option kann z. B. hilfreich sein, wenn Sie die hardwarebeschleunigte Dekodierung für das Basisprofil H.264 mit dem Hardware-Backend VAAPI verwenden, da die meisten dieser Streams die Einschränkungen des vorhandenen H.264-Hardwaredecoders erfüllen.

    Warnung: Wenn der Stream nicht unterstützt wird, kann die erzwungene Hardware-Dekodierung zu einer völlig falschen Videoausgabe führen.

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