【发布时间】:2015-12-15 18:45:33
【问题描述】:
这是我第一次使用波形文件。 问题是我并不完全了解如何正确读取存储的数据。我的阅读代码:
uint8_t* buffer = new uint8_t[BUFFER_SIZE];
std::cout << "Buffering data... " << std::endl;
while ((bytesRead = fread(buffer, sizeof buffer[0], BUFFER_SIZE / (sizeof buffer[0]), wavFile)) > 0)
{
//do sth with buffer data
}
样本文件头告诉我数据是 PCM(1 通道),每个样本 8 位,采样率为 11025Hz。
输出数据给我(更新后)从 0 到 255 的值,因此这些值是 8 位调制的正确 PCM 值。但是,知道正确读取这些值需要什么 BUFFER_SIZE 吗?
我正在使用的 WAV 文件:http://www.wavsource.com/movies/2001.htm (daisy.wav)
TXT 输出:https://paste.ee/p/pXGvm
【问题讨论】:
-
您的意思是 -128 到 127(而不是 172)吗?您看到签名值的原因是您将它们存储在已签名的 int8 中。 uint8 未签名
-
是的,我的错,我已经更改了我的代码。现在它给了我四个不同的值:128、127、87、0。我仍然不知道它是如何正确的?
-
我们没有您的数据,所以我不知道我们如何知道这些值是否正确。
-
我正在使用的文件:wavsource.com/snds_2015-12-13_4694675918641206/movies/2001/… 正在输出到 txt 文件。
-
好的,我刚刚用附加信息编辑了我的问题。