我有一個實時的恆定波形數據源,每秒鐘以恆定的採樣率爲我提供第二個單通道音頻。目前,我打他們這樣說:WebAudio - 無縫播放音頻塊的序列
// data : Float32Array, context: AudioContext
function audioChunkReceived (context, data, sample_rate) {
var audioBuffer = context.createBuffer(2, data.length, sample_rate);
audioBuffer.getChannelData(0).set(data);
var source = context.createBufferSource(); // creates a sound source
source.buffer = audioBuffer;
source.connect(context.destination);
source.start(0);
}
音頻播放罰款,但與正在播放的連續區塊之間的明顯停頓(如預期)。我想擺脫他們,我明白我將不得不介紹一些緩衝。
問題:
- 是否有一個JS庫,能爲我做到這一點? (我正在尋找它們的過程中)
- 如果沒有圖書館可以做到這一點,我該怎麼做呢?
- 檢測播放在一個源中完成時是否有另一個準備好立即播放? (使用AudioBufferSourceNode.onended事件處理程序)
- 創建一個大緩衝區並一個接一個地複製我的音頻塊,並使用AudioBufferSourceNode.start AudioBufferSourceNode.stop函數控制流程?
- 有什麼不同?
找到的項目:https://github.com/scottstensland/websockets-streaming-audio它通過WebSockets的流波形文件的話,聽起來體面:http://websockets-streaming-audio.herokuapp.com/ – xmichaelx