将波形文件数据加载到缓冲区中

时间:2010-03-04 04:21:29

标签: c

gcc 4.4.2 C89

我有一个wave文件: 8000赫兹 16位

我想知道无论如何我都可以将这个wave文件的原始数据加载到缓冲区中。

非常感谢任何建议

4 个答案:

答案 0 :(得分:1)

是的,你正在寻找用C读取二进制文件。 像这样:

FILE* f;
char buf[MAX_FILE_SIZE];
int n;

f = fopen("filename.bin", "rb");
if (f)
{
    n = fread(buf, sizeof(char), MAX_FILE_SIZE, f);
}
else
{
    // error opening file
}

这将读取 bytes 的缓冲区。从中您可以构建您的数据。直接读取多字节数据更加棘手,因为您遇到了表示和字节序的问题。

使用了两个关键的C函数:

  • fopen以二进制模式打开文件(“rb”标志)
  • fread读取块数据(对二进制流很有用)。记录here

答案 1 :(得分:1)

如果您想处理声音样本,最好使用一个为您解释声音数据的库。例如libsndfile

答案 2 :(得分:1)

恕我直言的最佳方式是使用包含大量(1024个或更多)固定大小字符数组的元素的链表。

答案 3 :(得分:0)

此项目将WAVE文件数据转储到csv文件。您可以入侵它并获取转储到csv文件的数组。

https://github.com/dilawar/sound

免责声明:我是此存储库的作者。