空间音频概述

Qt Spatial Audio API 提供了大量可创建三维声音场景的类。该场景由三维空间中可发出声音的对象和周围的几何体定义,这些几何体可使用一个或多个房间进行建模。最后,可以在指定的位置和方向将监听器放置到声音场景中。

可以使用 C++ 和 QML API。

创建声音场景

要创建声音场景,首先要实例化QAudioEngine 。该引擎会处理输入的声音数据和几何图形,以创建逼真的声音场景,就像人被放置在场景内的特定位置时会感受到的那样。

QAudioEngine::OutputMode 属性可用于优化输出,既可用于使用双耳(虚拟 3D 渲染)的耳机,也可用于立体声或环绕声扬声器配置。

输出设备可通过QAudioEngine::outputDevice 属性进行选择。

引擎设置完成后,我们可以通过创建QSpatialSound 对象并使用QSpatialSound::source 属性指定声音文件的URL,将各种声音对象放置到场景中。

QAudioListener 听者 "属性可用于定义声音场景中听者的位置和方向。每个引擎最多可使用一个监听器。如果没有指定聆听者,引擎会假定聆听者位于坐标系的原点,面向正 Z 方向,正 Y 方向朝上。

除了声源和聆听者之外,您还可以定义一个几何体,通过一组QAudioRoom 对象来影响聆听者对声音的体验。房间是矩形的,每面墙壁都可以使用多种材料,通过不同的声音反射和混响效果带来不同的体验。如果听众位于其中一个房间内,房间效果就会被应用。如果听众位于多个房间内,则以几何体积最小的房间为优先。

如果您需要一些不受聆听者位置和方向影响的立体声叠加(如背景音乐或画外音),您可以使用QAmbientSound 来创建声音叠加。

如需了解基于 QWidget 的小型示例,展示可在房间内移动的音源,请参阅空间音频平移示例

参考文档

C++ 类

QAmbientSound

立体声叠加音效

QAudioEngine

管理三维声场

QAudioListener

定义收听 QAudioEngine 所定义声场的人的位置和方向

QAudioRoom

QSpatialSound

三维空间中的声音对象

QML 类型

AmbientSound

立体声覆盖声音

AudioEngine

管理三维场景中的声音对象

AudioListener

定义聆听音频引擎所定义声场的人的位置和方向

AudioRoom

SpatialSound

三维空间中的声音对象

© 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.