如何将存储的MP3文件数据(byte [])转换为float [] Unity可以用作AudioSource-Data?

时间:2018-03-13 17:22:12

标签: c# unity3d audio mp3 naudio

我在最后几天做了很多研究,没有任何帮助我解决我的特殊问题。我正在为Unity3d游戏编写自己的音乐引擎,为此我创建了包含mp3数据和其他信息的自定义文件。

我现在要做的是将这些拆分的mp3字节数组(可以在我单独存储时播放,我测试了它 - 所以音频数据似乎很好)< / em>并以某种方式将它们转换为Unity的AudioSource。我认为将byte []转换为包含我的音频所需样本数据的float []就足够了,因为audioClip.setData( ... );应该做到这一点(我希望)。

但是我一直无法将我的原始mp3缓冲区[]解压缩和/或转换为像float []这样的东西 - 即使我以某种方式成功,我听到的唯一一件就是令人讨厌的类似于黑色的废话。

有什么想法吗?我很乐意听取您的意见并解决这个问题!

1 个答案:

答案 0 :(得分:0)

实现一个解压缩算法,它将采用压缩的MP3流并将其作为未压缩的数据输出,这不是一项简单的任务。您可以找到执行此操作的库(我不知道任何),或以某种方式解决此问题。 您可以使用untiy引擎通过AudioSource进行解压缩(也就是回放),然后对其进行采样,或者执行一些FFMPEG命令行来获取wav。大多数做这种方法都很麻烦,理想情况下你应该找到一种根本不做的方法。

byte []或float []在这里并不是一个非常明显的区别 - 差异是编码与原始的