IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Qt Multimedia

The Qt Multimedia module provides APIs for playing back and recording audiovisual content.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Qt Multimedia

"image of multimedia icons, courtesy of misirlou from the Noun Project"

Qt Multimedia is an add-on module that provides a rich set of QML types and C++ classes to handle multimedia content. It contains an easy to use API for playing back audio and video files and rendering those on screen, as well as a comprehensive API for recording audio and video from the systems cameras and microphones.

The functionality of this module is divided into the following submodules:

Qt Multimedia

Provides an API for multimedia-specific use cases.

Qt Multimedia Widgets

Provides a widget-based multimedia API.

Qt Spatial Audio

(Technology Preview) Provides an API for implementing sound fields in 3D space.

Getting started

If you are porting from Qt 5 to Qt 6 see Changes to Qt Multimedia.

If you are new to Qt Multimedia, the QML types can be imported into an application using the following statement in your .qml file.

 
Sélectionnez
import QtMultimedia

To link against the C++ libraries, add the following to your project's CMakeLists.txt file. Substitute my_project with the name of your project.

 
Sélectionnez
find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(my_project PRIVATE Qt6::Multimedia)

Overviews and Important Topics

QML Types

The following table outlines some important QML types.

Type

Description

MediaPlayer

Add audio/video playback functionality to a scene.

CaptureSession

Create a session for capturing audio/video.

Camera

Access a camera connected to the system.

AudioInput

Access an audio input (microphone) connected to the system.

AudioOutput

Access an audio output (speaker, headphone) connected to the system.

VideoOutput

Display video content.

MediaRecorder

Record audio/video from the CaptureSession.

ImageCapture

Capture still images from the Camera.

Video

Add Video playback functionality to a scene. Uses MediaPlayer and VideoOutput types to provide video playback functionality.

C++ Classes

The following table outlines some important C++ Classes

Class

Description

QMediaPlayer

Playback media from a source.

QVideoWidget

Display video from a media player or a capture session.

QMediaCaptureSession

Capture audio and video.

QCamera

Access a camera connected to the system

QAudioInput

Access an audio input (microphone) connected to the system.

QAudioOutput

Access an audio output (speaker, headphone) connected to the system.

QImageCapture

Capture still images with a camera.

QMediaRecorder

Record media content from a capture session.

QVideoSink

Access and render individual video frames.

QAudioSink

Sends raw audio data to an audio output device.

For playback QMediaPlayer, QAudioOutput and QVideoOutput contain all the required functionality. The other classes are used for capturing audio and video content, where the QMediaCaptureSession is the central class managing the whole capture/recording process.

Licenses and Attributions

The Qt Multimedia module is available under commercial licenses from The Qt Company. In addition, it is available under free software licenses. Since Qt 5.6, these free software licenses are GNU Lesser General Public License, version 3, or the GNU General Public License, version 2. See Qt Licensing for further details.

The FFmpeg backend uses the FFmpeg framework. FFmpeg is licensed under LGPLv2.1, GPLv2, or later versions of the licenses. Some optional components of FFmpeg are only available under GPL. The FFmpeg backend shipped with the Qt binary packages is configured to not contain any of the components that are available under GPLv2 only. See the FFmpeg licensing page for further details.

Target platform and backend notes

On most platforms, there are two different backends that can be used for Qt Multimedia.

The first one is the backend built on the native multimedia framework of the underlying operating system. This is currently the default, and will use gstreamer on Linux, AVFoundation on macOS/iOS, WMF on Windows, and the MediaCodec framework on Android.

While we try to support our full API on all backends using the native multimedia framework, platform specific limitations do exist in a few places. This is due to the fact that the feature set supported by those frameworks varies, implying that some functionality might not be available on all platforms. This is especially true for the set of supported file formats and codecs, as well as advanced camera functionality.

Where limitations exist, we aim to document those in the respective classes and methods.

With Qt 6.4, we are adding a new, more platform independent backend based on the FFmpeg framework. The FFmpeg backend is currently available as a technology preview. This backend has the advantage that we can offer proper cross-platform support for all features of Qt Multimedia, going beyond the limitations that exist with many of the native frameworks.

You can test the FFmpeg backend right now by using a Qt build that has FFmpeg enabled and setting the QT_MEDIA_BACKEND environment variable to ffmpeg:

 
Sélectionnez
export QT_MEDIA_BACKEND=ffmpeg

Reference and Examples

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+