Qt Multimedia
Qt Multimedia findet sich ein Zusatzmodul, das eine umfangreiche Sammlung von QML-Typen und C++-Klassen zur Verarbeitung von Multimedia-Inhalten bereitstellt. Es enthält eine benutzerfreundliche API zur Wiedergabe von Audio- und Videodateien und deren Darstellung auf dem Bildschirm sowie eine umfassende API zur Aufnahme von Audio und Video aus verschiedenen Quellen, darunter Systemkameras und -mikrofone, Bildschirm- oder Fenschaufnahmen sowie Audio- oder Video-Speicherpuffer.
Die Funktionalität dieses Moduls ist in die folgenden Untermodule unterteilt:
| Qt Multimedia | Stellt eine API für multimediaspezifische Anwendungsfälle bereit. |
| Qt Multimedia Widgets | Stellt eine Widget-basierte Multimedia-API bereit. |
| Qt Spatial Audio | Stellt eine API zur Implementierung von Klangfeldern im 3D-Raum bereit. |
Erste Schritte
Wenn Sie von Qt 5 auf Qt 6 portieren, lesen Sie bitte den Abschnitt „Änderungen an Qt Multimedia “.
Wenn Sie noch keine Erfahrung mit „ Qt Multimedia “ haben, können die QML-Typen mithilfe der folgenden Anweisung in Ihrer Datei „ .qml “ in eine Anwendung importiert werden.
import QtMultimediaUm eine Verknüpfung mit den C++-Bibliotheken herzustellen, fügen Sie Folgendes in die Datei „ CMakeLists.txt “ Ihres Projekts ein. Ersetzen Sie „ mytarget “ durch den Namen Ihres Projekts.
find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)Anleitungen zum Erstellen von „ Qt Multimedia “ aus dem Quellcode finden Sie unter „ Qt Multimedia aus dem Quellcode erstellen “.
Übersichten und wichtige Themen
- Änderungen in Qt 6
- Multimedia-Übersicht
- Audio-Übersicht
- Übersicht über räumliches Audio
- Video-Übersicht
- Kamera – Überblick
- Unterstützte Medienformate
QML-Typen
Die folgende Tabelle gibt einen Überblick über einige wichtige QML-Typen.
| Typ | Beschreibung |
|---|---|
| MediaPlayer | Fügt einer Szene Audio-/Video-Wiedergabefunktionen hinzu. |
| CaptureSession | Erstellt eine Sitzung zur Audio-/Videoaufnahme. |
| Camera | Gibt Zugriff auf eine an das System angeschlossene Kamera. |
| AudioInput | Greifen Sie auf einen an das System angeschlossenen Audioeingang (Mikrofon) zu. |
| AudioOutput | Greifen Sie auf einen an das System angeschlossenen Audioausgang (Lautsprecher, Kopfhörer) zu. |
| VideoOutput | Videoinhalte anzeigen. |
| MediaRecorder | Nehmen Sie Audio- und Videodaten von der „ CaptureSession “ auf. |
| ImageCapture | Nehmen Sie Standbilder von der Kamera auf. |
| Video | Fügen Sie einer Szene eine Videowiedergabefunktion hinzu. Verwendet die Typen „ MediaPlayer “ und „ VideoOutput “, um eine Videowiedergabefunktion bereitzustellen. |
| ScreenCapture | Erfasst einen Bildschirm. |
| WindowCapture | Erfasst ein Fenster der obersten Ebene. |
| GStreamerVideoSource | Benutzerdefinierte GStreamer-Videoquelle (mit dem GStreamer-Medien-Backend). |
C++-Klassen
Die folgende Tabelle gibt einen Überblick über einige wichtige C++-Klassen.
| Klasse | Beschreibung |
|---|---|
| QMediaPlayer | Wiedergabe von Medien aus einer Quelle. |
| QVideoWidget | Anzeige von Videos aus einem Mediaplayer oder einer Aufnahmesitzung. |
| QMediaCaptureSession | Aufnahme von Audio und Video. |
| QCamera | Auf eine an das System angeschlossene Kamera zugreifen |
| QAudioInput | Zugriff auf einen an das System angeschlossenen Audioeingang (Mikrofon). |
| QAudioOutput | Zugriff auf einen an das System angeschlossenen Audioausgang (Lautsprecher, Kopfhörer). |
| QImageCapture | Nehmen Sie Standbilder mit einer Kamera auf. |
| QMediaRecorder | Medieninhalte aus einer Aufnahmesitzung aufzeichnen. |
| QVideoSink | Auf einzelne Videobilder zugreifen und diese rendern. |
| QAudioSink | Sendet Roh-Audiodaten an ein Audioausgabegerät. |
| QScreenCapture | Erfasst einen Bildschirm. |
| QWindowCapture | Erfasst ein Fenster der obersten Ebene. |
| QVideoFrameInput | Wird verwendet, um Videobilder aus Speicherpuffern anzuzeigen oder aufzuzeichnen. |
| QAudioBufferInput | Unterstützt die Wiedergabe oder Aufzeichnung von Audio aus Speicherpuffern. |
| QGStreamerVideoSource | Benutzerdefinierte GStreamer-Videoquelle (mit dem GStreamer-Medien-Backend). |
Für die Wiedergabe von Audio und Video enthalten „ QMediaPlayer “, „ QAudioOutput “ und „ QVideoWidget “ alle erforderlichen Funktionen. Andere Klassen sind für die Erfassung von Audio- und Videoinhalten vorgesehen, wobei „ QMediaCaptureSession “ als zentrale Klasse dient, die den gesamten Erfassungs- und Aufzeichnungsprozess verwaltet.
Lizenzen und Namensnennungen
Das Modul „ Qt Multimedia “ ist unter kommerziellen Lizenzen von The Qt Company erhältlich. Darüber hinaus ist es unter freien Softwarelizenzen verfügbar. Seit Qt 5.6 sind diese freien Softwarelizenzen die GNU Lesser General Public License, Version 3, oder die GNU General Public License, Version 2. Weitere Details finden Sie unter „Qt-Lizenzierung “.
Darüber hinaus kann „ Qt Multimedia “ in Qt 6.12.0 Module von Drittanbietern enthalten, die unter den folgenden freizügigen Lizenzen stehen:
Die Unlicense oder die MIT-Lizenz ohne Namensnennung | |
GNU Lesser General Public License v2.1 oder höher sowie die BSD-3-Klausel-„New“- oder „Revised“-Lizenz, die BSD-2-Klausel-„Simplified“-Lizenz, die BSD-Source-Code-Attribution-Lizenz, die ISC-Lizenz, die MIT-Lizenz und die Mozilla Public License 2.0 | |
MIT-Lizenz | |
BSD-3-Klausel-„New“- oder „Revised“-Lizenz | |
Boost-Softwarelizenz 1.0 | |
Lizenz der Independent JPEG Group | |
zlib-Lizenz |
Beachten Sie, dass Videokompressionsstandards, wie beispielsweise der Medienkompressionsstandard H.264, möglicherweise durch Patente geschützt sind und Lizenzgebühren anfallen können. Dies kann für jede Implementierung gelten, auch wenn die Implementierung als Betriebssystemdienst, über eine Bibliothek eines Drittanbieters oder über eines der Backends von Qt Multimedia bereitgestellt wird. Die Qt-Lizenzen decken solche Gebühren nicht ab.
Hinweise zu Zielplattformen und Backends
Qt Multimedia bietet benutzerfreundliche, plattformübergreifende APIs für die Medienwiedergabe, -aufzeichnung und -geräteverwaltung. Die Implementierung der Kern-APIs, darunter QMediaDevices, QAudioDevice, QSoundEffect, QAudioSink und QAudioSource, ist in die Hauptbibliothek „ Qt Multimedia “ integriert, sodass keine zusätzlichen Bibliotheken erforderlich sind. Andere Qt Multimedia -APIs werden mithilfe von Plugin-Bibliotheken implementiert, die als Medien-Backends bezeichnet werden. Das auf FFmpeg basierende Haupt-Medien-Backend gewährleistet nahtlose plattformübergreifende Funktionalität und ist auf allen Plattformen außer WebAssembly und eingebettetem Linux/Boot2Qt die Standardeinstellung. Bei Boot2Qt basiert das Standard-Backend auf GStreamer, das FFmpeg-Medien-Backend kann jedoch mithilfe der Umgebungsvariable „ QT_MEDIA_BACKEND “ aktiviert werden.
Das FFmpeg-Backend
Das FFmpeg-Medien-Backend stützt sich auf die FFmpeg-9.0.1-Bibliotheken, die im „ Qt Online Installer “ enthalten sind und von den Betreuern getestet wurden. Die Binärpakete aus dem Online-Installationsprogramm nutzen eine dynamische Verknüpfung mit FFmpeg. Daher müssen Anwendungen entweder FFmpeg-Binärdateien in ihrem Installationsprogramm bündeln oder davon ausgehen, dass FFmpeg auf dem Betriebssystem installiert ist. Die FFmpeg-Bibliotheken werden automatisch mithilfe der Qt-Bereitstellungstools bereitgestellt, wie in der Dokumentation „Bereitstellung von Qt-Anwendungen“ beschrieben, mit Ausnahme von Linux/X11. Anwendungen können auch ihre eigene FFmpeg-Version bereitstellen, entweder als gemeinsam genutzte oder als statische Bibliotheken, vorausgesetzt, die Hauptversion von FFmpeg stimmt mit der von Qt verwendeten Version überein.
Zwar nutzt „ Qt Multimedia “ auf den meisten Betriebssystemen das FFmpeg-Medien-Backend, doch können plattformspezifische funktionale oder visuelle Unterschiede zwischen Anwendungen auf verschiedenen Plattformen auftreten. FFmpeg bietet nicht auf allen Plattformen identische Codec- und Formatunterstützung, und die Leistung von „ Qt Multimedia “-Funktionen kann von der Hardwareunterstützung abhängen, die nur auf bestimmten Plattformen verfügbar ist. Beispielsweise treten bei FFmpeg spezifische Probleme mit der Hardwarebeschleunigung auf Linux-Zielsystemen mit ARM-Architekturen auf. Daher wird empfohlen, „ Qt Multimedia “-Anwendungen auf allen Zielplattformen zu testen.
Hinweis: Das FFmpeg-Projekt stellt Funktionen unter verschiedenen Lizenzen bereit. Die vorgefertigten FFmpeg-Bibliotheken, die über den Online-Installer bereitgestellt werden, enthalten nur Funktionen, die mit den unter „Lizenzen und Quellenangaben“ aufgeführten freizügigen Lizenzen vereinbar sind.
Um die Entwicklung und Fehlerbehebung zu vereinfachen, lassen sich einige FFmpeg-Funktionen über Umgebungsvariablen konfigurieren, die Teil der privaten „ Qt Multimedia “-API sind.
Native Backends
Zur Kompatibilität mit bestehenden Anwendungen pflegen wir für jedes Betriebssystem native Medien-Backends:
- GStreamer-Backend auf Embedded Linux
- AVFoundation unter macOS und iOS
- Windows Media Foundation unter Windows (seit Qt 6.10 veraltet)
- MediaCodec-Framework auf Android
- WebAudio und WebVideo auf WebAssembly
Hinweis: Das FFmpeg-Medien-Backend ist das Standard-Backend, außer bei WebAssembly; native Backends sind weiterhin verfügbar, werden jedoch nur eingeschränkt unterstützt. Das GStreamer-Backend ist nur unter Linux verfügbar und wird ausschließlich für Embedded-Anwendungen empfohlen.
Hinweis: MediaCodec auf Android ist seit Qt 6.8 veraltet und wird in der nächsten Hauptversion entfernt.
Hinweis: Das auf Windows Media Foundation aufbauende Windows-Medien-Backend ist ab Qt 6.10 veraltet und wird in der nächsten Hauptversion entfernt.
Die Qt-Betreuer werden sich bemühen, kritische Probleme mit den nativen Backends zu beheben, garantieren jedoch nicht die Behebung kleinerer Probleme, einschließlich plattformübergreifender Inkonsistenzen. Neue Funktionen werden ausschließlich im FFmpeg-Medien-Backend implementiert, mit Ausnahme von WebAssembly.
Das GStreamer-Backend verfügt über einige private APIs, die eine feinere Steuerung ermöglichen. Es sind jedoch Fehler im GStreamer-Backend bekannt. Weitere Details finden Sie in den Plattformhinweisen zum GStreamer-Backend.
Einschränkungen der Backends werden dokumentiert, und ihr Status wird in den jeweiligen Klassen gepflegt.
Wechseln des Backends
Bei Problemen mit dem standardmäßigen FFmpeg-Backend empfehlen wir, ein natives Backend zu testen. Sie können zu nativen Backends wechseln, indem Sie die Umgebungsvariable ` QT_MEDIA_BACKEND ` auf ` windows`, ` gstreamer ` (unter Embedded Linux), ` darwin ` (unter macOS und iOS) oder ` android` setzen:
export QT_MEDIA_BACKEND=darwinUm FFmpeg als Backend zu erzwingen, setzen Sie die Variable auf „ ffmpeg “:
export QT_MEDIA_BACKEND=ffmpegIn der Kompilierungsphase von „ Qt Multimedia “ kann das Standard-Medien-Backend über die CMake-Variable „ QT_DEFAULT_MEDIA_BACKEND “ konfiguriert werden.
Hinweise zu den Zielplattformen
Auf den folgenden Seiten sind Probleme für bestimmte Zielplattformen aufgeführt.
Berechtigungen
Ab Qt 6.6 nutzt das Modul „ Qt Multimedia “ die neue API „ QPermission “, um die Berechtigungen „ camera “ und „ microphone “ zu verwalten. Das bedeutet, dass Qt selbst diese Berechtigungen nicht mehr abfragt; dies muss daher direkt von der Client-Anwendung aus erfolgen.
Ein Beispiel für die Integration der neuen „ QPermission “-API in die Anwendung finden Sie auf der Seite „Anwendungsberechtigungen “.
Referenz und Beispiele
© 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.