网络:发送视频(理论上)
Network: sending a video (in theory)
上下文
- 我们的传输通道不稳定。一些数据包可能会丢失。
- 在任何方向(从 A 到 B 或从 B 到 A)发送单个网络数据包需要 3 秒。
- 我们允许信号延迟 5 秒,不能再多了。所以我们有一个 5 秒的缓冲区。我们可以随心所欲地使用这 5 秒。
- 目前我们只使用了 80% 的传输通道,所以我们还有 1/4 的空间可以利用。
- 视频质量不能再差了。
问题
我们需要提高质量。如何处理丢包?
解题
某件事-在这种情况下我们不能使用TCP,因为当TCP检测到一些问题时,它会请求重新传输丢失的数据。这意味着数据包将在 9 秒后到达,这超过了限制。
因此我们需要使用 UDP 并自行处理这些错误。那怎么办呢?如何确保在不重传的情况下不会像目前那样丢失那么多数据包?
这是一个复杂的解决方案,但目前为止最好的选择是添加前向纠错 (FEC)。这就是图像从 space 探测器传输的方式,其中延迟以分钟或小时为单位。它也被手机使用,延迟数据包不利于双向通信。
一个不太好但更容易实现的选项是使用 UDT。这是一个带有类似 tcp 的 UDP 重传库,但允许您对协议进行更多控制。
上下文
- 我们的传输通道不稳定。一些数据包可能会丢失。
- 在任何方向(从 A 到 B 或从 B 到 A)发送单个网络数据包需要 3 秒。
- 我们允许信号延迟 5 秒,不能再多了。所以我们有一个 5 秒的缓冲区。我们可以随心所欲地使用这 5 秒。
- 目前我们只使用了 80% 的传输通道,所以我们还有 1/4 的空间可以利用。
- 视频质量不能再差了。
问题
我们需要提高质量。如何处理丢包?
解题
某件事-在这种情况下我们不能使用TCP,因为当TCP检测到一些问题时,它会请求重新传输丢失的数据。这意味着数据包将在 9 秒后到达,这超过了限制。
因此我们需要使用 UDP 并自行处理这些错误。那怎么办呢?如何确保在不重传的情况下不会像目前那样丢失那么多数据包?
这是一个复杂的解决方案,但目前为止最好的选择是添加前向纠错 (FEC)。这就是图像从 space 探测器传输的方式,其中延迟以分钟或小时为单位。它也被手机使用,延迟数据包不利于双向通信。
一个不太好但更容易实现的选项是使用 UDT。这是一个带有类似 tcp 的 UDP 重传库,但允许您对协议进行更多控制。