问题标签 [audio-capture]

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

c++ - WASAPI 在 Windows 上捕获的缓冲区大小

我使用 WASAPI 在 Windows 7 上以共享模式捕获音频缓冲区。我使用只能具有 48 kHz 采样率、96 kHz、192 kHz 或 44.1 kHz 采样率的扬声器。我的声卡是 Realtek 高清声卡。

如果我在 Windows Vista 或 Windows 8 等其他操作系统上执行我的程序,我需要知道 WASAPI 的行为是否会有所不同。此外,我需要知道 getBuffer 是否会为使用不同硬件(不同声卡)的捕获缓冲区检索相同大小。

我无法自己测试它,我在互联网上找不到太多细节。但是我的程序必须在具有不同 Windows 版本和不同硬件的不同计算机上运行。如果捕获的缓冲区大小不同,我的程序将无法在另一台计算机上正常运行。

如果有人对此有所了解,请告诉我。谢谢你。

0 投票
1 回答
1291 浏览

java - does javafx has built in audio capture?

I know there is a duplicate question right here, but it's obsolete, so does javafx support audio capture.

Does it have any audio capturing API or interfaces, i know of AudioClip in javafx.scene.media. but it's only for playback.

0 投票
1 回答
143 浏览

audio - 有没有办法为具有两个音频输出的 cpu 中的特定程序选择音频端口?

我的 cpu 中有两个音频输出。一个用于扬声器,另一个用于耳机。我想创建一个程序,我可以在其中选择允许哪个程序在哪个端口播放声音。这样我就可以将耳机放在一个端口,并在连接到另一个端口的扬声器上播放一些东西。目前,如果我将耳机连接到另一个端口,则后端口中的扬声器会关闭。

PS:真的不知道为此选择哪些标签。请建议正确的标签。

0 投票
0 回答
168 浏览

c# - 从音频流中捕获细节

我的目标是从音频流中捕获两个变量,它们是每个频率的频率和分贝级别(需要几个频率范围,所以我最终会对它们进行分组,除非 WASAPI 可以从音频流中提取频率范围)。

我发现使用 WASAPI 可以捕获音频流,但它似乎基于 C++。是否可以使用 WASAPI 获取上述变量,我可以在 C# 中使用 WASAPI 吗?

0 投票
2 回答
372 浏览

audio - 当拓扑有两个分支时,MESessionStarted 事件中的 E_UNEXPECTED

我正在研究一个会话拓扑,该拓扑记录视频(带音频),同时显示带有 EVR 的视频流。我正在为视频和音频流使用 SampleGrabber 接收器,因此我可以轻松控制何时开始/结束录制(使用接收器写入器)并根据需要提取样本数据(用于捕获静止图像和显示麦克风的音频电平)。我正在使用 Tee 节点在 EVR 和视频采样器之间拆分视频源,并使用 copierMFT 将样本传送到 EVR。音频和视频采样器都标记为 RATELESS。

拓扑的每个分支都自行工作,但是当我将两者都添加到拓扑时,媒体会话无法启动,并且在 MESessionStarted 事件上设置了 status="E_UNEXPECTED Catastrophic Error"。这是我在 MFTrace 日志中发现的唯一错误。我的相机永远不会打开,我的采样器中也没有收到任何样本。拓扑似乎可以正确解析,所以我不确定会话没有预料到什么。MediaSession::Start 的文档没有提及有关此错误的任何内容。我目前的猜测是这与同步演示时钟有关,但是将采样器输出节点设置为无速率似乎没有帮助。在我收到拓扑就绪状态事件后,检查会话的时钟状态会返回 MFCLOCK_STATE_INVALID。

在同一拓扑中拥有实时摄像机源和麦克风源是否需要任何特殊设置?有什么方法可以获取有关 E_UNEXPECTED 错误的更多信息?

任何有助于了解这一点的帮助表示赞赏。这是我的 mftrace 日志的片段,其中显示了就绪的拓扑和错误:

更新 1: 按照 mofo77 的建议,我尝试使用系统时间源创建一个新的演示时钟,并将其设置为设置 EVR 的演示时钟。不幸的是,这并没有改变任何东西。

深入研究 TopologyReady 事件,我注意到时钟没有显示时间源:

我尝试创建一个系统时间源并将其设置在 mediasession 的时钟上,但这也无济于事。

只有视频分支(或只有音频分支),我的 samplegrabber 接收 OnSetPresentationClock 回调。将两者都添加到拓扑中后,这永远不会发生,并且我在 MESessionStarted 事件中获得了灾难性的故障状态。

0 投票
1 回答
149 浏览

windows - WaveOutWrite 直接来自网络摄像头音频捕获回调

我正在使用 VFW 和音频捕获回调从网络摄像头捕获音频数据,同时,在同一捕获回调的主体内,使用 waveOutWrite 将采样数据定向到默认 MAPPER。

网络摄像头的信号质量为 1 通道/8 位/11025 个样本/秒。由于带有FORMAT_QUERY标志的waveOpen,默认音频设备支持声音格式。

waveWriteOut的返回是NOERROR,但我能听到的与我的期望相去甚远。房间里很安静,应该是空虚的白噪音。

请听听YouTube 录音

它开始,一个包一个包大小约 16K,WAVEHDR 结构还可以。然后它逐渐减慢并退出系统未恢复错误。

这和什么相似?

下面是来自 VFW 的音频 dta 接收器代码,lpWHdr 看起来不错,甚至内部标志触发为 2 = Prepared .. 似乎 VFW 和 WaveAudio 是相互创建的 :)

我认为缓冲区没有溢出,因为您可以看到 DateTime 毫秒标记,它每 1400 毫秒打勾,采样率 = 11025,缓冲区大小约为 16500 字节 = 看起来不错..

UPD:我只是将非托管缓冲区复制到托管并查看了它的值。看起来像锯齿甚至超载的鼻窦。0 4 0 3 0 32 109 213 255 251 255 243 241 97 0 7 0 2 1 1 0 5 0 然后以大约相同的数字和相同的周期再次上下波动。不完全一样,大致相同(+/-)。此外,我可以使用内部 Windows 记录器记录来自该摄像头的信号,我可以看到信号电平在我的声音上下跳动,所以网络摄像头的麦克风也可以。我想这可能是什么VFW输入音频信号馈线错误。即使它接受了 WAVEFORMATEX 并发回了 WAVEHDR,它们都很好......但是缓冲区数据填充了其他来源,而不是网络摄像头,尽管 VFW 说它必须来自网络摄像头,因为视频是从同一来源捕获的,它正在工作,我只是添加了一条额外消息: SendMessage(camHwnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, audioCallback); 我很确定如果我会使用waveIn 而不是VFW,它会正常工作.. 我稍后会检查它.. 但是为什么VFW 的工作方式不像它应该的那样?

0 投票
1 回答
2869 浏览

ios - 最新版本的 WebRTC iOS 本机应用程序音频问题

我正在尝试构建 iOS 原生音频/视频聊天并停留在音频上。声音滞后,缺少某些部分并失真。我用 r9919 和由原始构建脚本构建的最新版本 (r10184) 进行了尝试。但是当我尝试使用取自 PerchRTC 演示项目(https://github.com/perchco/perchrtc - fat lib 和公共头文件)的旧版本(r8444、r8926、r9132 和 r9137)时,一切似乎都很好(除了小回声)。我应该执行哪些预操作以至少获得与(r8444、r8926、r9132 和 r9137)提供的相同的流媒体质量?我也尝试使用不同的音频编解码器和不同的媒体约束,仍然没有运气。我以这种方式创建音频连接

使用这个约束(尝试了不同的组合)

强制约束 = @[

可选约束 = @[

在没有运气获得 audioTrack 之前,我还尝试使用 AVAudioSession 进行不同的操作:

SDP 描述在滞后和非滞后构建中看起来相似(这是提供 - a=setup:actpass,answer has a=setup:active):

有什么建议么?

0 投票
2 回答
2525 浏览

javascript - 有没有办法使用 Javascript 或任何其他网络语言捕获浏览器的音频?

我想制作一个显示交互式视觉效果的简单网站,并且我希望其中一些是音频驱动的。我希望参观者能够用他们自己选择的音乐来驱动视觉效果。除了从麦克风获取音频输入之外,我很难找到很多关于其他任何内容的文档。

例如,我的网页(在选项卡 1 中)正在运行 javascript 代码 X,它允许我处理在 Web 浏览器的另一个选项卡中播放的音频流。这可能吗?

0 投票
1 回答
99 浏览

google-chrome - 在 Chrome 应用程序中丢失 audioCapture

在我的清单中,我添加了 audioCapture 权限。

我尝试了不同的场景,看看我的应用程序是否一直在工作。我关闭应用程序,关闭 Chrome,重新打开我的应用程序,有时我会丢失音频捕获。音频捕获在 backgound.js 中运行

我可以重新启动音频的唯一方法是从我的清单中删除 audioCapture 权限,重新打开我的应用程序。我得到了 getusermedia 的错误,没关系。将音频捕获放回权限中。重新加载应用程序。现在我的音频捕获又回来了。

我怎么能确定在每种情况下,应用程序打开、关闭、Chrome 关闭等.. 当我触发操作时,我的应用程序将始终准备好捕获音频。

0 投票
1 回答
255 浏览

audio - 在 Windows 上同时使用核心音频和波形音频

我计划使用 c++ 核心音频 API 在我的应用程序中执行各种与音频相关的操作,例如检测设备更改、检测音量级别等。但是我的解决方案中还有一个音频捕获代码,它使用了我不使用的旧 Wave API (waveInxxx)现在不想碰。我可以安全地使用核心音频 API,并且这些(核心和波)可以一起存在,因为它们都将在同一个音频端点上运行?这会导致我的应用程序崩溃或挂起吗?

提前致谢。