gpt4 book ai didi

c++ - 通过套接字接收音频文件

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:46 25 4
gpt4 key购买 nike

我正在尝试从 C 中的套接字接收文件(音频,.CAF)(C++ 解决方案也可以)。我有套接字通信工作,用字符串测试它。我的问题是我不知道向 recv(socket, buffer, buffer_size, 0) 中的第二个 arg 提供什么。我应该制作什么类型的“缓冲区”?我基本上想接收一个音频文件,然后播放它。但不知道如何接收音频文件本身。

有什么想法吗?

谢谢,

罗宾

最佳答案

通常,您会以某种格式对音频进行编码。为简单起见,我们假设它是 Wave 格式。

一种处理方法是封装音频 block (例如,50 毫秒 block )以通过网络发送。

但是,您不能盲目地通过网络发送数据并期望它能正常工作。在您的计算机上,数据可能以一种方式组织(小端或大端),而在另一台计算机上可能以相反的方式组织。

在那种情况下,客户将获得他认为与您的预期完全不同的数据。因此,您需要以某种方式正确地序列化它。

一旦你正确地序列化了数据(或者没有,如果两台计算机使用相同的字节顺序!),你可以只发送()它和 rcev()它,然后将它传递给解码器来处理。

我很乐意提供更多信息,但那是关于我在该主题上的知识范围。这实际上取决于您在做什么,因此如果没有关于您在做什么的更多细节(例如音频格式),很难提供更多信息。

更多信息:

http://en.wikipedia.org/wiki/Serialization

http://en.wikipedia.org/wiki/Endianness

编辑:正如此答案的评论中所指出的,如果您使用的是标准格式,您可能根本不必担心序列化。只需将它以解码器可用的 block 形式通过网络传递(例如,一次发送一个帧),然后在客户端解码这些单独的帧(或可能是多个帧)。

关于c++ - 通过套接字接收音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5533243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com