问题标签 [wasapi]

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 回答
1442 浏览

c# - 我应该为我的音频项目使用 DirectSound 还是 WASAPI?

我正在启动一个最低要求为 Windows 7 的项目。我将使用 NAudio 作为我的音频接口。我不确定我应该使用什么:DirectSound 还是 WASAPI?我将执行以下操作:

  1. 在多个 USB 声卡上为扬声器和麦克风操作音量/静音。
  2. 将声卡 2 的输入重新路由到声卡 2 的输出(如果可能的话)。
  3. 使用一些效果来操作声卡的音频输入。

我知道 DirectSound 在幕后通过 WASAPI 处理所有音频,听起来 DirectSound 已加入弃用技术列表。

但是,我的问题更多来自功能层面:哪个 API 可以让我做我上面描述的事情。

0 投票
1 回答
2127 浏览

wasapi - WASAPI AudioClient.GetMixFormat() 返回 AUDCLNT_E_NOT_INITIALIZED

我第一次尝试使用 AudioClient 接口,但没有运气。到目前为止,我设法使用成功的 MMDeviceEnumerator 和 MMDevice 接口获得了默认的 AudioClient 接口:

(这里不包括结果检查代码)。这 3 个调用都没有返回任何错误,并且我在 AudioClient 变量中有一个非零接口 ptr。我的问题是当我尝试获得混合波形时:

这将返回代码 0x88890001,即 AUDCLNT_E_NOT_INITIALIZED。-> 当然没有初始化,因为我只想先得到它喜欢的波形。

查找msdn告诉可以在AudioClient.Initialization之前调用AudioClient.GetMixFormat。AUDCLNT_E_NOT_INITIALIZED 也不在可能的返回值列表中。所以我很困惑我做错了什么。GetMixFormat() 文档-> http://msdn.microsoft.com/en-us/library/windows/desktop/dd370872(v=vs.85).aspx

另一个奇怪的事情是,当我调用 AudioClient.GetStreamLatency() 时,它返回 S_OK 和一个大约 1000 毫秒的准随机值。但是文档指出“此方法需要事先初始化 IAudioClient 接口。在客户端通过成功调用初始化音频流之前,对该方法的所有调用都将失败并出现错误 AUDCLNT_E_NOT_INITIALIZED”。因此,我认为我有一个可用的 AudioClient 接口,我只是不明白为什么它不像文档所说的那样工作。

