javascript - 您可以通过浏览器在 JavaScript 中播放 PCM 音频流吗?

标签 javascript rtp pcm

如果我使用 websocket 协议(protocol)接收 20ms ulaw 样本(用于内部音频 session 应用程序),将它们转换为 PCM,缓冲它们以防止任何抖动(如果需要)...是否可能,如果可以,如何,我可以指示浏览器播放它们吗?我可以枚举播放设备吗?这对于沙盒浏览器环境如何工作?

使用 Javascript 并使用尽可能少的插件。这里有人玩过这个吗?

我知道你可以使用webrtc和SRTP,但我主要考虑的是构建音频缓冲区并提交它进行播放。

最佳答案

对于那些来自搜索引擎的人:

是的,这是可能的。您可以使用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 进程中执行此操作时可能会遇到性能问题,worker 可能会更好。此外,可能需要重新采样。

关于javascript - 您可以通过浏览器在 JavaScript 中播放 PCM 音频流吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17713659/

相关文章:

javascript - 是否可以获取与另一个数组中的项目匹配的对象数组中的所有项目的列表?

sockets - 是否可以使用 TCP 或 UDP 中继 UDP 或 TCP 数据;即混合协议(protocol)?

Java NAL 转 H264

ios - 确定核心音频 AudioBuffer 中的帧数

javascript - Array.map() 到 Class 对此未定义

javascript - Highcharts:移动渲染器(自定义绘制)

javascript - 使用 Chrome 扩展上下文菜单将链接的 URL 传递给回调函数

java - RTP RFC (3550) 解释问题

java - Android:使录制的pcm原始数据可播放

java - 8位PCMU编码器/解码器