recorder-core-rlian
Version:
Recorder库:html5 js 录音 mp3 wav ogg webm amr 格式,支持pc和Android、ios部分浏览器、和Hybrid App(提供Android IOS App源码),微信也是支持的,提供H5版语音通话聊天示例 和DTMF编解码
46 lines (39 loc) • 1.39 kB
JavaScript
/*
ogg编码器,beta版,需带上ogg-engine.js引擎使用
https://github.com/xiangyuecn/Recorder
当然最佳推荐使用mp3、wav格式,代码也是优先照顾这两种格式
浏览器支持情况
https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats
*/
(function(){
;
Recorder.prototype.enc_ogg={
stable:false
,testmsg:"比特率16-100kbps,此编码器源码2.2M,超级大,压缩后1.6M,开启gzip后327K左右,对录音的压缩率非常出色(相对mp3)"
};
Recorder.prototype.ogg=function(res,True,False){
var This=this,set=This.set,size=res.length,bitRate=set.bitRate;
bitRate=Math.min(Math.max(bitRate,16),100);
set.bitRate=bitRate;
bitRate=Math.max(1.1*(bitRate-16)/(100-16)-0.1, -0.1);//取值-0.1-1,实际输出16-100kbps
var ogg = new Recorder.OggVorbisEncoder(set.sampleRate, 1, bitRate);
var blockSize=set.sampleRate;
var idx=0;
var run=function(){
if(idx<size){
var floatBuf=new Float32Array(idx+blockSize>=size?size-(idx+1):blockSize);
for(var i=0,j=idx,len=idx+floatBuf.length;j<len;j++,i++){
var s=res[j];
s=s<0?s/0x8000:s/0x7FFF;
floatBuf[i]=s;
};
ogg.encode([floatBuf]);
idx+=blockSize;
setTimeout(run);//Worker? 复杂了
}else{
True(ogg.finish("audio/ogg"));
};
};
run();
}
})();