高级 FFmpeg 配置
本页列出了 FFmpeg 媒体后台的可配置功能。所有功能都是私有 API 的一部分,将来可以在未经确认的情况下更改或删除。请注意,环境变量默认由子进程继承,可能会产生意想不到的后果。
启用 FFmpeg 和 Qt FFmpeg 媒体后端的日志记录
您可以通过环境变量配置高级 FFmpeg 日志输出。
QT_FFMPEG_DEBUG=1
启用来自 FFmpeg 库的额外日志,可帮助你了解涉及 FFmpeg 库的问题。QT_LOGGING_RULES="*.ffmpeg.*=true"
在 FFmpeg 插件中打开 Qt 开发人员日志。FFmpeg 插件中的日志类别通常称为 "qt.multimedia.ffmpeg.XXX"。要启用来自 的所有开发者日志,请设置Qt MultimediaQT_LOGGING_RULES="*.multimedia.*=true"
- 如果同时设置了
QT_FFMPEG_DEBUG
和QT_LOGGING_RULES
,则在首次使用来自QMediaPlayer 、QAudioDecoder 或QMediaRecorder 的编码或解码功能时,将打印所有可用的 FFmpeg 编解码器。这些信息可以帮助您了解Qt Multimedia 没有找到合适的 FFmpeg 解码器或编码器的情况。如果遇到特定于编解码器的问题,我们建议将编解码器转储附加到 Qt 错误报告中。
启用实验性 FFmpeg 编解码器
FFmpeg 公开了一些编解码器,如 Opus 或 Vorbis,作为实验性编解码器。实验性编解码器并不严格遵循标准,可能不稳定。默认情况下,它们是禁用的。要启用它们,请设置环境变量QT_ENABLE_EXPERIMENTAL_CODECS=1
。
配置允许的网络协议
出于安全原因,FFmpeg 库限制使用嵌套协议,即其他协议使用的协议;请参阅FFmpeg 协议文档。例如,您可以通过环境变量QT_FFMPEG_PROTOCOL_WHITELIST
明确覆盖允许的协议:
export QT_FFMPEG_PROTOCOL_WHITELIST=file,crypto,rtp,udp
警告: 请注意,嵌套协议与不受信任的数据一起使用时,可能会带来安全漏洞。只允许符合安全和业务要求的协议。
在后端配置硬件加速
- 显式解码和编码硬件加速后端。
FFmpeg 插件会根据可用性、稳定性、效率和实施细节选择硬件加速后端进行解码和编码。如果所选硬件后端不能按预期工作,可以尝试设置自定义优先级列表,或通过环境变量
QT_FFMPEG_DECODING_HW_DEVICE_TYPES
和QT_FFMPEG_ENCODING_HW_DEVICE_TYPES
禁用所有硬件后端。可用的硬件后端包括- cuda
- drm
- dxva2
- d3d11va
- d3d12va、
- opencl
- qsv
- vaapi
- vdpau
- 视频工具箱
- mediacodec
- vulkan
不过,硬件后端是否可用取决于操作系统、安装的驱动程序、FFmpeg 版本和配置。需要注意的是,有些设备类型尚未经过 Qt 维护者的Qt Multimedia 测试,可能无法按预期运行。在撰写本文时,这些后端包括
- drm
- opencl
- qsv
- vdpau
- vulkan
示例
# Set vdpau or cuda encoding hardware backends export QT_FFMPEG_ENCODING_HW_DEVICE_TYPES=vdpau,cuda # Set only d3d12va decoding hardware backend export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=d3d12va # Disable decoding hw backends (set an empty list) export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=,
- 硬件纹理转换。
利用基于 GPU 的视频帧解码和渲染转换可以显著降低 CPU 的使用率。我们的目标是在尽可能多的硬件后端使用这一特性。如果发现任何渲染问题,请考虑在不进行 GPU 纹理转换的情况下测试渲染,以找出原因。您可以使用
QT_DISABLE_HW_TEXTURES_CONVERSION
环境变量禁用 GPU 纹理转换:QT_DISABLE_HW_TEXTURES_CONVERSION=1
。使用VAAPI
硬件后端时,硬件纹理转换默认为禁用。设置QT_XCB_GL_INTEGRATION=xcb_egl
可启用该功能。 - 允许编解码器配置文件不匹配。
如果编解码器配置文件与报告的硬件能力不匹配,可以忽略不匹配情况,并允许通过
QT_FFMPEG_HW_ALLOW_PROFILE_MISMATCH=1
进行硬件解码。例如,当您使用VAAPI
硬件后端对基线配置文件 H.264 进行硬件加速解码时,设置该选项可能会有帮助,因为大多数此类数据流都能满足现有 H.264 硬件解码器的限制。警告: 如果流不受支持,强制硬件解码可能会导致完全不正确的视频输出。
© 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.