Video-Übersicht

Video-Merkmale

Qt Multimedia bietet sowohl High-Level- als auch Low-Level-C++-Klassen für die Wiedergabe und Bearbeitung von Videodaten sowie QML-Typen für die Wiedergabe und Aufnahme. Einige der hier vorgestellten Klassen überschneiden sich mit denen, die in der Kameraübersicht und der Audioübersicht vorgestellt werden.

Details zur Video-Implementierung

Videowiedergabe in C++

Sie können die Klasse QMediaPlayer verwenden, um eine Videodatei zu dekodieren und sie mit QVideoWidget, QGraphicsVideoItem oder einer benutzerdefinierten Klasse anzuzeigen.

Hier ist ein Beispiel für die Verwendung von QVideoWidget:

player = new QMediaPlayer;
player->setSource(QUrl("http://example.com/myclip1.mp4"));

videoWidget = new QVideoWidget;
player->setVideoOutput(videoWidget);

videoWidget->show();
player->play();

Und ein Beispiel mit QGraphicsVideoItem:

player = new QMediaPlayer(this);

QGraphicsVideoItem *item = new QGraphicsVideoItem;
player->setVideoOutput(item);
graphicsView->scene()->addItem(item);
graphicsView->show();

player->setSource(QUrl("http://example.com/myclip4.ogv"));
player->play();

Video abspielen in QML

Sie können VideoOutput verwenden, um Inhalte wiederzugeben, die entweder von MediaPlayer oder Camera bereitgestellt werden. VideoOutput ist eine visuelle Komponente, die in eine QQuickScene oder Window eingebettet werden kann, während die gesamte Mediendekodierung und Wiedergabesteuerung von MediaPlayer oder CaptureSession übernommen wird. Der Einfachheit halber wurde ein Video Element bereitgestellt. Es kombiniert die Elemente MediaPlayer, VideoOutput und AudioOutput in einem Element.

Arbeiten mit Low-Level-Videoframes

Qt Multimedia bietet eine Reihe von Low-Level-Klassen, die den Umgang mit Videoframes vereinfachen. Diese Klassen werden in erster Linie verwendet, wenn Sie Code schreiben, der Video- oder Kameraframes verarbeitet (z. B. zum Erkennen von Strichcodes oder zum Anwenden eines ausgefallenen Vignetteneffekts), oder wenn Sie Video auf eine spezielle Art und Weise anzeigen müssen, die sonst nicht unterstützt wird.

Die Klasse QVideoFrame kapselt ein Videobild und ermöglicht es, den Inhalt in den Systemspeicher zu übertragen, um ihn zu bearbeiten oder zu verarbeiten. Wenn Sie Ihr eigenes QVideoSink verwenden, können Sie diese Frames von QMediaPlayer und QCamera empfangen.

Aufzeichnung von Video

Die zentrale Klasse für jede Art von Aufzeichnung von Audio und Video ist QMediaCaptureSession (oder der CaptureSession QML-Typ). Sie können eine QCamera (Kamera in QML) und eine QMediaRecorder (MediaRecorder) mit der Sitzung verbinden und dann den Medienrekorder bitten, die Aufnahme zu starten.

Unterstützte Medienformate

Welche Medienformate unterstützt werden, hängt letztlich von der Konfiguration des Zielsystems ab.

Windows

Was auf einem MS Windows-Zielsystem verfügbar ist, hängt standardmäßig von der Version des Windows Media Player ab, die mit dem Betriebssystem mitgeliefert wurde. Offizielle Informationen finden Sie in der Windows Media Player-Dokumentation.

Unabhängig von Windows Media Player gibt es natürlich zahlreiche Codec-Packs, die installiert werden können. Auf der Codec-Guide-Site finden Sie einige Beispiele.

Android

Siehe Android unterstützte Medienformate für diese Informationen.

Linux

Unter Linux geht es darum, die richtigen GStreamer-Plugins zu installieren.

Mindestens erforderliche GStreamer-Plugins

  • gstreamer1.0-Plugins-Basis
  • gstreamer1.0-plugins-good
  • gstreamer1.0-plugins-pulseaudio

Für ein Linux-Desktop-Ziel wird dringend empfohlen, gstreamer1.0-libav für eine gute Codec-Abdeckung und gstreamer1.0-vaapi für die Hardware-Beschleunigung zu verwenden.

Auf einem eingebetteten Linux könnte der erforderliche Satz an Plugins etwas anders aussehen.

Bestimmung der unterstützten Medienformate zur Laufzeit

Mit der statischen API QMediaFormat können Sie ermitteln, welche Formate auf einem Zielsystem zur Laufzeit verfügbar sind.

Beispiele

Es sind sowohl C++- als auch QML-Beispiele verfügbar.

C++ Beispiele

Camera Example

Zeigt, wie man ein Standbild oder ein Video aufnimmt.

Media Player Example

Abspielen von Audio und Video.

QML-Beispiele

Media Player

Abspielen von Audio und Video mit Qt Quick

QML Media Player Example

Abspielen von Audio und Video mit dem QML MediaPlayer-Typ.

QML Video Recorder

Aufnahme von Audio und Video mit Qt Quick.

Referenzdokumentation

C++-Klassen

QAbstractVideoBuffer

Abstraktion für Videodaten

QAbstractVideoBuffer::MapData

QAbstractVideoBuffer::MapData-Struktur beschreibt das Layout der gemappten Ebene

QCapturableWindow

Wird verwendet, um die grundlegenden Informationen eines erfassbaren Fensters zu erhalten

QMediaCaptureSession

Ermöglicht das Erfassen von Audio- und Videoinhalten

QMediaPlayer

Ermöglicht das Abspielen von Mediendateien

QMediaRecorder

Wird für die Kodierung und Aufzeichnung einer Aufnahmesitzung verwendet

QScreenCapture

Diese Klasse wird für das Capturing eines Bildschirms verwendet

QVideoFrame

Stellt einen Frame von Videodaten dar

QVideoFrameFormat

Gibt das Streamformat einer Videopräsentationsoberfläche an

QVideoFrameInput

Wird verwendet, um benutzerdefinierte Videoframes für QMediaRecorder oder eine Videoausgabe über QMediaCaptureSession bereitzustellen

QVideoSink

Stellt eine generische Senke für Videodaten dar

QVideoWidget

Widget zur Darstellung von Videos, die von einem Medienobjekt erzeugt wurden

QWindowCapture

Diese Klasse wird für das Capturing eines Fensters verwendet

QML-Typen

CapturableWindow

Typ wird verwendet, um die Grundlagen eines Fensters zu erhalten, das für die Aufnahme über WindowCapture verfügbar ist

CaptureSession

Ermöglicht das Aufnehmen von Audio- und Videoinhalten

MediaPlayer

Fügt die Medienwiedergabe zu einer Szene hinzu

MediaRecorder

Für die Kodierung und Aufnahme von Medien, die in einer CaptureSession erzeugt werden

ScreenCapture

Dieser Typ wird für das Capturing eines Bildschirms verwendet

Video

Ein praktischer Typ für die Anzeige eines bestimmten Videos

VideoOutput

Rendern von Video oder Kamerasuchern

WindowCapture

Dieser Typ wird für die Erfassung eines Fensters verwendet

cameraDevice

Beschreibt ein Kameragerät

cameraFormat

Beschreibt ein Videoformat, das von einem Kameragerät unterstützt wird

mediaMetaData

Liefert Metadaten für Mediendateien

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