1. 创建PCM2WAV类
const stream = require('stream')const waveheader = require('waveheader')class PCM2WAV {constructor (options) {let pcm2wav = new stream.Transform()options = options || {}options.size = options.size || 0options.channels = options.channels || 1options.sampleRate = options.sampleRate || 16000pcm2wav._transform = function (chuck, encoding, done) {if (!this._initialized) {this.push(waveheader(options.size, {channels: options.channels,sampleRate: options.sampleRate}))this._initialized = true}this.push(chuck)done()}return pcm2wav}}export {PCM2WAV}
2. 处理base64格式的pcm数据
let bstr = atob(pcmdata)let n = bstr.lengthlet u8arr = new Uint8Array(n)while (n--) {u8arr[n] = bstr.charCodeAt(n)}
3. pcm转为wav格式音频数据,并测试播放wav音频
let pcm2wav = new PCM2WAV()pcm2wav.write(u8arr, () => {let data = pcm2wav.read()let blob = new Blob([data], {type: 'audio/wav'})let audio = new Audio()audio.src = URL.createObjectURL(blob)audio.oncanplay = () => {audio.play()}})
如果觉得《pcm转wav 解决浏览器无法直接播放pcm格式的音频数据》对你有帮助,请点赞、收藏,并留下你的观点哦!