问题标签 [rtaudio]

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

windows - 为什么 WASAPI 比 ASIO 慢这么多?

我用示波器测量了RtAudio双工模式示例的往返延迟。结果平均为打击,

ASIO 15 毫秒

WASAPI 50 毫秒

为什么 WASAPI 这么慢?互联网上的所有文件都说它们具有相同的性能。

操作系统:Windows 7 旗舰版

编译器:VC2013

0 投票
0 回答
157 浏览

c++ - 为什么线程中缓冲区的更改不会反映在 mainThread 上的缓冲区中?

我正在尝试通过 RtAudio Api 从声卡接收音频。它有一个回调函数,一旦音频接收到足够的字节,就会调用该函数,然后用户可以将数据复制到自定义对象。这个自定义对象可以通过指针发送到回调。我封装 RtAudio 的类如下所示:

这是从音频线程内部调用的静态函数的实现

我在线程之间共享的自定义对象属于 AudioData 类,如下所示:

音频对象嵌入到 Recorder-Object 中,然后读取 Audio 的 AudioData 成员变量中的缓冲区。

函数 record(..) 如下所示:

我读到堆是保存线程之间共享的数据的地方,但在 rtaudio 的示例中,他们使用在堆栈上分配的全局变量将数据推送到Link。所以我有点困惑。我们很乐意接受帮助!

编辑:当我调试我的应用程序时。我可以看到音频线程的输入函数被调用并写入缓冲区。记录功能也按预期工作。只有缓冲区(AudioData)似乎没有任何数据......

Edit2:这是我在 rtaudio api 中注册回调的代码。

0 投票
1 回答
22 浏览

c++ - 没有找到 .lib 和 .dll,但有 .h

所以我尝试使用RtAudio实时读取麦克风输入,但问题是当我下载.zip文件时,我找到了头文件但没有.lib文件或dll,我需要它们链接我的项目,他们在哪里?

我是cpp的初学者:)

这是 RtAudio https://github.com/thestk/rtaudio

0 投票
1 回答
18 浏览

c++ - 使用 qmake 与 jack 链接

我在同一台机器上有两个类似的项目。它们的区别在于一个使用 GUI(Qt 和 Qwt)而另一个不使用。结果,一个有Qt的是用qmake编译,另一个是cmake。

该项目本身是关于信号处理和音频处理的。我决定使用RtAudio来捕获音频信号。当我使用 cmake 编译时,我可以很好地编译和运行示例代码,但是当我尝试使用 qmake 编译另一个项目时,它会失败。

问题是jack使用 qmake 编译时找不到的(音频库)。但首先,让我们从可行的项目开始。这是我的CMakeLists.txt文件中的内容:

(同样,工作得很好)。然后我得到了这个qwt_test.pro

我得到的错误是:

我的问题是,如何将使用 qmake 的项目与 jack 链接?

0 投票
1 回答
13 浏览

c++ - 使 RtAudio 使用插孔进行音频捕获

我正在尝试在 Linux 中使用 RtAudio。首先,我在启用插孔的情况下对其进行了编译:

然后我找到了一个小例子来测试 RtAudio:

这个例子没有做任何特别的事情。它只会尝试录制一些音频,甚至不会等待它捕获任何内容,它会立即退出。我第一次运行此代码时,它运行并退出,没有任何错误。但是第二次,它会出错:

如果我想摆脱这个错误,我必须重新启动机器。

我必须承认,有时它会在重新启动后再次起作用。但在大多数情况下,它会出错。正如我一直试图了解问题所在,在 Linux 中似乎jack可以用来确保没有软件会保留音频资源,并且多个进程可以同时使用音频资源。如果是这种情况,考虑到我已经在启用插孔的情况下编译了 RtAudio,为什么我仍然面临这个错误,我该如何解决?

顺便说一句,即使我的代码遇到此错误,arecord也可以毫无问题地录制声音。