如何将音频剪辑写入.wav文件

时间:2020-03-27 16:19:29

标签: c# unity3d audioclip

我正在尝试将统一录制的音频剪辑保存到文件中。

首先,我获得音频剪辑的样本,这些样本是浮点值,然后将其转换为short值,然后获取其字节,然后使用FileStream将其字节写入文件,然后为其编写标题。

问题是只有一半被保存了。

这是我的代码

private void SaveAudioClip(FileStream fileStream, AudioClip clipToSave)
{
    float[] samples = new float[clipToSave.samples];

    clipToSave.GetData(samples, 0); //puts the clip's data into sample array

    short[] data = new short[samples.Length];

    var size = sizeof(short);

    byte[] byteArray = new byte[samples.Length * size];


    for (int i = 0; i < samples.Length; i++)
    {
        data[i] = (short) (samples[i] * short.MaxValue);


        BitConverter.GetBytes(data[i]).CopyTo(byteArray, i * size);
    }

    fileStream.Write(byteArray, 0, byteArray.Length);

    WriteHeader(fileStream, clipToSave);
}

我尝试将样本转换为int或uint32,它固定了长度,但是保存的文件是静音的。

有人可以帮我解决此问题吗?

0 个答案:

没有答案