Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qtmultimedia-building-from-source.qdoc
Go to the documentation of this file.
1
// Copyright (C) 2024 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
3
4
/*!
5
\page qtmultimedia-building-from-source.html
6
\title Building Qt Multimedia from sources
7
\brief This document describes how to build Qt Multimedia with full
8
feature support from source code.
9
10
This page describes the process of configuring and building \l{Qt
11
Multimedia}. This description assumes familiarity with \l{Building Qt
12
Sources} which specifies build requirements for your platform, as well
13
as an overview of \l{Qt Configure Options}. For platform-specific
14
considerations related to the Qt Multimedia module, see \l{Platform
15
Notes} below.
16
17
\section1 Building from source
18
19
Building Qt Multimedia with full feature support depends on \l
20
{https://ffmpeg.org/}{FFmpeg} headers and libraries on most platforms.
21
It is possible to build Qt Multimedia without the Qt Multimedia FFmpeg
22
media backend, but this is only recommended when building for platforms
23
where the FFmpeg backend is not supported.
24
25
FFmpeg development libraries required to build Qt Multimedia can be
26
built from sources or downloaded as binary packages. Qt Multimedia can
27
use either static linking or dynamic linking to FFmpeg libraries. We
28
recommend using the same major version of FFmpeg that is listed in
29
\l{Target platform and backend notes}. For information on how to build
30
the FFmpeg development libraries, see \l{Building FFmpeg from source}.
31
32
\note The minimum supported FFmpeg version for the Qt Multimedia FFmpeg
33
backend is FFmpeg 4.4.
34
35
To build Qt Multimedia with FFmpeg support, specify the \c{-ffmpeg-dir}
36
option on the configure command line when building Qt.
37
38
\badcode
39
qt-source/configure -ffmpeg-dir <FFMPEG_DIR>
40
\endcode
41
42
Here, \c{<FFMPEG_DIR>} is the directory containing the FFmpeg include,
43
lib, and bin directories. To build Qt Multimedia without FFmpeg, omit
44
the \c{<FFMPEG_DIR>} variable and specify the \c{-no-feature-ffmpeg}
45
configure option.
46
47
To build Qt Multimedia without native media backends, use
48
\c{-no-feature-xxx} to exclude the corresponding features, such as
49
\c gstreamer, \c native_windows_backend, \c native_darwin_backend or
50
\c native_android_backend.
51
52
\badcode
53
qt-source/configure -no-feature-gstreamer
54
\endcode
55
56
If you prefer not to build all Qt's submodules, you can reduce configure
57
and build times using the \c{-submodules} configure option. This will
58
configure a build that only builds Qt Multimedia and its dependencies.
59
60
\badcode
61
qt-source/configure -submodules qtmultimedia -ffmpeg-dir <FFMPEG_DIR>
62
\endcode
63
64
If you configure Qt Multimedia against FFmpeg built with shared
65
libraries (dynamic linking), the FFmpeg shared libraries must be in the
66
module loader's search path to run tests or use examples.
67
68
\note Qt Multimedia requires the FFmpeg avformat, avcodec, swresample,
69
swscale, and avutil libraries during runtime to be able to use the
70
FFmpeg media backend. If one or more of these dynamic libraries are not
71
found during application startup, the FFmpeg media backend will fail to
72
load, and the system will attempt to load the native backend. Qt
73
Multimedia doesn't support as many features on native backends.
74
75
If you don't already have these libraries in the \c{path}, specify the
76
\c{-ffmpeg-deploy} configure option. With this option enabled,
77
the necessary FFmpeg binaries will be copied to Qt's install directory
78
during the build and install steps:
79
80
\badcode
81
qt-source/configure -submodules qtmultimedia -ffmpeg-dir <FFMPEG_DIR> -ffmpeg-deploy
82
\endcode
83
84
After configuring Qt Multimedia, carefully review the configure summary
85
(found in the config.summary file). You can verify that FFmpeg is found
86
under the "Plugin" section. Then follow the regular build and install
87
steps described in \l{Building Qt Sources}.
88
89
\note When building Qt Multimedia statically, the path to the FFmpeg libraries
90
is baked into \c{libQt6FFmpegMediaPluginImpl.prl}. You will need to patch the
91
path if your Qt is supposed to be used on a different machine.
92
93
\section1 Platform Notes
94
95
\section2 iOS
96
97
\list
98
\li When configuring Qt Multimedia with FFmpeg support, the CMake
99
configuration process looks for \c .xcframework files in the
100
supplied FFmpeg directory. Using \c .dylib binaries directly
101
is not supported. See \l{Building FFmpeg from source for iOS on macOS}
102
and \l{https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle}
103
for details on how to package FFmpeg build artifacts into
104
\c .xcframework files.
105
\endlist
106
107
\section2 Linux
108
109
\list
110
\li When configuring Qt Multimedia with FFmpeg enabled, the
111
pipewire or the pulseaudio development package is required. Without
112
one of these packages, FFmpeg will not be recognized.
113
\li When using a version of FFmpeg that is built with VAAPI support,
114
we recommend building Qt Multimedia with VAAPI support as well
115
to make hardware texture conversion possible. To configure Qt
116
Multimedia with VAAPI support, VAAPI developer libraries must be
117
installed on your system. Review the config.summary file to
118
verify that VAAPI support is enabled under the "Hardware
119
acceleration and features" section.
120
\li When configuring Qt Multimedia with the GStreamer backend, GStreamer
121
v1.20 is the minimum requirement. However, we recommend using the
122
latest stable GStreamer upstream release if possible.
123
\endlist
124
*/
qtmultimedia
src
multimedia
doc
src
qtmultimedia-building-from-source.qdoc
Generated on
for Qt by
1.16.1