iOS游戏工具包/蓝牙数据流
问题描述:
我写了一个使用游戏工具/蓝牙的程序,使用从一个iOS设备到另一个iOS设备的压缩jpegs传输低质量视频。我已经意识到gamekit/bluetooth不应该用于此目的(对于小块数据),但它的确可以很好地传输15个低质量压缩jpegs /秒,几乎没有延迟。iOS游戏工具包/蓝牙数据流
我的问题是,一旦我增加从iOS设备发送者到iOS接收器的质量或帧速率,就会发生滞后或延迟,并且不再是实时的。如果有延迟,我想以某种方式让发送的iOS设备丢弃帧,以便接收者可以赶上或让接收者忽略积压队列。
在GameKit中,我设置了会话模式以使用GKSendDataUnreliable来查看它是否可以帮助,但无济于事。
如果出现延迟,丢弃帧(jpegs)的最佳解决方案和正确方法是什么,以便iOS接收器能够赶上实时?发送方是否需要在一段时间内停止传输,或者是否有接收方客户可以做的事情来放弃累积队列。
我以前也使用过NSStream,并且在使用wifi时允许更大的带宽,如果传输的数据太多,延迟方面仍会出现同样的问题。
非常感谢您的帮助。
答
你可不可以给每个jpg附加一个时间戳(自epoch以来的时间),因此接收客户端将忽略所有不在给定时间范围内的图像。
此外,您可以让接收客户端回应简单的确认数据包,指出已收到jpg。如果发送客户端在给定的时间内未收到确认数据包,则会丢弃它要发送的所有图像并从头开始。
使用此解决方案,如果接收方客户端落在发送方X秒后,它将停止发送确认数据包并丢弃所有传入数据,直到发送方抛出队列中的所有内容并开始再次发送“活动”帧为止。
它可能有助于查看您的帧队列等的一些代码。您可能是正确的,您将需要停止传输或丢弃队列中的帧。 –