jsaudio缓冲区大小设置

JavaScript011

jsaudio缓冲区大小设置,第1张

缓冲区大小(Buffer Size)是JSaudio框架中常用的一种参数设置。其实,它也是所有Web音频API都必须面对的一个有效解决方案,因为它有助于提高声音的播放流畅度(Smoothness)。

缓冲区的大小是以毫秒(Millisecond)为单位的。设置更大的缓冲区,能够让 web audio API 更好的去理解和处理你的音乐文件,从而使得音乐播放更加平滑顺畅。另外,设置较小的缓冲区可以加快音乐文件的加载速度,但是会导致声音变得不够流畅。

为了获得最佳的播放效果,JSaudio缓冲区大小一般被设置为200ms到500ms之间。此外,这个缓冲区大小也要根据你要播放的文件大小和类型来进行调整。

HTML5中的audio对象有个属性为 ended,改属性是返回音频是否播放结束,是boolean类型的。例如我自己写的一个判断:this.audioPlay=function(soundPath,callback){$("#shapeAudio").attr("src",soundPath)var shapeAudio=document.getElementById("shapeAudio")shapeAudio.play()/*判断声音是否播放完成,播放完成之后执行回调函数*/if(callback != undefined){var is_playFinish = setInterval(function(){if(shapeAudio.ended){callback()window.clearInterval(is_playFinish)}}, 10)}}改判断为当声音播放完成之后再执行回调函数callback

使用audio的buffered属性,该属性返回表示音频已缓冲部分的 TimeRanges 对象。

这里假定_audio为所获取的audio标签,实现代码如下:

 // 获取已缓冲部分的 TimeRanges 对象

var timeRanges = _audio.buffered

 // 获取以缓存的时间

var timeBuffered = timeRages.end(timeRages.length - 1)

 // 获取缓存进度,值为0到1

var bufferPercent = timeBuffered / _audio.duration 

// ...... 

// 之后将bufferPercent按照自己需要的方式进行处理即可

// 处理的时候要注意浮点数精度造成的误差。