[英]Web Audio API and streaming audio
我想通過websockets創建實時音頻流。
我通過以下方式獲得麥克風許可:
navigator.getUserMedia({audio: true}, initializeRecorder, errorCallback);
然后錄制麥克風並創建PCM:
function initializeRecorder(MediaStream) {
var sourceNode = audioCtx.createMediaStreamSource(MediaStream);
var recorder = audioCtx.createScriptProcessor(2048, 2, 2);
recorder.onaudioprocess = recorderProcess;
sourceNode.connect(recorder);
recorder.connect(audioCtx.destination);
}
稍后,我將每個PCM推送到BufferSource並進行回放:
function recorderProcess(e) {
var buff = e.inputBuffer;
var source = audioCtx.createBufferSource();
source.buffer = buff;
source.connect(audioCtx.destination);
source.start();
}
它運作良好。
但是如果我想將var buff發送到服務器,我會得到 對於每個PCM。
這個PCM是Float32Array類型,我不明白為什么我不能像這樣發送它。
我可以通過腳本將其轉換為UInt16:
function convertFloat32ToInt16(buffer) {
var l = buffer.length;
var buf = new Int16Array(l);
while(l--) {
buf[l] = Math.min(1, buffer[l]) * 0x7FFF;
}
return buf.buffer;
}
但是我不知道如何稍后將其解碼,以便Float32Array返回到另一個客戶端上的BufferSource。
我可以認為,如果嘗試嘗試,會出現什么問題:
var mybuffer = new Float32Array(pcmDataFromSocket);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.