【问题标题】:Read a sound backward with DirectSound使用 DirectSound 向后读取声音
【发布时间】:2013-09-26 01:49:13
【问题描述】:

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

【问题讨论】:

  • 尝试将文件作为流打开,获取头信息,使用头信息创建一个新的临时文件,然后从末尾写入流。将 tempfile 作为新的 directsound 对象打开并尝试播放它
  • 这是我目前正在尝试实施的解决方案。我想知道是否没有更简单的方法。顺便说一句,您为什么不将此作为答案发布?

标签: c# audio


【解决方案1】:

您可以使用 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);
                }
            }
        }
    }

【讨论】:

  • 接受,但我用 DirectSound 实现了它。
猜你喜欢
  • 1970-01-01
  • 2013-06-28
  • 2010-10-06
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多