Прочитайте звук назад с DirectSound

2

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

  • 1
    попробуйте открыть файл как поток, получить информацию заголовка, создать новый временный файл с информацией заголовка и записать поток с конца. откройте временный файл как новый объект directsound и попытайтесь воспроизвести его
  • 0
    Это решение, которое я сейчас пытаюсь реализовать. Мне было интересно, если бы не было более легкого пути. Кстати, почему вы не опубликовали это как ответ?
Теги:
audio

1 ответ

7
Лучший ответ

Вы можете использовать классы 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);
                }
            }
        }
    }
  • 0
    Принято, но я реализовал это с DirectSound.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню