C# 使用DirectSound反向读取声音

C# 使用DirectSound反向读取声音,c#,audio,C#,Audio,是否可以使用DirectSound的托管版本反向读取声音? 如果没有,是否有另一个库可以使其变得简单?您可以使用中的WaveFileReader和WaveFileWriter类来反转WAV文件。您需要确保使用波形格式的BlockAlign属性读取单个样本的所有字节(立体声16位音频为4字节) 尝试将文件作为流打开,获取头信息,使用头信息创建一个新的tempfile,并从末尾写入流。将tempfile作为一个新的directsound对象打开,并尝试播放它,这是我目前正在尝试实现的解决方案。我想知

是否可以使用DirectSound的托管版本反向读取声音?
如果没有,是否有另一个库可以使其变得简单?

您可以使用中的WaveFileReader和WaveFileWriter类来反转WAV文件。您需要确保使用波形格式的BlockAlign属性读取单个样本的所有字节(立体声16位音频为4字节)


尝试将文件作为流打开,获取头信息,使用头信息创建一个新的tempfile,并从末尾写入流。将tempfile作为一个新的directsound对象打开,并尝试播放它,这是我目前正在尝试实现的解决方案。我想知道是否有更简单的方法。顺便问一下,你为什么不把它作为一个答案发布呢?接受了,但我用DirectSound实现了它。
    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);
                }
            }
        }
    }