4

我编写了一个程序,使用 gamekit/bluetooth 将使用压缩 jpeg 的低质量视频从一个 iOS 设备传输到另一个。我已经意识到 gamekit/蓝牙不应该用于这个目的(对于小块数据),但它确实可以很好地流式传输 15 个低质量压缩 jpegs/秒,几乎没有延迟。

我的问题是,一旦我提高了从 iOS 设备发送器到 iOS 接收器的质量或帧速率,就会出现延迟或延迟,并且不再是实时的。如果有延迟,我希望发送 iOS 设备以某种方式丢弃帧,以便接收器可以赶上或让接收器忽略积压队列。

在 GameKit 中,我将会话模式设置为使用 GKSendDataUnreliable 来查看它是否有帮助,但无济于事。

如果发生延迟,丢弃帧(jpegs)以便 iOS 接收器可以赶上实时的最佳解决方案和正确方法是什么?发送方是否需要停止传输一段时间,或者接收客户端可以做些什么来丢弃累积队列。

我之前也使用过 NSStream,虽然使用 wifi 可以提供更大的带宽,但如果传输的数据过多,仍然会出现同样的延迟问题。

预先感谢您的帮助。

4

1 回答 1

1

您能否不为每个 jpg 附加时间戳(可能是自纪元以来的时间),以便接收客户端将忽略不在给定时间范围内的所有图像。

您也可以让接收客户端回复简单的确认数据包,表明已收到 jpg。如果发送客户端在给定的时间范围内没有收到确认数据包,它会丢弃它要发送的所有图像并从头开始。

使用此解决方案,如果接收客户端落后于发送者 X 秒,它将停止发送确认数据包并丢弃所有传入数据,直到发送者丢弃其队列中的所有内容并再次开始发送“实时”帧。

于 2013-08-21T20:51:01.277 回答