音频文件PCM转wav源码

说明:本源码只提供了生成 文件头 的函数,只返回文件头(只返回固定44字节!),如果将pcm转成wav,请参考下面公式

WAV字节集 = 文件头字节集+PCM字节集 

让我们一起来观赏一下pcm变成wav的过程吧!

文件头:

         byte[] header = new byte[44];         header[0] = 'R'; // RIFF         header[1] = 'I';         header[2] = 'F';         header[3] = 'F';         header[4] = (byte) (totalWavSize & 0xff);//xx大小         header[5] = (byte) ((totalWavSize >> 8) & 0xff);         header[6] = (byte) ((totalWavSize >> 16) & 0xff);         header[7] = (byte) ((totalWavSize >> 24) & 0xff);         header[8] = 'W';//WAVE         header[9] = 'A';         header[10] = 'V';         header[11] = 'E';         //FMT Chunk         header[12] = 'f'; // 'fmt '         header[13] = 'm';         header[14] = 't';         header[15] = ' ';//过渡字节         //xx大小         header[16] = 16; // 4 bytes: size of 'fmt ' chunk         header[17] = 0;         header[18] = 0;         header[19] = 0;         //编码方式 10H为PCM编码格式         header[20] = 1; // format = 1         header[21] = 0;         //通道数         header[22] = (byte) channels;         header[23] = 0;         //采样率,每个通道的播放速度         header[24] = (byte) (sampleRate & 0xff);         header[25] = (byte) ((sampleRate >> 8) & 0xff);         header[26] = (byte) ((sampleRate >> 16) & 0xff);         header[27] = (byte) ((sampleRate >> 24) & 0xff);         //音频xx传送速率,采样率*通道数*采样深度/8         header[28] = (byte) (byteRate & 0xff);         header[29] = (byte) ((byteRate >> 8) & 0xff);         header[30] = (byte) ((byteRate >> 16) & 0xff);         header[31] = (byte) ((byteRate >> 24) & 0xff);         // 确定系统一次要处理多少个这样字节的xx,确定缓冲区,通道数*采样位数         header[32] = (byte) (channels * 16 / 8);         header[33] = 0;         //每个样本的xx位数         header[34] = 16;         header[35] = 0;         //Data chunk         header[36] = 'd';//data         header[37] = 'a';         header[38] = 't';         header[39] = 'a';         header[40] = (byte) (totalPcmSize & 0xff);         header[41] = (byte) ((totalPcmSize >> 8) & 0xff);         header[42] = (byte) ((totalPcmSize >> 16) & 0xff);         header[43] = (byte) ((totalPcmSize >> 24) & 0xff);         os.write(header, 0, 44);
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注