如何解决没有数据管道时如何插入静音 pcm 数据
我目前正在研究 Discord.js 语音接收器,我需要它在没有实际音频数据进入时通过写入静默数据包来连续发送 PCM 音频数据。
我之前发现过这个 discussion,但我不明白/不知道如何在没有实际数据包进入时插入静默数据包
接收方代码:
const r = connection.receiver.createStream(user,{
mode: 'pcm',end: 'manual'
});
// Nothing is piped when user is not talking
// u.stream is PassThrough stream
r.pipe(u.stream);
首选方法是创建一个扩展 PassThrough 或任何流类型的类,以便我可以将接收器数据通过管道传输给它,并且当没有数据通过(来自接收器)时,它将发送静默数据包(使用 'pcm -silence' 包),看起来像这样:
const fs = require('fs');
const passStream = new SilentStreamClass();
const r = connection.receiver.createStream(user,end: 'manual'
});
r.pipe(passStream);
passStream.pipe(fs.createWriteStream('./user.pcm'));
// When user is not talking,it will filled with silent packet.
提前致谢!
解决方法
在互联网上搜索了一段时间后,我找到了一个 npm 包 audio-mixer
来混合多个 pcm 音频流,当没有数据要处理时,它会通过管道静默数据包,效果很好!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。