最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 24位PCM采样数据转成16位算法,已实现PCM转WAV在线工具源码支持24bits、16bits、8bits

    正文概述 掘金(xiangyuecn)   2021-01-03   661

    算法来源

    24位PCM转成32位浮点数参考文章:www.codeproject.com/articles/50… 里面的Convert24BitToFloat函数,转成了32位浮点数就很容易转成16位或8位了。

    js版24位PCM转8位、16位代码

    var pcm24=... Uint8Array二进制数组 ...;
    var pcm16=new Int16Array(pcm24.length/3);
    var pcm8=new Uint8Array(pcm24.length/3);
    
    for(var i=0,j=0;j<pcm24.length;i++){
    	//24bit pcm转成浮点数
    	var n=((pcm24[j++] | (pcm24[j++]<<8) | (pcm24[j++]<<16))<<8)>>8;
    	n=n/16777216;
    	
    	//浮点数转成16位
    	pcm16[i]=n*0x7FFF;
    	
    	//浮点数转成8位
    	pcm8[i]=((n*0x7FFF) >> 8) + 128;
    };
    

    代码里面已经实现了24位PCM转成16位和8位,代码非常简单,移植到其他语言也很容易。

    js版8位、16位PCM转成24位

    根据上面代码,做一次逆运算就可以了:

    var pcm16=... Int16Array ...;
    var pcm24=new Uint8Array(pcm16.length*3);
    
    for(var i=0,j=0;i<pcm16.length;i++){
    	var n=pcm16[i] / 0x7FFF * 16777216;
    	//var n=((pcm8[i]-128) << 8) / 0x7FFF * 16777216; //8位的多一步先转成16位
    
    	pcm24[j++]=n & 0xff;
    	pcm24[j++]=(n & 0xff00) >> 8;
    	pcm24[j++]=(n & 0xff0000) >> 16;
    }
    

    附:浏览器控制台下载数据文件代码

    var b=new Blob([pcm16]);
    var a=document.createElement("a");
    a.href=URL.createObjectURL(b)
    a.download="test.pcm";
    a.click();
    

    相关实现

    24位PCM采样数据转成16位算法,已实现PCM转WAV在线工具源码支持24bits、16bits、8bits

    本代码已用在了H5录音开源库 Recorder 的裸(RAW、WAV)PCM转WAV播放测试和转码在线工具中,点此可以在线转换PCM文件。

    【完】.


    起源地下载网 » 24位PCM采样数据转成16位算法,已实现PCM转WAV在线工具源码支持24bits、16bits、8bits

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元