如果我使用websocket协议接收20ms ulaw样本(对于内部音频会议应用程序),将它们转换为PCM,缓冲它们以获得任何抖动(如果需要)......是否可能,如果是,如何,我可以指示浏览器播放它们吗?我可以枚举播放设备吗?这对沙盒浏览器环境有何影响?
使用尽可能少的插件使用Javascript。这附近有人玩这个吗?
我知道你可以使用webrtc和SRTP,但我主要考虑编写音频缓冲区并提交它进行播放。
答案 0 :(得分:1)
来自搜索引擎的人:
是的,有可能。您可以使用createBufferSource
节点接收来自WebSocket的音频数据。
它是这样的:
var context = new window.AudioContext()
var channels = 1
var sampleRate = 44100
var frames = sampleRate * 3
var buffer = context.createBuffer(channels, frames, sampleRate)
// `data` comes from your Websocket, first convert it to Float32Array
buffer.getChannelData(0).set(data)
var source = context.createBufferSource()
source.buffer = buffer
// Then output to speaker for example
source.connect(context.destination)
请注意,在UI过程中执行此操作时可能会遇到性能问题,工作人员可能会更好。此外,可能需要重新采样。