我正在尝试接收具有以下结构的有效负载:
带有 MIME 多部分内容的 HTTP POST 请求消息。
第一部分是 JSON 格式,涵盖呼叫元数据。
第二部分是编码为 16 位 PCM 的波形音频。
我写了下面的代码。但是,我收到的音频已损坏并且有很多噪音。我有一种感觉,这是由于请求数据 (MIME) 处理不当,因为我确认发出的音频是清晰的,因为我通过wireshark 下载截获的音频文件来收听它。
app.post('/export-call', handler(async (req, res) => {
const body = req.body;
console.log('req:', Object.keys(req.body));
//logger.info(JSON.stringify(req.body));
connectToDb();
if (body.metadata && body.media_audio_wav) {
const metadataParse = JSON.parse(body.metadata)
const metadataObj = metadataParse.metadata
const tempLocation = "/opt/sa/exportBrokerTesting/"
const audio = body.media_audio_wav
const audioBinary = new Buffer(audio, 'binary');
wav.fromScratch(2, 8000, '16', audioBinary, 'binary');
fs.writeFileSync(tempLocation + metadataObj.callId.toString() + '.wav', audioBinary);
} else {
logger.info('Metadata/ Audio is undefined')
res.sendStatus(204)
}
}))