The application discloses a method for playing audio by browser, which includes: S10. The audio file is divided into n audio clips in advance; S20. The ith audio clip is obtained from the N audio clips, the ith group of decoded audio data is decoded, and stored in the audio cache stack, wherein the I value ranges from 1 to N; S30. The ith group of waveform data is determined according to the ith group of decoded audio data, and Store in the peak data cache stack; S40, obtain the group I decoded audio data and the group I waveform data from the audio cache stack and the peak data cache stack for synchronous playback; increase the value of I by 1 and jump to step S20. The beneficial effect of the embodiment of the application is that the audio file is loaded in sections and parsed into a spectrum, so that the browser will not be stuck on an HTTP request for a long time, solving the problem of stuck or even stuck playing a large audio file in the browser in the prior art.
【技术实现步骤摘要】
浏览器播放音频的方法及系统
本申请涉及音频处理
,尤其涉及一种浏览器播放音频的方法及系统。
技术介绍
Wavesurfer.js是一款基于HTML5canvas和WebAudio的音频播放器插件。能够在浏览器上实现加载网络音频资源,具有播放,暂停等交互功能,并且能够根据音频信息,生成频谱图的播放效果。但是,Wavesurfer.js至少存在以下缺陷:加载大音频时会非常缓慢,浏览器会卡顿甚至假死;在大音频场景下绘制频谱图,会占用巨大的内存,浏览器会闪退,假死等。
技术实现思路
本申请实施例提供一种浏览器播放音频的方法及系统,用于至少解决上述技术问题之一。第一方面,本申请实施例提供一种浏览器播放音频的方法,包括:S10、预先将音频文件分割为n个音频片段;S20、从所述n个音频片段中获取第i个音频片段,解码得到第i组解码音频数据,并存储至音频缓存栈,其中,i取值1至n;S30、根据所述第i组解码音频数据确定第i组波形数据,并存储至峰值数据缓存栈;S40、从所述音频缓存栈和所述峰值数据缓存栈中获取所述第i组解码音频数据和所述第i组波形数据进行同步播放;i的取值增加1并跳转至步骤S20。第二方面,本申请实施例提供一种浏览器播放音频的系统,包括:音频分割程序模块,用于预先将音频文件分割为n个音频片段;音频缓存栈程序模块,用于从所述n个音频片段中获取第i个音频片段,解码得到第i组解码音频数据,并存储至音频缓存栈,其中, ...
【技术保护点】
1.一种浏览器播放音频的方法,包括:/nS10、预先将音频文件分割为n个音频片段;/nS20、从所述n个音频片段中获取第i个音频片段,解码得到第i组解码音频数据,并存储至音频缓存栈,其中,i取值1至n;/nS30、根据所述第i组解码音频数据确定第i组波形数据,并存储至峰值数据缓存栈;/nS40、从所述音频缓存栈和所述峰值数据缓存栈中获取所述第i组解码音频数据和所述第i组波形数据进行同步播放;i的取值增加1并跳转至步骤S20。/n
【技术特征摘要】
1.一种浏览器播放音频的方法,包括:
S10、预先将音频文件分割为n个音频片段;
S20、从所述n个音频片段中获取第i个音频片段,解码得到第i组解码音频数据,并存储至音频缓存栈,其中,i取值1至n;
S30、根据所述第i组解码音频数据确定第i组波形数据,并存储至峰值数据缓存栈;
S40、从所述音频缓存栈和所述峰值数据缓存栈中获取所述第i组解码音频数据和所述第i组波形数据进行同步播放;i的取值增加1并跳转至步骤S20。
2.根据权利要求1所述的方法,其中,所述预先将音频文件分割为n个音频片段包括:
识别所述音频文件类型;
当所述音频文件具备流特征时,直接将所述音频文件按照预设长度分割为n个音频片段;
当所述音频文件不具备流特征时,获取所述音频文件的文件头,并按照预设长度将所述音频文件的数据部分分割为n个数据片段;
根据所述文件头为所述n个数据片段中的每个添加文件头得到n个音频片段。
3.根据权利要求1所述的方法,其中,所述从所述n个音频片段中获取第i个音频片段包括:
通过ws协议接口从所述n个音频片段中获取第i个音频片段。
4.根据权利要求1所述的方法,其中,所述从所述音频缓存栈和所述峰值数据缓存栈中获取所述第i组解码音频数据和所述第i组波形数据进行同步播放包括:
当监听到播放指令之后,从所述音频缓存栈中获取所述第i组解码音频数据进行播放;同时,
从所述峰值数据缓存栈中获取所述第i组波形数据同步绘制波形。
5.一种浏览器播放音频的系统,包括:
音频分割程序模块,用于预先将音频文件分割为n个音频片段;
音频缓存栈程序模块,用于从所述n个音频片段中获取第i个音频片段,解码得到第i组解码音频数据,并存储至音频缓存栈,其中,i取值1至n;
峰值数据缓存栈程序模块,...
【专利技术属性】
技术研发人员:周祥,
申请(专利权)人:苏州思必驰信息科技有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。