微信公众号获取的语音文件是amr格式,想在html页面上直接播放出来。但是找了一下,html5也不支持amr格式,其他的播放器也没有看到支持的。
一般都是如何处理amr格式的音频呢,还是只能转成mp3后再播放?腾讯自己的公众号平台是如何播放的?
用amr解码器,amrnb.min.js 然后 AMR.decode(xxx) 一下,在利用audio api播放
附上核心代码:
function playAmrArray(array) {
var samples = AMR.decode(array)
if (!samples) {
alert('Failed to decode!')
return
}
playPcm(samples)
}
function playPcm(samples) {
var ctx = getAudioContext()
if (!ctx) {
return Toast.show('暂不支持播放语音')
}
var src = ctx.createBufferSource()
var buffer = ctx.createBuffer(1, samples.length, 8000)
if (buffer.copyToChannel) {
buffer.copyToChannel(samples, 0, 0)
} else {
var channelBuffer = buffer.getChannelData(0)
channelBuffer.set(samples)
}
src.buffer = buffer
src.connect(ctx.destination)
src.start()
}