Szy*_*ski 6 javascript audio node.js
我一直在尝试使用raspberry pi 3上运行最新raspbian的node.js创建和弦WAV播放:
这里有什么我想念的吗?我知道我可以用另一种编程语言轻松地做到这一点(我能用SDL编写C++代码,用pygame编写Python),但问题是如果有可能用node.js :)
这是我目前的web-audio-api +节点 - 扬声器代码:
var AudioContext = require('web-audio-api').AudioContext;
var Speaker = require('speaker');
var fs = require('fs');
var track1 = './tracks/1.wav';
var track2 = './tracks/1.wav';
var context = new AudioContext();
context.outStream = new Speaker({
channels: context.format.numberOfChannels,
bitDepth: context.format.bitDepth,
sampleRate: context.format.sampleRate
});
function play(audioBuffer) {
if (!audioBuffer) { return; }
var bufferSource = context.createBufferSource();
bufferSource.connect(context.destination);
bufferSource.buffer = audioBuffer;
bufferSource.loop = false;
bufferSource.start(0);
}
var audioData1 = fs.readFileSync(track1);
var audioData2 = fs.readFileSync(track2);
var audioBuffer1, audioBuffer2;
context.decodeAudioData(audioData1, function(audioBuffer) {
audioBuffer1 = audioBuffer;
if (audioBuffer1 && audioBuffer2) { playBoth(); }
});
context.decodeAudioData(audioData2, function(audioBuffer) {
audioBuffer2 = audioBuffer;
if (audioBuffer1 && audioBuffer2) { playBoth(); }
});
function playBoth() {
console.log('playing...');
play(audioBuffer1);
play(audioBuffer2);
}
Run Code Online (Sandbox Code Playgroud)
这不完全值得回答,但我现在无法发表评论><
我在使用 js 音频 api 制作的应用程序中遇到了类似的问题,并且相当简单的修复方法是降低音频质量并更改格式。
在你的情况下,我能想到的是将位深度和采样频率设置得尽可能低,而不影响听众的体验(例如44.1kHz和16位深度)。
您也可以尝试更改格式,wav,理论上应该非常擅长不占用CPU资源,但是,还有其他未压缩的格式(例如.aiff)
您可以尝试使用 pi 的多个核心:
https://nodejs.org/api/cluster.html
尽管这可能有点复杂,但如果您与其他不相关的进程并行执行音频流,则可以尝试在单独的 CPU 上移动音频。
您可以尝试的一个(简单)事情是运行具有更多 RAM 的节点,尽管就您而言,我怀疑我是否可能。
然而,最大的问题可能是代码,遗憾的是我对您正在使用的模块没有经验,因此可以就此提供真正的建议(因此,为什么我说这不值得回答:p)
| 归档时间: |
|
| 查看次数: |
678 次 |
| 最近记录: |