从源代码编译Qt Multimedia
本页面介绍了配置和构建 Qt Multimedia。本说明假设您已熟悉《Qt源代码构建指南》(该指南规定了您所在平台的构建要求),并了解《Qt配置选项概述》。关于Qt Multimedia 模块的特定平台注意事项,请参阅下方的“平台说明”。
从源代码构建
在大多数平台上,要构建支持全部功能的Qt Multimedia ,需要依赖FFmpeg的头文件和库。虽然可以不使用Qt Multimedia FFmpeg媒体后端来构建Qt Multimedia ,但仅建议在不支持FFmpeg后端的平台上进行此类构建。
构建Qt Multimedia 所需的 FFmpeg 开发库可通过源代码编译,也可下载二进制包。Qt Multimedia 可以采用静态链接或动态链接方式与 FFmpeg 库进行连接。 我们建议使用“目标平台和后端说明”中列出的 FFmpeg 主版本。有关如何构建 FFmpeg 开发库的信息,请参阅《从源代码构建 FFmpeg》。
注意: Qt Multimedia FFmpeg 后端支持的最低 FFmpeg 版本为 FFmpeg 4.4。
若要构建支持 FFmpeg 的Qt Multimedia ,请在构建 Qt 时于 configure 命令行中指定-ffmpeg-dir 选项。
qt-source/configure -ffmpeg-dir <FFMPEG_DIR>此处,<FFMPEG_DIR> 是包含 FFmpeg 的 include、lib 和 bin 目录的目录。若要构建不包含 FFmpeg 的Qt Multimedia ,请省略<FFMPEG_DIR> 变量,并指定-no-feature-ffmpeg 配置选项。
若要不包含原生媒体后端来构建Qt Multimedia ,请使用-no-feature-xxx 来排除相应功能,例如gstreamer 、native_windows_backend 、native_darwin_backend 或native_android_backend 。
qt-source/configure -no-feature-gstreamer如果您不希望构建 Qt 的所有子模块,可以使用-submodules 配置选项来缩短配置和构建时间。这将配置一个仅构建Qt Multimedia 及其依赖项的构建流程。
qt-source/configure -submodules qtmultimedia -ffmpeg-dir <FFMPEG_DIR>如果您将Qt Multimedia 配置为基于使用共享库(动态链接)构建的 FFmpeg,则必须将 FFmpeg 共享库添加到模块加载器的搜索路径中,才能运行测试或使用示例。
注意: Qt Multimedia 在运行时需要 FFmpeg 的 avformat、avcodec、swresample、swscale 和 avutil 库,才能使用 FFmpeg 媒体后端。 如果在应用程序启动时找不到其中一个或多个动态库,FFmpeg 媒体后端将无法加载,系统将尝试加载原生后端。Qt Multimedia 在原生后端上不支持那么多的功能。
如果您的path 中尚未包含这些库,请指定-ffmpeg-deploy 配置选项。启用此选项后,在构建和安装过程中,必要的 FFmpeg 二进制文件将被复制到 Qt 的安装目录中:
qt-source/configure -submodules qtmultimedia -ffmpeg-dir <FFMPEG_DIR> -ffmpeg-deploy配置完Qt Multimedia 后,请仔细检查配置摘要(位于 config.summary 文件中)。您可以在“Plugin”部分验证是否已找到 FFmpeg。然后按照《构建 Qt 源代码》中描述的常规构建和安装步骤进行操作。
注意:当 静态构建Qt Multimedia 时 ,FFmpeg 库的路径会被硬编码到libQt6FFmpegMediaPluginImpl.prl 中。如果您的 Qt 计划在另一台机器上使用,则需要修改该路径。
平台说明
iOS
- 在配置支持 FFmpeg 的Qt Multimedia 时,CMake 配置过程会在提供的 FFmpeg 目录中查找
.xcframework文件。不支持直接使用.dylib上的二进制文件。 有关如何将FFmpeg构建产物打包为.xcframework文件的详细信息,请参阅《在macOS上为iOS从源代码构建FFmpeg》和《https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle》。
Linux
- 在配置Qt Multimedia 并启用FFmpeg时,需要安装pipewire或pulseaudio开发包。若缺少其中任一包,系统将无法识别FFmpeg。
- 当使用支持 VAAPI 的 FFmpeg 版本时,我们建议也以支持 VAAPI 的方式构建Qt Multimedia ,以便实现硬件纹理转换。要配置支持 VAAPI 的Qt Multimedia ,系统上必须安装 VAAPI 开发者库。 请检查 config.summary 文件,确认“硬件加速和功能”部分下已启用 VAAPI 支持。
- 当使用 GStreamer 后端配置Qt Multimedia 时,GStreamer v1.20 是最低要求。不过,我们建议在可能的情况下使用上游发布的最新稳定版 GStreamer。
© 2026 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.