从字节创建音频剪辑[] [英] create AudioClip from byte[]

查看:643
本文介绍了从字节创建音频剪辑[]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有问题。我使用SQLite来存储声音。我得到的声音从它的byte []。
然后转换成字节[]浮动[]:

I have problem. I use sqlite to store sounds. I get sound from it in byte[]. Then convert byte[] to 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);

然后创建音频剪辑:

Then create 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);

但结果是噪音:(。

But result is noise :( .

推荐答案

floatArr需要进行调整以成为-1.0F到1.0F的范围内。

floatArr needs to be scaled to be within the range of -1.0f to 1.0f.

floatArr[i] = BitConverter.ToSingle(array, i*4) / 0x80000000;

这篇关于从字节创建音频剪辑[]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