使用DirectSound向后读取声音

时间:2009-08-03 08:00:32

标签: c# audio

是否可以使用DirectSound的托管版本向后读取声音? 如果没有,是否有另一个库可以轻松实现?

1 个答案:

答案 0 :(得分:7)

您可以使用NAudio中的WaveFileReader和WaveFileWriter类来反转WAV文件。您需要确保使用WaveFormat的BlockAlign属性来读取单个样本的所有字节(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);
                }
            }
        }
    }