【发布时间】:2017-10-19 18:25:19
【问题描述】:
我正在从服务器接收原始数据波形文件,我需要在客户端播放这个字节数组。
我尝试在link 中使用 decodeAudioData,但我得到了错误:
DOMException : 无法解码音频数据。
这是合乎逻辑的,因为我的原始数据不是普通的 mp3 文件,它是一个需要以 8000Hz 速率和 1 个通道和每个样本 16 位播放的波形。
是否有函数可以播放从服务器接收到的字节数组,以一定的速率和通道数
【问题讨论】:
-
该示例中的函数不是为您做的吗?诚然,从我有限的理解来看,但看起来
audioContext.createBuffer(1, numberOfSamples, sampleRate);可以以您喜欢的任何速率和样本调用?我不认为它不是 MP3 是相关的,因为您链接到的示例已经是关于 WAV 的? -
我读到当 decodeAudioData 不知道文件的格式时,会发生无法解码音频数据的异常,它只适用于 mp3 格式。对于我已经阅读过的 createBuffer 方法,我没有找到可以将我的数组放在哪里来播放它,你有一个例子吗?
-
嗯,在该问题的公认解决方案中(诚然没有使用我提到的 createBuffer 函数)stackoverflow.com/a/24194252/5947043,它声明“我调用 playByteArray 并向其传递一个包含 pcm wav 数据的字节数组。”很明显,可以做到这一点。不过,这个答案已经 5 岁了。首先我们应该使用 AudioContext 而不是 webkitAudioContext。请参阅developer.mozilla.org/en/docs/Web/API/AudioContext - 那里可能有一些关于确切支持的格式、费率等的信息,但在基本级别上支持。
标签: javascript html audio