嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
function encodeWAV(samples){
//修改采样率 时 , 要添加混合声道时的处理
var dataLength = samples.length;
var buffer = new ArrayBuffer(44 dataLength);
var view = new DataView(buffer);
var sampleRateTmp = 11205 ;//sampleRate;//写入新的采样率
var sampleBits = 8;
var channelCount = 1;
var offset = 0;
/* 资源交换文件标识符 */
writeString(view, offset, 'RIFF'); offset = 4;
/* 下个地址开始到文件尾总字节数,即文件大小-8 */
view.setUint32(offset, /*32*/ 36 dataLength, true); offset = 4;
/* WAV文件标志 */
writeString(view, offset, 'WAVE'); offset = 4;
/* 波形格式标志 */
writeString(view, offset, 'fmt '); offset = 4;
/* 过滤字节,一般为 0x10 = 16 */
view.setUint32(offset, 16, true); offset = 4;
/* 格式类别 (PCM形式采样数据) */
view.setUint16(offset, 1, true); offset = 2;
/* 通道数 */
view.setUint16(offset, channelCount, true); offset = 2;
/* 采样率,每秒样本数,表示每个通道的播放速度 */
view.setUint32(offset, sampleRateTmp, true); offset = 4;
/* 波形数据传输率 (每秒平均字节数) 通道数×每秒数据位数×每样本数据位/8 */
view.setUint32(offset, sampleRateTmp * channelCount * (sampleBits / 8), true); offset =4;
/* 快数据调整数 采样一次占用字节数 通道数×每样本的数据位数/8 */
view.setUint16(offset, channelCount * (sampleBits / 8), true); offset = 2;
/* 每样本数据位数 */
view.setUint16(offset, sampleBits, true); offset = 2;
/* 数据标识符 */
writeString(view, offset, 'data'); offset = 4;
/* 采样数据总数,即数据总大小-44 */
view.setUint32(offset, dataLength, true); offset = 4;
/* 采样数据 */
floatTo8BitPCM(view, 44, samples);
return view;
}