Die Änderungen an Qt Multimedia
Qt 6 sind das Ergebnis des bewussten Bemühens, das Framework effizienter und benutzerfreundlicher zu gestalten.
Wir versuchen, die Binär- und Quellcodekompatibilität für alle öffentlichen APIs in jeder Version zu erhalten. Aber einige Änderungen waren unvermeidlich, um Qt zu einem besseren Framework zu machen.
Das Modul wurde erheblich umstrukturiert und hat seine Klassifizierung geändert, von essentiell zu add-on. Das Modul Qt Multimedia in Qt 6 ersetzt das Modul Qt Multimedia aus Qt 5.x. Bestehender Code, der Qt Multimedia aus Qt 5 verwendet, kann mit geringem Aufwand portiert werden.
Neue Funktionen in Qt 6
Es gibt eine Reihe von neuen Funktionen in Qt Multimedia:
- QMediaCaptureSession class ist das zentrale Objekt für die Medienerfassung.
- QMediaRecorder class ist nun eine Klasse, die auf die Aufnahme von Audio und Video beschränkt ist. Sie kümmert sich um die Kodierung der in einer Aufnahmesitzung erzeugten Daten.
- Mit QMediaFormat und QMediaRecorder hat sich die Einstellung der gewünschten Kodierung bei der Aufnahme erheblich verändert.
- Sie können nun auch das von einer Aufzeichnungssitzung aufgezeichnete Audio überwachen.
- Es wurde Unterstützung für die Auswahl von Audio-, Video- und Untertitelspuren bei der Wiedergabe von Mediendateien hinzugefügt.
- QAudioDecoder wird nun auf allen Plattformen unterstützt.
Entfernte Funktionen
Entfernte Funktion | Hinweise oder vorgeschlagene Alternative |
---|---|
Wiedergabeliste in QMediaPlayer | QMediaPlayer führt in Qt 6 keine Wiedergabelistenbehandlung mehr durch. |
QMediaPlayList | Diese Klasse wurde aus der API entfernt. Sie existiert jedoch noch als Teil des Media Player Beispiels. |
QAudioProbe und QVideoProbe | Die Audio- und Video-Sondierungs-API wurde entfernt. |
QAudioRecorder | Verwenden Sie den QML-Typ QMediaCaptureSession oder CaptureSession. |
Audio QML-Typ | Verwenden Sie den MediaPlayer QML-Typ. |
QMediaObject und QMediaBindableInterface | Diese Klassen wurden zugunsten einer direkteren API zum Einrichten von Verbindungen zwischen Objekten entfernt, z. B. mit setVideoOutput und QMediaCaptureSession. |
QCameraViewFinderSettings | Diese Klasse wurde entfernt. Verwenden Sie QCameraFormat, um die Auflösung und die Bildrate zu definieren, die die Kamera verwenden soll. |
QMediaContent | Die Klasse wurde entfernt. Verwenden Sie stattdessen QUrl für einzelne Mediendateien. |
QSound | Verwenden Sie stattdessen QSoundEffect. |
QVideoFilterRunnable | Verwenden Sie stattdessen Shader-Effekte in QML oder greifen Sie in C++ auf den Inhalt von QVideoFrame zu. |
Öffentliche Backend-API | Die Backend-API von Qt Multimedia ist in Qt 6 privat. Dies verbessert die Reaktionszeit bei der Unterstützung neuer Multimedia-Anwendungsfälle. Alle Klassen, die in Qt 5 die Worte "Control" oder "Abstract" im Klassennamen enthalten, sind nun in Qt 6 privat. |
Backend-Plugins | Qt Multimedia Qt 6 verwendet keine Plugin-Infrastruktur mehr für seine Backends. Das bedeutet, dass die Benutzer diese Backends nicht mehr mit ihrer Anwendung ausliefern müssen. Stattdessen wird das verwendete Backend zur Kompilierzeit auf der Grundlage des zugrunde liegenden Betriebssystems bestimmt. Qt verwendet gstreamer unter Linux, WMF unter Windows, AVFoundation unter macOS und iOS und die Android Multimedia APIs unter Android. |
Geänderte Funktionen
Eine Reihe von Klassen, die zuvor in Qt Multimedia angeboten wurden, haben sich in einer Weise geändert, die sich auf zuvor geschriebenen Code auswirken kann. In der folgenden Tabelle sind diese Änderungen aufgeführt.
Geänderte Funktion | Hinweise |
---|---|
Handhabung von Kameraauflösungen und Bildraten | Die Handhabung wurde vereinfacht und eine neue Klasse QCameraFormat hilft bei der Auswahl der richtigen Auflösung und Bildrate für die Kamera. |
Die Handhabung der Videoausgabe auf der C++-Seite wurde erheblich geändert. | QAbstractVideoSurface wurde durch die Klasse QVideoSink ersetzt, und die generische Rendering-Unterstützung wurde verbessert, um alle von Qt Multimedia unterstützten Pixelformateabzudecken. |
Metadaten-Typen | QMediaMetaData wurde erheblich geändert: hauptsächlich wurde von String-basierten zu Enum-basierten Schlüsseln gewechselt, und die Menge der unterstützten Schlüssel wurde auf diejenigen reduziert, die auf den meisten Plattformen unterstützt werden können. |
QMediaFormat | Die Handhabung von Formaten für kodierte Medien und die Einstellungen für den Medienrekorder haben sich erheblich geändert. Qt 5 bietet eine String-basierte API, ein separates Dateiformat und Audio- und Video-Codecs in drei Klassen. Qt 6 hingegen vereinheitlicht die Formate in der Klasse QMediaFormat. Zusätzliche Einstellungen werden direkt in QMediaRecorder festgelegt. Das Einrichten von Dateiformaten und Codecs ist nun mit Enums implementiert und verwendet keine Strings mehr. Dies schränkt die Menge der verwendbaren Codecs etwas ein, hilft aber, eine konsistente, plattformübergreifende API bereitzustellen. |
QCameraImageCapture umbenannt in QImageCapture | Keine |
Audio-Eingänge und -Ausgänge | QMediaPlayer und QMediaCaptureSession (und die entsprechenden QML-Typen MediaPlayer und CaptureSession) sind standardmäßig nicht mit Audiogeräten verbunden. Verbinden Sie sie explizit mit einem QAudioInput/AudioInput oder QAudioOutput/AudioOutput, um Audio aufzunehmen oder wiederzugeben. |
Video aufzeichnen | Eine Aufnahmesitzung ist standardmäßig nicht mit einer Kamera verbunden. Verbinden Sie sie mit einem QCamera Objekt (Element Kamera), um Video- oder Standbilder aufnehmen zu können. |
© 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.