C#Unity3D播放.wav在SQLite数据库中保存为BLOB

时间:2014-07-09 22:11:45

标签: c# sqlite unity3d

我有一个包含不同单词的数据库,并且单词是一个存储在带发音的blob中的wav文件。我试图让BLOB读作Unity的AudioClip。

到目前为止,我的声音文件有点像我原来的,因为它的长度相同,但是有很多静态。

private float [] ConvertByteToFloat ( byte [] array )
{
    float[] floatArr = new float [ array.Length / 4 ];
    for ( int i = 0; i < floatArr.Length; i++ )
    {
        if ( !System.BitConverter.IsLittleEndian )
            System.Array.Reverse( array, i * 4, 4 );
        floatArr [ i ] = System.BitConverter.ToSingle( array, i * 4 );
    }
    return floatArr;
}
float[] stream = ConvertByteToFloat((byte[]) reader["Sound"]);
AudioClip clip = AudioClip.Create( ( string ) reader [ "Name" ], stream.Length, 2, 44100, false, false );
clip.SetData( stream, 0 );

当IsLittleEndian是if(true)时,只有静态,如果不是真的,那么它会更准确,但仍然不是以前的那样。

1 个答案:

答案 0 :(得分:0)

您的问题是如何从内存中读取AudioClip数据?使用AudioClip.SetData API。例如,

AudioClip audioClip = AudioClip.Create("Sound", data.Length, 1, 44100, false, false);
audioClip.SetData(data, 0);

如果您拥有专业版许可证,也可以通过AssetBundle.CreateFromMemory使用sqlite3 blob数据中的AudioClip AssetBundle。