问题标签 [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 回答
389 浏览

c# - NAudio 无扬声器播放静音

我知道我可以像那样播放静音音频

但是当没有扬声器连接到计算机时如何播放静音?

我想捕获实时 WASAPI 音频,但没有播放任何内容时不会调用回调,所以我需要播放静音

0 投票
0 回答
325 浏览

video-capture - 媒体基础 - 使用带有音频/视频捕获的聚合媒体源的问题

我的任务是创建一个应用程序,该应用程序接受音频/视频捕获输入(使用 Elgato Cam Link)并将其输出回用户。根据 Microsoft 的Audio/Video Capture in Media Foundation文档,它建议“如果要将音频捕获与视频捕获结合起来,请使用聚合媒体源。

我从 topoedit 的源代码中提取了我需要的大部分代码,但是 topoedit 没有在任何地方使用聚合源,所以在正确使用它们时我有点盲目。

使用聚合媒体源时,我遇到了两个不同的问题。

  1. 帧速率
    当我使用聚合媒体源时,我有一个捕获设备 (Elgato Cam Link) 可以成功播放音频和视频,但由于某种原因,帧速率比我只运行两个完全独立的拓扑(一个用于视频,一个用于音频)。

  2. 调用 IMFTopoloader::Load() 时出现错误 MF_E_TOPO_CODEC_NOT_FOUND (0xC00D5212)
    当我尝试在两台不同的笔记本电脑上使用聚合媒体源(使用任何内置的网络摄像头/麦克风组合)时,我遇到了这个错误。这个错误让我感到困惑,因为如果我使用两个完全独立的拓扑(一个用于视频,一个用于音频),它运行得很好。

主要设置:

  • 操作系统:Windows 10
  • 采集设备:Elgato Cam Link(带有 HDMI 输入的 USB 记忆棒)
  • 语言:C++

只是为了提前排除一些建议......

  • 只需使用 DirectShow!
    我希望我能。我负责这个任务的唯一原因是因为我们的 DirectShow 解决方案在 Elgato Cam Link 设备上存在严重的帧速率问题。我们无法弄清楚原因,所以媒体基金会似乎是我们最好的选择。

  • 使用两个独立的拓扑!
    这就是我目前的工作方式。只是感觉不对劲,你知道吗?文档说要使用聚合源,所以我想做我的尽职调查。最后,如果我没有得到这个问题的答案,我至少可以高枕无忧,因为我知道我有一些功能,但我主要是问这个问题,以防我能做得更好。Skype必须做这样的事情吗?(再想一想,Skype 不会将您的音频输出回您自己的扬声器,所以也许不是)肯定有人知道如何使用聚合源。

鉴于我的程序在 Elgato 设备上成功运行,我怀疑我没有做任何可怕的错误。如果有问题,可能是我没有的代码,而不是我能展示的任何东西。

话虽如此,这就是我创建聚合源的地方(为简洁起见,不包括错误检查)。

稍后我将 EVR 连接到流描述符 0,将 SAR 连接到流描述符 1。

如果您更热衷于解决问题 2(再次,为简洁起见,不包括错误检查),我将这里称为 IMFTopoloader::Load()。

使用请求的拓扑更新:

这是我的部分拓扑的粗略示例。这可能是您所期望的,因为我不想做任何花哨的事情。

一旦我解决了拓扑,注入了哪些额外的东西?我不确定如何走链并查询当时拓扑中的所有内容。如果您相信 topoedit 分别对音频和视频源所做的事情,那么它看起来像这样。

是什么{CF862982-23B0-4E3D-8C76-D03FEF084AF8}?我不确定,也不知道如何找到。

当我再次访问 Elgato 时,我将更新上述拓扑。我目前没有拥有它。

更新 2写这篇文章的客户似乎并不关心向我提供任何反馈(好或坏),所以我不太关心跟进这个奇怪的问题。

0 投票
1 回答
92 浏览

selenium - 在 zalenium 中捕获音频

如何在zalenium中捕获音频和视频。zalenium(链接)github上的命令仅捕获视频。谢谢

0 投票
0 回答
232 浏览

java - 如何使用java捕获PC声音并通过套接字发送

我正在尝试从电脑(从扬声器/耳机)捕获音频并通过套接字(UDP,如果可能)将其发送到另一台必须播放的计算机。我找到了一些代码来做到这一点:

服务器:

客户:

但是客户抛出

而且我不知道该怎么做(我知道它不是 UDP 套接字,但我首先想要一些可以工作的代码)。提前谢谢。

0 投票
1 回答
785 浏览

audio - 如何解决 ffmpeg 卡在“打开输入文件”的问题

我正在使用采集卡从另一台机器采集 HDMI 音频。

在我的主机上,输出arecord -l如下:

我使用的命令是:

当我运行命令时,日志似乎在“打开输入文件”处冻结,如下所示:

它会永远卡在那里,直到我按 Ctrl+C,然后日志继续如下:

命令有什么问题?

0 投票
1 回答
342 浏览

audio - ALSA-Sound:捕获线路输入

我正在使用 asoundlib 库在我的树莓派 4 上读取声音(在我的另一台 PC 上播放并插入我的 外部声卡),首先我尝试使用麦克风输入,但显然不应该与放大的信号(我的读数失真得厉害),显然我应该使用端口中的线路。

当我进入我的 Pi 的音频设备设置时,我看到它可以识别线路输入,但我只能在 alsa 库中使用“hw:1,0”,所有其他硬件代码“hw:1,1”、“hw: 1,2", "hw:1,3" 产生“没有这样的文件或目录。

终端还说只有一个设备(尽管我不确定它想告诉我什么):

0 投票
1 回答
123 浏览

javascript - JS从视频元素中捕获音频(不是来自网络摄像头/麦克风等)由于视频src是外部的而出现CORS错误

我正在尝试编写一个脚本(用于带有 tampermonkey 的浏览器扩展),它将使用视频播放器功能来寻找时间戳,然后在从该时间戳捕获音频的同时播放视频。

视频元素源是外部的,因此当我尝试设置流时出现 CORS 错误,例如:

我尝试了在其他地方发布的关于从视频源https://stackoverflow.com/a/57088960/10326441获取可读流的解决方案。但是我不明白如何从中获取捕获流,它仍然导致下面显示的第一个错误。示例错误:

我的问题是:有没有一种简单的方法可以从视频播放器获取音频流?当我单击我的按钮时,它会正确搜索并播放视频,我只是在努力从中获取音频流,因此我可以将其转换为可以下载到磁盘的 blob。

0 投票
1 回答
1011 浏览

.net-core - 将使用 .NetCore C# 在 Raspberry pi 上录制的音频保存到 Wav 文件

我发现很难找到一种方法将使用 OpenTk.NetStandard 捕获的音频存储到 NetCore C# 中的正确 .WAV 文件中。

我正在寻找的是一种在 Raspberry pi 上运行时可以工作的解决方案,因此 NAudio 或任何 Windows 特定方法都无法解决我的问题。

我发现了其他几个 SO 答案,它们显示了如何使用 opentk 捕获音频,但没有关于如何将其存储在 wav 文件中。

这是代码的摘录,它应该从我从另一个 SO 问题中获取的麦克风中读取数据,我看到 AudioCapture 类是:

任何帮助将不胜感激!

0 投票
0 回答
73 浏览

macos - 在 MAC OS 中将音频数据从应用程序路由到虚拟音频驱动程序

我对 mac os 很陌生,我想将从真实硬件麦克风/扬声器捕获的音频数据路由到虚拟音频驱动程序(空音频驱动程序)。如何从我的应用程序调用驱动程序以及如何在驱动程序之间进行通信和应用。对于此任务,我需要遵循哪种方法以及对现有方法的任何建议。任何帮助/建议将不胜感激。

0 投票
0 回答
205 浏览

macos - How to solve no sound output from virtual audio device(BlackHole 2ch) when I use BlackHole to capture system output audio on Mac?

I have a conundrum:

I'm using BlackHole try to capture system output audio on macOS, BlackHole drive can create an virtual audio device, like BlackHole 2ch, which supports 2 channels.
when I select this virtual device as audio output device, I do really can capture system output audio through a corresponding virtual input device created by BlockHole at the same time with virtual output device.

But, there is no sound playback from virtual output device, I cannot hear any voice from speaker or headphone.
I know it must be write some lines of code in BlackHole_DoIOOperation() function, but I don't know any direction, can anyone give me some suggestion? Thanks

This is virtual output device created by BlackHole This is virtual output device created by BlackHole

This is virtual input device created by BlackHole This is virtual input device created by BlackHole


here is BlackHole_DoIOOperation() function source code:
I suspect caused by this line of code, so I removed it, but still doesn't work.
// memset(ioMainBuffer, 0, inIOBufferFrameSize * NUMBER_OF_CHANNELS * sizeof(Float32));