音频文件PCM转wav[易语言源码]

(゜-゜)つロ 干杯~

音频文件PCM转wav[易语言源码]

点评

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

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

  1. byte[] header = new byte[44];  
  2. header[0] = 'R'; // RIFF  
  3. header[1] = 'I';  
  4. header[2] = 'F';  
  5. header[3] = 'F';  
  6. header[4] = (byte) (totalWavSize & 0xff);//xx大小  
  7. header[5] = (byte) ((totalWavSize >> 8) & 0xff);  
  8. header[6] = (byte) ((totalWavSize >> 16) & 0xff);  
  9. header[7] = (byte) ((totalWavSize >> 24) & 0xff);  
  10. header[8] = 'W';//WAVE  
  11. header[9] = 'A';  
  12. header[10] = 'V';  
  13. header[11] = 'E';  
  14. //FMT Chunk  
  15. header[12] = 'f'; // 'fmt '  
  16. header[13] = 'm';  
  17. header[14] = 't';  
  18. header[15] = ' ';//过渡字节  
  19. //xx大小  
  20. header[16] = 16; // 4 bytes: size of 'fmt ' chunk  
  21. header[17] = 0;  
  22. header[18] = 0;  
  23. header[19] = 0;  
  24. //编码方式 10H为PCM编码格式  
  25. header[20] = 1; // format = 1  
  26. header[21] = 0;  
  27. //通道数  
  28. header[22] = (byte) channels;  
  29. header[23] = 0;  
  30. //采样率,每个通道的播放速度  
  31. header[24] = (byte) (sampleRate & 0xff);  
  32. header[25] = (byte) ((sampleRate >> 8) & 0xff);  
  33. header[26] = (byte) ((sampleRate >> 16) & 0xff);  
  34. header[27] = (byte) ((sampleRate >> 24) & 0xff);  
  35. //音频xx传送速率,采样率*通道数*采样深度/8  
  36. header[28] = (byte) (byteRate & 0xff);  
  37. header[29] = (byte) ((byteRate >> 8) & 0xff);  
  38. header[30] = (byte) ((byteRate >> 16) & 0xff);  
  39. header[31] = (byte) ((byteRate >> 24) & 0xff);  
  40. // 确定系统一次要处理多少个这样字节的xx,确定缓冲区,通道数*采样位数  
  41. header[32] = (byte) (channels * 16 / 8);  
  42. header[33] = 0;  
  43. //每个样本的xx位数  
  44. header[34] = 16;  
  45. header[35] = 0;  
  46. //Data chunk  
  47. header[36] = 'd';//data  
  48. header[37] = 'a';  
  49. header[38] = 't';  
  50. header[39] = 'a';  
  51. header[40] = (byte) (totalPcmSize & 0xff);  
  52. header[41] = (byte) ((totalPcmSize >> 8) & 0xff);  
  53. header[42] = (byte) ((totalPcmSize >> 16) & 0xff);  
  54. header[43] = (byte) ((totalPcmSize >> 24) & 0xff);  
  55. os.write(header, 0, 44);  

下载地址

   

如果资源下载失效请到 留言板 留言或者 QQ 联系我。

本站默认解压密码:www.hibbba.com

(゜-゜)つロ 干杯~
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: