我有问题。我使用 sqlite 来存储声音。我从字节 [] 中得到声音。 然后将 byte[] 转换为 float[]:
private float[] ConvertByteToFloat(byte[] array)
{
float[] floatArr = new float[array.Length / 4];
for (int i = 0; i < floatArr.Length; i++)
{
if (BitConverter.IsLittleEndian)
Array.Reverse(array, i * 4, 4);
floatArr[i] = BitConverter.ToSingle(array, i * 4);
}
return floatArr;
}
float[] f = ConvertByteToFloat(bytes);
然后创建AudioClip:
AudioClip audioClip = AudioClip.Create("testSound", f.Length, 1, 44100, false, false);
audioClip.SetData(f, 0);
然后播放
AudioSource.PlayClipAtPoint(audioClip, new Vector3(100, 100, 0), 1.0f);
但结果是噪音 :( .
最佳答案
floatArr 需要缩放到 -1.0f 到 1.0f 的范围内。
floatArr[i] = BitConverter.ToSingle(array, i*4) / 0x80000000;
关于c# - 从 byte[] 创建 AudioClip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16078254/