Как создать заголовок файла WAV для аудиоданных в потоке памяти? - PullRequest
0 голосов
/ 24 сентября 2018

Мне нужно соединить 2 файла WAV, которые находятся в байтовом массиве C #.Я получаю это исключение:

Не файл WAVE - нет заголовка RIFF

Как я узнал из сети, когда искал об этом, проблема заключается взаголовок байтового массива, который не в формате WAV.Но я не смог найти никакой помощи по поводу добавления заголовкаЭто мой код:

public static void Concatenate(string outputFile, IEnumerable<byte[]> sourceFiles)
{
    byte[] buffer = new byte[1024];
    WaveFileWriter waveFileWriter = null;

    try
    {
        foreach (byte[] sourceFile in sourceFiles)
        {
            Stream streamReader = new MemoryStream(sourceFile);
            using (WaveFileReader reader = new WaveFileReader(streamReader))
            {
                if (waveFileWriter == null)
                {
                    // first time in create new Writer
                    waveFileWriter = new WaveFileWriter(outputFile, reader.WaveFormat);
                }
                else
                {
                    if (!reader.WaveFormat.Equals(waveFileWriter.WaveFormat))
                    {
                        throw new InvalidOperationException("Can't concatenate WAV Files that don't share the same format");
                    }
                }

                int read;
                while ((read = reader.Read(buffer, 0, buffer.Length)) > 0)
                {
                    waveFileWriter.WriteData(buffer, 0, read);
                }
            }
        }
    }
    finally
    {
        if (waveFileWriter != null)
        {
            waveFileWriter.Dispose();
        }
    }
}

Как добавить заголовок файла WAV в байтовый массив?И еще вопрос: я должен добавить заголовок к байтовым массивам один за другим или сначала объединить два байтовых массива, а затем добавить заголовок?

...