【发布时间】:2017-01-12 02:01:09
【问题描述】:
我想反转一个 wav 文件。但是,我不确定如何执行此操作。我已经读到您需要反转样本流而不是字节流,但我不确定人们的意思。感谢您的帮助!
【问题讨论】:
-
您首先要阅读 WAV 文件规范,以便您至少了解基础知识。然后你去看看是否有可用于操作 WAV 文件的库。然后你写一些代码来做你想做的事。当您在代码中遇到卡住的地方时,您会来到这里,向我们展示您的代码并寻求帮助。
标签: wav
我想反转一个 wav 文件。但是,我不确定如何执行此操作。我已经读到您需要反转样本流而不是字节流,但我不确定人们的意思。感谢您的帮助!
【问题讨论】:
标签: wav
进行某种声音操作的一个好方法是使用 Python 语言 + Pygame -
Pygame 允许您将 .wav 文件的内容读入一个包含 5 或 6 行程序的值数组 - 总共。 Python 语言允许你用一个简单的表达式来修改它,你需要对 pygame 进行更多的 2 或 3 次函数调用来保存或播放 wav 文件。
您可以在 http://www.python.org 获得最新的 Python,他们会寻找有关如何使用 pip 安装模块的说明——此时您将能够安装 pygame。然后,如果您还不了解 Python 基础知识,请学习以下 Pygame 的文档:
【讨论】:
没错,您需要反转样本而不是字节。 这是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;
}
【讨论】: