2

我想使用套接字通过网络将音频文件的内容发送到另一个系统。这两个系统都运行在 Windows 操作系统上。是否有关于以某种方式将音频内容存储到 C++ 数组或 Stringstream 数据类型中的教程,以便更容易将其发送到不同的节点。

我基本上想知道如何从音频文件中提取数据字节。

4

2 回答 2

3

最简单的做法是简单地以字节块的形式发送数据。如果您从音频文件开始,只需像打开任何其他二进制文件一样打开它file = fopen(filename, "rb");(其中文件名是音频文件的名称)。然后进入一个循环来读取一个字节块,直到你到达文件的末尾。只需使用类似bytes_read = fread(buffer, sizeof(char), read_size, file);wherebuffer应该是char至少 size 的数组read_size,例如 1024。在每个 之后fread,您可以让您的网络发送调用。或者,您可以先读取整个文件,然后逐块发送。你的来电。无论哪种方式,当您到达文件末尾时,发送某种您已到达末尾的信号。接收系统应该获取这些块并调用fwrite创建一个新的音频文件。您可以在每个块进入时附加它,也可以将其全部缓冲直到到达末尾,然后将其全部写出。

于 2013-09-04T13:33:30.970 回答
0

如果您只有 wav 文件,则可以使用 soundfile++。在此处查看 readtest 和 writetest 演示程序http://sig.sapp.org/doc/examples/soundfile/

于 2013-09-04T13:41:53.360 回答