Прочитайте звук назад с DirectSound - PullRequest
2 голосов
/ 03 августа 2009

Возможно ли прочитать звук в обратном направлении с помощью управляемой версии DirectSound? Если нет, то есть ли другая библиотека, позволяющая легко это сделать?

1 Ответ

7 голосов
/ 03 августа 2009

Вы можете использовать классы WaveFileReader и WaveFileWriter из NAudio для обращения к WAV-файлу. Вам необходимо убедиться, что вы используете свойство BlockAlign WaveFormat для чтения всех байтов для одного семпла (4 для стереофонического 16-битного звука).

    public static void ReverseWaveFile(string inputFile, string outputFile)
    {
        using (WaveFileReader reader = new WaveFileReader(inputFile))
        {
            int blockAlign = reader.WaveFormat.BlockAlign;
            using (WaveFileWriter writer = new WaveFileWriter(outputFile, reader.WaveFormat))
            {
                byte[] buffer = new byte[blockAlign];
                long samples = reader.Length / blockAlign;
                for (long sample = samples - 1; sample >= 0; sample--)
                {
                    reader.Position = sample * blockAlign;
                    reader.Read(buffer, 0, blockAlign);
                    writer.WriteData(buffer, 0, blockAlign);
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...