Я хочу сгенерировать определенный звуковой шаблон на сервере nodejs, а затем передать аудио на http-клиент, используя express.js.
С этой реализацией API WebAudio https://github.com/mohayonao/web-audio-engine/ я былвозможность воспроизведения сгенерированного аудио непосредственно на сервере с помощью модуля динамика, как в примере (https://github.com/mohayonao/web-audio-engine#example)
const Speaker = require("speaker");
const AudioContext = require("web-audio-engine").StreamAudioContext;
function audio(){
const context = new AudioContext();
const osc = context.createOscillator();
osc.type = "sine";
osc.frequency.setValueAtTime(220, 0);
osc.frequency.setValueAtTime(440, 1);
osc.start(0);
osc.stop(2);
osc.connect(context.destination);
osc.onended = () => {
console.log("finished")
delete context
};
context.pipe(new Speaker());
context.resume();
}
audio()
Теперь я попытался передать аудиопоток на http-ответ express:
const express = require("express")
const app = express();
app.get('/', function (req, res) {
res.set('Content-Type', 'audio/wav');
audio((context)=>{
context.pipe(res)
})
});
app.listen(3000)
const Speaker = require("speaker");
const AudioContext = require("web-audio-engine").StreamAudioContext;
function audio(callback){
const context = new AudioContext();
const osc = context.createOscillator();
osc.type = "sine";
osc.frequency.setValueAtTime(220, 0);
osc.frequency.setValueAtTime(440, 1);
osc.start(0);
osc.stop(2);
osc.connect(context.destination);
osc.onended = () => {
console.log("finished")
delete context
};
callback(context);
context.resume();
}
Когда я открываю localhost: 3000, в браузере теперь есть аудиоплеер, поэтому тип контента был распознан, но ничего не воспроизводится, просто отображается анимация загрузки. Через 2 секунды, когда аудиопотокпо окончании отображается значок «поврежденного файла».
Как правильно транслировать сгенерированный звук PCM (в формате wav?)