当前位置:   article > 正文

Unity AudioClip和PCM音频数据的转化_audioclip转pcm16

audioclip转pcm16

1 PCM音频数据转化AudioClip

  假设PCM音频当前是16Khz采样率,16bit数据

  1. byte[] pcmBytes=new byte[10240];
  2. float[] floatClipData = new float[audioBytes.Length/2];
  3. for (int i = 0; i < audioBytes.Length; i+=2)
  4. {
  5. floatData[i / 2] = (short)((audioBytes[i + 1] << 8) | audioBytes[i]) / 32768.0f;
  6. }
  7. // 构造一个新的AudioClip
  8. AudioClip audioClip = AudioClip.Create("PCMClip", floatData.Length, 1, 16000, false);
  9. // 将音频数据设置到AudioClip中
  10. audioClip.SetData(floatData, 0);
  11. audiosource.clip = audioClip;
  12. audiosource.Play();

2 提取AudioClp中的数据转化为PCM bytes字节数组

  1. AudioClip audioClip = new AudioClip();
  2. float[] audioData = new float[audioClip.samples * audioClip.channels];
  3. audioClip.GetData(audioData, 0);
  4. byte[] pcmBytesData = new byte[audioData.Length * 2];
  5. for (int i = 0; i < audioData.Length; i++)
  6. {
  7. short value = (short)(audioData[i] * short.MaxValue);
  8. pcmBytesData[i * 2] = (byte)(value & 0x0F);
  9. pcmBytesData[i * 2 + 1] = (byte)((value >> 8) & 0x0F);
  10. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号