问题标签 [xaudio2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
516 浏览

c++ - Qt Creator 中的 XAudio2

我目前正在使用 XAudio2 进行音频项目,并且一直在使用 MSVC++ Express 2010。我编写了一些基本功能,我想我会尝试使用 Qt 制作 UI,所以我按照步骤来使用我的 MSVC 版本中的 Qt:

  • 下载 Qt 源代码
  • 使用 cmd 提示符编译 MSVC 中的所有内容
  • 创建一个使用 qmake & nmake 的 Makefile 项目
  • 在我的项目中添加库、包含、dll 的目录

一切正常。

现在,我很想反过来,将我的项目导入 Qt Creator 以轻松使用 Qt 设计器,也因为我只想玩它,看看我是否喜欢它。

因此,我导入了一个使用 XAudio2 制作的简单控制台应用程序,并在 .pro 中添加了 XAudio 包含路径:

我在编译时遇到的问题是:

该文件就在那里,编译创建它:

我不知道为什么造物主找不到它......有什么想法吗?当我在 MSVC 中工作时,我需要包含一个会自动包含的库吗?

0 投票
1 回答
2296 浏览

c# - 如何使用 XAudio2 重复播放相同的声音?

我需要在我的应用程序中重复播放单个声音,例如,使用 XAudio2 的枪声。

这是我为此目的编写的代码的一部分:

上面的代码实际上是基于 SlimDX 示例。

它现在所做的是,当我反复调用 Play() 时,声音播放如下:

声音->声音->声音

所以它只是填充缓冲区并播放它。

但是,我需要能够在当前播放的同时播放相同的声音因此有效地这两个或更多应该同时混合和播放。

这里有什么我错过的,或者我目前的解决方案不可能(也许 SubmixVoices 可以帮助)?

我试图在文档中找到相关的东西,但我没有成功,而且我可以参考的在线示例并不多。

谢谢。

0 投票
0 回答
821 浏览

windows-8 - 在 Metro XAudio2 和 windows metro 上播放声音会引发异常

我正在尝试在 windows8 上播放 pcm udp 音频流。有没有比做 xaudio2 更简单的方法?

我对 xaudio2 很陌生,创建 xaudio 播放器对我来说是个例外:

我将它作为 WinRT 组件 dll 运行,异常发生在这一行:

我逐步调试了调试器,wfx 和 SourceVoice 结构看起来启动正常。有人可以帮我弄清楚出了什么问题吗?

0 投票
1 回答
787 浏览

c# - XAudio2 OnVoiceProcessingPassStart 回调口吃播放

我正在将 XAudio2 与 SlimDX 一起使用,并且我设法让它在循环中播放一个短(约 8 秒)的 wav 文件,但是当它接近第一个循环的结尾时,音频开始口吃并且口吃继续到下一个循环,随着时间的推移越来越糟。

我打开了调试配置文件,在输出窗口中出现以下错误:

这些与口吃发生的时间相吻合。我在这些回调中什么也没做(我什至没有在事件中添加任何东西),但它正在放慢速度。我在下面添加了我的代码以供参考:

用于保存数据流和缓冲区的 Wave 类:

用于保存 XAudio 引擎和声音的声音类,并涵盖添加/删除声音:

为了运行它,我使用:

0 投票
1 回答
660 浏览

c++ - 缓冲区大小较小的 XAudio2 延迟

我正在写一个视频播放器。对于音频部分,我使用的是 XAudio2。为此,我有单独的线程正在等待 BufferEnd 事件,然后用新数据填充缓冲区并调用 SubmitSourceBuffer。问题是如果缓冲区大小很小(1024 字节),XAudio2(驱动程序或声卡)在播放下一个缓冲区之前会有很大的延迟。我进行了测量,XAudio 播放这样的块需要长达两倍的时间。(48khz 原始 2 通道 pcm 的 1024 字节块应在近 5 毫秒内播放,但在我的计算机上播放时间长达 10 毫秒)。如果我使缓冲区 4kbytes 或更多,几乎没有延迟。我需要这么小的缓冲区才能与视频时钟或外部时钟同步(就像 ffplay 一样)。如果我的缓冲区太大,那么最终用户会因为同步的东西而在输出中听到很多噪音。

此外,我已经对我的所有功能进行了测量,这些功能正在解码和同步音频或其他任何可能阻塞或产生延迟的功能,它们需要 0 或 1 毫秒来执行,所以它们不是 100% 的问题。

有谁知道它会是什么以及为什么会发生?任何人都可以检查他是否有与小缓冲区相同的延迟问题?

0 投票
0 回答
491 浏览

c++ - XAudio2 播放延迟

我正在尝试使用 xaudio 播放原始 pcm 数据,但播放延迟很大(> = 5ms)。我正在使用下一个代码执行此操作:

Time 类只是 GetTickCount 下的一个包装器,生成的 t2-t1 将以毫秒为单位返回差异。我已经检查过我的 Time 课程不会产生任何额外的延迟。
以毫秒为单位计算播放时间并不难:play_time = size*1000 / (channels*(bits_per_sample/8) * frequency)

因此,对于大小为 4608 字节、48 khz、2 个通道、每个样本 16 位的数据,播放这样的块需要将近 24 毫秒。相反,我上面显示的代码需要大约 >= 31 毫秒来播放这样的块。是什么造成了这种延迟?如果我正在编写视频播放器并从实时流中获取数据(我已经具有同步功能,但是对于这样的小样本,5ms 的延迟会产生不理想的声音),如何处理它?

此外,我已经在 2 台具有不同硬件的 Windows 7 计算机上测试了此代码。两者都产生相同的延迟。

0 投票
1 回答
390 浏览

c# - SlimDX for c# XAudio2 效果器(混响)

如何为声音添加混响效果?我找不到任何 XAudio2Reverb 类或任何东西。但是,我确实遇到了这个页面

看起来混响效果的代码是写的,但在下载的 SDK 和可再发行的这个类(甚至不是 XAudio2.FX 命名空间)上不存在,所以有一个链接或其他东西我可以这个版本的 SlimDX2 或做我必须下载源代码并编译它吗?

0 投票
1 回答
379 浏览

audio - 如何在 XAudio2 中设置子混音的输出?(地铁)

我尝试使用 SetOutputVoices 函数和构造函数参数,但是当用于子混音语音时,两者都会导致 XAUDIO2_E_INVALID_CALL 作为结果。

文档说你是通过从音频回调中调用它来得到这个错误的,但我不是。我什至尝试在启动音频引擎之前调用它。

同样的方法适用于源声音,所以我很确定我没有传递一个糟糕的 XAUDIO2_VOICE_SENDS 结构。

0 投票
1 回答
624 浏览

dll - Mingw、XAudio2 和 GetProcAddress 失败

我正在尝试将 XAudio2 与 Mingw 一起使用。由于我无法弄清楚我应该做什么来让 Mingw 链接 XAudio2,我想我会尝试纯粹通过加载 dll 来使用 XAudio2。但是以下代码无法使用 GetProcAddress 找到 XAudio2Create。

0 投票
2 回答
311 浏览

fft - 为自定义 xaudio2 效果指定样本数

我正在尝试编写一个涉及傅立叶变换的自定义 xaudio2 效果。但是,每次调用过程方法的样本数不是 2 的幂(我拥有的傅立叶变换实现的前提条件)。

有没有办法强制 2 个大小的样本的功率?有没有一种技术可以使用 2 种尺寸的非功率?