【发布时间】:2022-11-22 18:36:35
【问题描述】:
我想通过 Websocket 将音频从 Web 客户端流式传输到 C# 服务器,但我每次都收到相同的字节。
客户端javascript代码
function audioplayer(){
var stream;
var bufferSize = 1024 * 16;
var audioContext = new AudioContext();
var processor = audioContext.createScriptProcessor(bufferSize, 1, 1);
processor.connect(audioContext.destination);
navigator.mediaDevices.getUserMedia({
video: false,
audio: true
}).then( streamObj => {
stream = streamObj;
input = audioContext.createMediaStreamSource(stream);
input.connect(processor);
processor.onaudioprocess = e => {
microphoneProcess(e);
};
});
//var obj = { command:"mic" , audio : btoa(new Blob(recording)) };
//ws.send(JSON.stringify(obj));
}
function microphoneProcess(e) {
const left = e.inputBuffer.getChannelData(0); // get only one audio channel
const left16 = convertFloat32ToInt16(left); // skip if you don't need this
var obj = { command:"mic" , audio : btoa(left16) }
ws.send(JSON.stringify(obj)) // send to server via web socket
}
function convertFloat32ToInt16(buffer) {
let l = buffer.length;
const buf = new Int16Array(l / 3);
while (l--) {
if (l % 3 === 0) {
buf[l / 3] = buffer[l] * 0xFFFF;
}
}
return buf.buffer;
}
时间:C# 服务器
if(data == null)return;
using (MemoryStream ms = new MemoryStream(data))
{
try
{
SoundPlayer player = new SoundPlayer(ms);
player.Stream = ms;
player.Play();
}
catch { }
}
DataRecv.Text = data.Length.ToString();
服务器给我错误 System.InvalidOperationException:“波形标头已损坏。”
【问题讨论】:
标签: javascript c#