Как записать аудиоклип в файл .wav - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь сохранить аудиоклип, записанный в единстве, в файл.

Сначала я получаю сэмплы аудиоклипа, которые являются значениями с плавающей запятой, и преобразую их в короткие, а затем получаю их байты и записывают его байты в файл, используя 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, он фиксирует длину, но сохраненный файл молчит.

Может кто-нибудь помочь мне решить эту проблему?

...