<分区>
我正在考虑使用 node.js 进行实时音频聊天。但是,据我所知,目前没有任何好的 Node 库。为了录制音频,我可能会打开一个音频设备并从中读取 PCM 字节——但是,我不确定如何继续。我想控制网络的东西,例如我希望能够通过现有连接多路复用流量,因此也处理网络部分的库对我不起作用。所以,我认为我需要的是:
- 一个 C/C++/JavaScript 库,能够进行快速(可能有损)实时音频(解)压缩(可能针对压缩人声进行了优化)
- 一个 C/C++/JavaScript 库,可以确保事情保持实时,例如负责在抖动后丢弃数据——也许我也可以自己用 JavaScript 完成这部分
这听起来合理吗?这些东西有哪些好的库?
我创建了一个名为“Crosstalk”的 C++ 音频库。
这是一个实时 C++ 音频引擎,可让您实时创建和路由音频系统。基本上,引擎负责所有音频路由,并为您提供一个简单的平台来创建系统组件(例如,“网络输入馈送”组件连接到“低通滤波器”连接到“文件记录器”)。
它非常易于使用。这是一个如何播放 mp3 文件的示例(这些组件随引擎一起提供):
XtSystem system;
XtMp3Decoder mp3Decoder;
XtAudioDevice audioDevice;
long md = system.addComponent(&mp3Decoder);
long ad = system.addComponent(&audioDevice);
system.connOutToIn(md,0,ad,0);
system.connOutToIn(md,1,ad,1);
mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3");
mp3Decoder.play();
您可以在此处查看 API 文档和许可详细信息:http://www.adaptaudio.com/Crosstalk
更新:与免费许可证的兼容性。
只有 Crosstalk 的演示版可以与免费许可软件结合使用,但是,Crosstalk 的商业用途和分发仍然是不允许的。如果您希望在免费软件中使用 Crosstalk 演示,只需在您的 EULA 中提及您的程序使用 Crosstalk 的演示版本,并且在您提供软件链接的任何地方,提供指向:“http://www.adaptaudio.com/Crosstalk”的链接,他们在哪里可以自己下载。
编辑(2012 年 1 月 12 日):
串扰已被名为“DSPatch”的开源项目所取代。 DSPatch 本质上是 Crosstalk 背后路由引擎的升级版,不再仅限于音频处理。 DSPatch 允许您创建和路由几乎任何类型的流程链,并且免费供个人和专有使用:)