问题标签 [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.
c# - 如何使用 NAudio 更改 WASAPI 记录比特率?
我正在使用 NAudio 解码、播放和录制 MP3 流。对于录制,我使用WasapiLoopbackCapture
将流保存到 wav 文件:
我现在正在寻找一种解决方案来保存 wav 文件而不是 3072 kBit/s(这似乎是 wasApi 的标准)。mp3 流提供 128 kBit/s,所以这对于我的 wav 文件来说是一个很好的比特率。我试图修改waveIn.WaveFormat
但我没有找到正确的属性。
c++ - 这个 GetDefaultAudioEndpoint 程序有什么问题?
这是一个使用该函数的非常简单的程序:
当我尝试运行它时,我收到以下错误:
这有什么问题?我现在正在尝试学习如何使用此功能。谢谢!
编辑:
我已将程序更改为:
当我运行它时,我得到“失败”的输出。发生了什么?
编辑:
好的,现在我已经对代码进行了足够的更改,让它一直运行而不会出现任何故障。IE,
我之前在这个例子中遇到的一些问题(见答案的评论)只是通过删除一些代码来解决的。但是当我运行 main() 函数的这个新主体时,我得到了输出“0000”,这意味着 cout << hr 总是计算为“0”。这是一件好事吗?我现在可以获得关于默认设备的哪些信息?小时。和 hr-> 并没有真正调出任何菜单,所以我有点不知所措。谢谢!
windows - 如何从 IMMDevice 中获取信息?
关于 IMMDevice,我是一个完整的初学者,我需要问一下,从信息中获取一些设备的好方法是什么。在我的程序中,我已经成功地使用 GetDefaultAudioEndpoint() 设置了指向其中之一的指针。现在我只需要能够从中获取一些基本信息,比如一些演讲者信息或演讲者的 ID 或类似的东西。有什么好的方法可以让一个初学者能够学会?谢谢!
audio-recording - Metro 应用程序中的音频捕获
我需要在我的 Windows 8 Metro 风格应用程序中执行低级音频捕获。
我想我需要使用 IAudioClient 接口,但是如何获取该接口?
微软表示“客户端通过使用 IMMDevice 接口中描述的技术之一获得对音频端点设备的 IAudioClient 接口的引用。”
http://msdn.microsoft.com/en-us/library/windows/desktop/dd370865(v=vs.85).aspx
但是 Metro 风格的应用程序不支持 IMMDevice 接口。
如何获得 IAudioClient 接口?
windows - 排除数据被 WASAPI 中的环回模式捕获
是否可以排除IAudioClient
环回模式捕获的音频数据 ( AUDCLNT_STREAMFLAGS_LOOPBACK
) 或渲染不会包含在环回捕获的音频数据中的音频流。
独占模式 ( AUDCLNT_SHAREMODE_EXCLUSIVE
) 的流不会被捕获,但它也会阻止其他应用程序在同一设备上呈现音频数据。
windows - DirectSound 和 WinMM 是基于 WASAPI 的吗?
我在这张幻灯片中看到 vista 中的 winmm 和 directsound 基于 wasapi。
这是否意味着 winmm 和 directsound 实际上是通过调用 WASAPI 中的函数来完成它们的工作的?
经过一些谷歌搜索后,我无法找到此信息,希望这里有人知道。
c++ - 在 VS 2010 中链接 WASAPI
我正在使用 Visual Studio 2010 并包含以下标头:
除其他外,引用这些函数:
我已经链接了 winmm.lib,但是我收到了这样的错误:
我需要链接什么 .lib 文件来获取这些功能?是否有关于如何在 VS 2010 中找到与 .h 文件关联的 .lib 的任何指导?
我正在查看 MSDN 中的一些示例代码,但找不到需要链接的库。
c# - WASAPI C++ DLL 线程挂在 C# 应用程序中
我已经非常彻底地寻找了一个类似的问题,但还没有真正找到我所拥有的确切情况。
我有一个用于创建线程并等待来自声卡的事件来填充输出缓冲区的音频应用程序的非托管 dll。
该应用程序在板载声卡上运行良好,但如果我切换到任何 USB 音频设备,线程就会挂起。
这是主要代码位:我在我的 Initialize 函数中初始化我的事件
并在初始化后将其传递给声音设备
这是线程
我等待的两个事件是关闭事件和来自声卡的 samplesready 事件。它总是命中一次,然后挂起。同样,这仅适用于 USB 音频接口。
c - 在 Windows 7 上对音频文件使用 u-law 压缩
我需要将一些高分辨率音频文件转换为 u-law 压缩。我没有找到这方面的文档——我几乎可以肯定 Windows 机器上有编解码器,但我到底要如何访问它呢?
windows - WASAPI 的问题
我正在为一个程序开发音频代码,该程序需要能够在各种设备上录制和播放,其中一些是高端设备,具有各种不同的 wav 和 AIFF 格式。我希望能够使用 WASAPI 库,但我遇到了一些重大问题。目前最大的问题是,据我所知,设备只允许播放格式完全匹配的流。
这就是我正在做的 - 我将设备(这里我只是获取默认控制台设备)设置为:
我通过以下方式激活设备:
然后我检查混合格式:
但是,如果我在调用 Initialize 时使用不同的格式:
我得到一个错误。似乎该文件绝对必须采用 GetMixFormat 返回的格式。如果我调用 IsFormatSupported 来了解我可以提交哪些格式:
我明白E_INVALIDARG
了,即使两个结构完全相同。根据 WASAPI 文档,当“Parameter ShareMode is an value than AUDCLNT_SHAREMODE_SHARED
or AUDCLNT_SHAREMODE_EXCLUSIVE
”时返回。我路过AUDCLNT_SHAREMODE_SHARED
。这似乎是文档中的错误。
为了实验,我尝试:
错误返回是0x8889000e
- 我无法找到对该错误的引用。您可以提供的任何帮助都将非常感激,即使它是“使用 MMSystem”。我会从 MMSystem 开始,只是我们需要能够在有多个设备时控制播放设备。