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.
- Verwenden Sie QMediaFormat::isSupported() auf einem QMediaFormat::ConversionMode, um ein bestimmtes Format abzufragen.
- Verwenden Sie QMediaFormat::supportedFileFormats() für ein standardmäßig konstruiertes QMediaFormat, um alle unterstützten Dateiformate abzurufen.
Beispiele
Es sind sowohl C++- als auch QML-Beispiele verfügbar.
C++ Beispiele
Zeigt, wie man ein Standbild oder ein Video aufnimmt. | |
Abspielen von Audio und Video. |
QML-Beispiele
Abspielen von Audio und Video mit Qt Quick | |
Abspielen von Audio und Video mit dem QML MediaPlayer-Typ. | |
Aufnahme von Audio und Video mit Qt Quick. |
Referenzdokumentation
C++-Klassen
Abstraktion für Videodaten | |
QAbstractVideoBuffer::MapData-Struktur beschreibt das Layout der gemappten Ebene | |
Wird verwendet, um die grundlegenden Informationen eines erfassbaren Fensters zu erhalten | |
Ermöglicht das Erfassen von Audio- und Videoinhalten | |
Ermöglicht das Abspielen von Mediendateien | |
Wird für die Kodierung und Aufzeichnung einer Aufnahmesitzung verwendet | |
Diese Klasse wird für das Capturing eines Bildschirms verwendet | |
Stellt einen Frame von Videodaten dar | |
Gibt das Streamformat einer Videopräsentationsoberfläche an | |
Wird verwendet, um benutzerdefinierte Videoframes für QMediaRecorder oder eine Videoausgabe über QMediaCaptureSession bereitzustellen | |
Stellt eine generische Senke für Videodaten dar | |
Widget zur Darstellung von Videos, die von einem Medienobjekt erzeugt wurden | |
Diese Klasse wird für das Capturing eines Fensters verwendet |
QML-Typen
Typ wird verwendet, um die Grundlagen eines Fensters zu erhalten, das für die Aufnahme über WindowCapture verfügbar ist | |
Ermöglicht das Aufnehmen von Audio- und Videoinhalten | |
Fügt die Medienwiedergabe zu einer Szene hinzu | |
Für die Kodierung und Aufnahme von Medien, die in einer CaptureSession erzeugt werden | |
Dieser Typ wird für das Capturing eines Bildschirms verwendet | |
Ein praktischer Typ für die Anzeige eines bestimmten Videos | |
Rendern von Video oder Kamerasuchern | |
Dieser Typ wird für die Erfassung eines Fensters verwendet | |
Beschreibt ein Kameragerät | |
Beschreibt ein Videoformat, das von einem Kameragerät unterstützt wird | |
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.