【问题标题】:How do you reverse a wav file?你如何反转wav文件?
【发布时间】:2017-01-12 02:01:09
【问题描述】:

我想反转一个 wav 文件。但是,我不确定如何执行此操作。我已经读到您需要反转样本流而不是字节流,但我不确定人们的意思。感谢您的帮助!

【问题讨论】:

  • 您首先要阅读 WAV 文件规范,以便您至少了解基础知识。然后你去看看是否有可用于操作 WAV 文件的库。然后你写一些代码来做你想做的事。当您在代码中遇到卡住的地方时,您会来到这里,向我们展示您的代码并寻求帮助。

标签: wav


【解决方案1】:

进行某种声音操作的一个好方法是使用 Python 语言 + Pygame -

Pygame 允许您将 .wav 文件的内容读入一个包含 5 或 6 行程序的值数组 - 总共。 Python 语言允许你用一个简单的表达式来修改它,你需要对 pygame 进行更多的 2 或 3 次函数调用来保存或播放 wav 文件。

您可以在 http://www.python.org 获得最新的 Python,他们会寻找有关如何使用 pip 安装模块的说明——此时您将能够安装 pygame。然后,如果您还不了解 Python 基础知识,请学习以下 Pygame 的文档:

https://www.pygame.org/docs/ref/sndarray.html

【讨论】:

    【解决方案2】:

    没错,您需要反转样本而不是字节。 这是tutorial 的简短摘要。 抓取元数据之后的字节(通常在索引 44 处)。 使用 for 循环反转样本:

    private static byte[] ReverseTheForwardsArrayWithOnlyAudioData(int bytesPerSample, byte[] forwardsArrayWithOnlyAudioData)
    {
        int length = forwardsArrayWithOnlyAudioData.Length;
        byte[] reversedArrayWithOnlyAudioData = new byte[length];
        int sampleIdentifier = 0;
        for (int i = 0; i < length; i++)
        {
            if (i != 0 && i % bytesPerSample == 0)
            {
                sampleIdentifier += 2 * bytesPerSample;
            }
            int index = length - bytesPerSample - sampleIdentifier + i;
            reversedArrayWithOnlyAudioData[i] = forwardsArrayWithOnlyAudioData[index];
        }
        return reversedArrayWithOnlyAudioData;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 2020-05-22
      • 1970-01-01
      • 2011-12-14
      • 2012-09-17
      • 2017-09-28
      • 2011-06-17
      • 1970-01-01
      • 2020-05-29
      相关资源
      最近更新 更多