(我使用的是 64 位 win7,Sound Blaster Live 5.1 和 kx-project 驱动程序(DSound 和经典 windows MM 声音工作正常,但有 100 毫秒可怕的长延迟,这就是我要在 win7 上使用 WASAPI 的唯一原因)

先感谢您。

0 投票
2 回答
5019 浏览

capture - 使用 Naudio + WASAPI 捕获麦克风音频?

我正在寻找有关如何使用 Naudio + WASAPI 捕获麦克风音频的示例代码。

(我对直接到磁盘录制不感兴趣,我需要实时处理输入缓冲区以做一些音频效果。)

我搜索了很多,但在网上找不到任何像样的样本。

你能帮忙吗?

也欢迎 PS BASS 库和 C# 示例!

0 投票
0 回答
533 浏览

c - WASAPI:会话未到期

编辑:我没有将适当的标志传递给初始化方法,我认为 MSDN 上的音频会话页面在这方面有点误导,因为它似乎暗示它是默认行为,但是默认行为是会话与进程相关联,要允许它们在流被释放时终止,您需要通过:

AUDCLNT_SESSIONFLAGS_EXPIREWHENUNOWNED AUDCLNT_SESSIONFLAGS_DISPLAY_HIDEWHENEXPIRED

http://msdn.microsoft.com/en-us/library/windows/desktop/dd370789(v=vs.85).aspx


好的,所以我一直在尝试让一些音频正常工作,基本上我想在播放音频和视频的同一进程下打开多个窗口(除了最上面的音频之外,所有的音频都被静音)。我在音频会话方面遇到问题,我为每个流创建了一个唯一的会话,但是当我认为我关闭了流时会话并没有关闭。

我的理解是 sndvol 将显示处于活动/非活动状态的会话,当您释放对流的所有引用时,会话将设置为过期并且不再出现在 sndvol 中,但是我发现对于我打开的每个流,一个新会话出现在 sndvol 但是在整个过程结束之前,它不会被删除,而不是在音频线程结束时(即当我关闭窗口/更改输入时)。

这是我的音频线程,我已经将它剥离到它的基本部分,该IAudioSessionControl界面仅用于帮助我确定要调试的会话的状态,在“音频循环”中它是活动的,其他地方都是不活动的,但是我以为它会在我发布后过期我pAudioClient在这里错了,我还应该发布什么?

SAFE_RELEASE()定义如下:

0 投票
1 回答
393 浏览

windows-phone-8 - 如何在 WP8 中合并到声音文件?

是否可以将从麦克风捕获的声音与选择的 mp3 文件合并并在 windows phone 8 中另存为新的 mp3 文件?

naudio有wp8支持吗??

0 投票
1 回答
2282 浏览

c++ - 处理特定应用程序的音量级别

使用 WASAPI,我可以控制系统音量。我想知道,我可以通过编程控制特定应用程序的音量。(当然,这只是在windows7之后)有可能吗?

0 投票
1 回答
1246 浏览

c++ - WASAPI + windows 商店应用初始化

我正在尝试编写一个程序来捕获您的语音,并将我的效果应用于捕获的音频并立即播放。我正在用 C++ 将这个应用程序写到 Windows 商店。在经历了 MediaCapture 之后,我决定使用 WASAPI 来做到这一点。我正在使用 msdn 中的示例来设置WASAPI。正如我所料,我很快就遇到了问题。所以问题出在以下两行:

视觉工作室说:

我不知道这意味着什么。我会很感激这里的一些帮助。

0 投票
1 回答
442 浏览

c++ - WASAPI 延迟播放

我正在用 c++ 编写一个程序到 Windows 商店,它可以播放麦克风。在将其发送给扬声器之前,我必须修改这些位。首先,我想在没有任何延迟的情况下播放麦克风。频率和比特率是相同的(24 位,192000Hz),但我也尝试过(24 位,96000Hz)。我对其进行了调试,似乎扬声器速度更快,因此它必须等待来自麦克风的数据,就像吱吱声会以更高的频率工作,但根据设置它不会。任何人都知道这里有什么问题吗?

0 投票
1 回答
1843 浏览

c# - 在 Windows 7 中设置采样率

我目前正在努力寻找以编程方式设置 USB 声卡的采样率和比特率的解决方案。我正在努力将我们的测试程序从 Windows XP 切换到 Windows 7,并且我们有一个像 USB 声卡一样的产品。我们的一些测试是通过声卡发送 48k 信号,并在将信号路由通过 DAC 后测量信号。我认为测量硬件固件/软件没有将其信号发生器置于独占模式,Windows 感到困惑并将设备置于共享模式,默认采样率为 44.1k/16bit,我想更改此值当我们将设备启动到 48k/24bit 时。

我希望有人能把我推向正确的方向,因为我所看到的一切都告诉我这是不可能的......(另外,我更喜欢 .NET 解决方案,或者我可以调用/执行的任何东西.NET 就可以了)。

这是我尝试过的一件事,但这最终只设置了一个用于播放音频的对象,它并没有设置好样本/位深度。

0 投票
1 回答
303 浏览

wasapi - 如何从麦克风阵列访问单个麦克风(Win 8.1)

我想访问麦克风阵列中的单个麦克风,以测试质量。如何使用 c# 访问它?我可以使用 NAudio 吗?我如何使用 WASAPI 呢?

谢谢