Auf dieser Seite

Qt Multimedia

Abbildung von Multimedia-Symbolen, mit freundlicher Genehmigung von misirlou vom Noun Project

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 MultimediaStellt eine API für multimediaspezifische Anwendungsfälle bereit.
Qt Multimedia WidgetsStellt eine Widget-basierte Multimedia-API bereit.
Qt Spatial AudioStellt 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 QtMultimedia

Um 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

QML-Typen

Die folgende Tabelle gibt einen Überblick über einige wichtige QML-Typen.

TypBeschreibung
MediaPlayerFügt einer Szene Audio-/Video-Wiedergabefunktionen hinzu.
CaptureSessionErstellt eine Sitzung zur Audio-/Videoaufnahme.
CameraGibt Zugriff auf eine an das System angeschlossene Kamera.
AudioInputGreifen Sie auf einen an das System angeschlossenen Audioeingang (Mikrofon) zu.
AudioOutputGreifen Sie auf einen an das System angeschlossenen Audioausgang (Lautsprecher, Kopfhörer) zu.
VideoOutputVideoinhalte anzeigen.
MediaRecorderNehmen Sie Audio- und Videodaten von der „ CaptureSession “ auf.
ImageCaptureNehmen Sie Standbilder von der Kamera auf.
VideoFügen Sie einer Szene eine Videowiedergabefunktion hinzu. Verwendet die Typen „ MediaPlayer “ und „ VideoOutput “, um eine Videowiedergabefunktion bereitzustellen.
ScreenCaptureErfasst einen Bildschirm.
WindowCaptureErfasst ein Fenster der obersten Ebene.
GStreamerVideoSourceBenutzerdefinierte GStreamer-Videoquelle (mit dem GStreamer-Medien-Backend).

C++-Klassen

Die folgende Tabelle gibt einen Überblick über einige wichtige C++-Klassen.

KlasseBeschreibung
QMediaPlayerWiedergabe von Medien aus einer Quelle.
QVideoWidgetAnzeige von Videos aus einem Mediaplayer oder einer Aufnahmesitzung.
QMediaCaptureSessionAufnahme von Audio und Video.
QCameraAuf eine an das System angeschlossene Kamera zugreifen
QAudioInputZugriff auf einen an das System angeschlossenen Audioeingang (Mikrofon).
QAudioOutputZugriff auf einen an das System angeschlossenen Audioausgang (Lautsprecher, Kopfhörer).
QImageCaptureNehmen Sie Standbilder mit einer Kamera auf.
QMediaRecorderMedieninhalte aus einer Aufnahmesitzung aufzeichnen.
QVideoSinkAuf einzelne Videobilder zugreifen und diese rendern.
QAudioSinkSendet Roh-Audiodaten an ein Audioausgabegerät.
QScreenCaptureErfasst einen Bildschirm.
QWindowCaptureErfasst ein Fenster der obersten Ebene.
QVideoFrameInputWird verwendet, um Videobilder aus Speicherpuffern anzuzeigen oder aufzuzeichnen.
QAudioBufferInputUnterstützt die Wiedergabe oder Aufzeichnung von Audio aus Speicherpuffern.
QGStreamerVideoSourceBenutzerdefinierte 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:

DR Libs, version 0.14.6-snapshot-ee937527

Die Unlicense oder die MIT-Lizenz ohne Namensnennung

FFmpeg, version 9.0.1

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

Signalsmith Stretch, version 1.1.0

MIT-Lizenz

Two-Level Segregated Fit, version v3.1

BSD-3-Klausel-„New“- oder „Revised“-Lizenz

boost

Boost-Softwarelizenz 1.0

libjpeg

Lizenz der Independent JPEG Group

zlib

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=darwin

Um FFmpeg als Backend zu erzwingen, setzen Sie die Variable auf „ ffmpeg “:

export QT_MEDIA_BACKEND=ffmpeg

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