【发布时间】:2017-09-18 09:55:16
【问题描述】:
我有一个简单的应用程序,我将 OPUS 数据包从一个客户端发送到另一个客户端,比如 A 到 B。
A 从 OPUS 文件中读取一个数据包,然后发送给 B。 在 20 毫秒或 30 毫秒后再次读取一个数据包并发送到 B,依此类推.. 直到现在我都在使用 RTP over UDP,所以在 B 的接收端,当我收到数据包时,我收到了完整的数据包。收到完整的数据包后,我写入一个新文件。
这很好用。
现在我计划通过 TCP 支持 RTP。 A 将从 OPUS 文件中读取一个完整的数据包并发送给 B。 当在 B 处接收到数据包时,它可能作为单个数据包或多个数据包被接收(tcp 行为)。我的要求是,我应该缓冲数据直到我收到完整的数据包。一旦收到完整的数据包,我会将其写入文件。
现在我的问题是,我在接收时如何确定B处OPUS数据包的长度,以便我可以缓冲它。
如果我可以避免的话,不想使用 libopus 等。如果通过任何方式从接收到的数据中,我可以找出数据包的长度吗?
【问题讨论】:
-
请问如何逐包读取OPUS文件?
-
您可能想查看 RFC 4571