【问题标题】:How do I change the volume of a PCM audio stream in node?如何更改节点中 PCM 音频流的音量?
【发布时间】:2014-06-26 03:18:05
【问题描述】:

我正在尝试弄清楚如何在节点中调整 PCM 音频流的音量。

我在 npmjs.org 上查看了所有我能找到的用于处理音频的模块,但没有找到任何可以接收流、改变音量和输出流的模块。

是否有任何模块可以做到这一点,甚至可能不是专门为它制作的模块? 如果没有,那么我可以创建一个模块,如果有人可以指出我逐字节修改流的正确方向。

这是我想要完成的任务: 我正在编写一个程序来接收多个 PCM 音频流,并将它们混合用于具有不同音量的多个输出。示例:

inputs       vol    output

music        25%    output 1 
live audio   80%    output 1
microphone    0%    output 1

music       100%    output 2 
live audio    0%    output 2
microphone    0%    output 2

【问题讨论】:

  • 将字节转换为 -1 到 1 范围内的样本。现在只需将它们乘以 0 到 1 范围内的因子。
  • 是的,我能够弄清楚那部分,我遇到问题的部分实际上是修改缓冲区...:/

标签: node.js audio stream signal-processing pcm


【解决方案1】:

您使用的是什么类型的连接? (会更容易给出示例代码)

您基本上想要做的是创建一个连接。然后在连接或请求对象上为“数据”事件添加一个侦听器。如果不设置编码,回调中的数据参数应该是Buffer。在每个块通过网络传递后触发数据事件。

缓冲区使您可以使用常规的 javascript 数字值对数据流进行字节大小的访问。然后,您可以解析该块,使用闭包将它们保存在多个数据事件的内存中(以便缓冲多个块)。并在适当的时候将解析和处理的数据写入一个套接字(另一个套接字或在双向套接字的情况下相同)。不要忘记管理你的闭包以避免内存泄漏!

这只是一个抽象的描述。如果有任何需要澄清的地方,请告诉我。

【讨论】:

  • 抱歉耽搁了,我想我错过了有关回复的电子邮件。 ://
  • 音频流将来自多个来源、mp3 文件,并从音频输入卡实时流式传输。理想情况下,我只会通过具有我可以控制的音量属性的东西来管道它......一个很好的例子是:PasteBin
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多