我有问题。我使用sqlite来存储声音。我从byte []中得到声音。
然后将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/

10-11 00:30