我想使用socket将音频文件的内容通过网络发送到另一个系统。两个系统都在Windows操作系统上运行。是否存在将音频内容存储到C ++数组或Stringstream数据类型的某种方式的教程,以便将其发送到不同的节点更容易。
我基本上想知道如何从音频文件中提取数据字节。
答案 0 :(得分:1)
最简单的方法是简单地以字节块的形式发送数据。如果您从一个音频文件开始,只需像任何其他二进制文件一样打开它,如file = fopen(filename, "rb");
(其中filename是音频文件的名称)。然后输入一个循环来读取一块字节,直到到达文件末尾。只需使用类似bytes_read = fread(buffer, sizeof(char), read_size, file);
的内容,其中buffer
应该是char
至少大小为read_size
的数组,可以是1024.在每个fread
之后,你可以让你的网络发送电话。或者,您可以先读取整个文件,然后按块发送它。你的来电。无论哪种方式,当你到达文件的末尾时,发送一些你已经到达终点的信号。接收系统应采用这些块并调用fwrite
来创建新的音频文件。你可以附加每个块,或者将它们全部缓冲,直到你到达终点,然后全部写出来。
答案 1 :(得分:0)
soundfile ++。在这里查看readtest和writetest演示程序http://sig.sapp.org/doc/examples/soundfile/