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