iOS GameKit/蓝牙数据流传输

4
我已经编写了一个程序,使用gamekit/bluetooth在两个iOS设备之间传输低质量视频,其中包含压缩的jpeg图像。我已经意识到不能将gamekit/bluetooth用于此目的(传输小块数据),但是以15帧/秒流式传输低质量压缩的jpeg图像效果良好,延迟很小或没有。
我的问题是,一旦将iOS设备发送者的画质或帧速率提高,就会出现延迟,不再实时。如果有延迟,我希望发送iOS设备能够丢弃帧(jpegs),以便接收方能够追赶或忽略积压队列。
在GameKit中,我已将会话模式设置为使用GKSendDataUnreliable来查看是否有所帮助,但是没有成功。
如果出现延迟,应该通过什么样的最佳解决方案和正确方法来丢弃帧(jpegs),以便iOS接收方能够回到实时状态?发送方需要停止一段时间的传输吗?还是接收客户端可以做些事情来丢弃积压队列?
我以前也使用过NSStream,虽然使用wifi可以获得更大的带宽,但如果传输的数据量过大,仍会出现延迟的问题。
感谢您的帮助。

可能看一下帧队列代码会有所帮助,等等。你很可能是对的,要么需要停止传输,要么丢弃队列中的帧。 - Andrew
1个回答

1

你能否给每个jpg附加一个时间戳(例如自纪元以来的时间),这样接收客户端将忽略所有不在给定时间范围内的图像。

此外,您可以让接收客户端回复简单的确认数据包,表明已接收到jpg。如果发送客户端在一定时间内没有收到确认数据包,则丢弃它要发送的所有图像并重新开始。

通过这种解决方案,如果接收客户端落后于发送者X秒,则会停止发送确认数据包并且丢弃所有传入的数据,直到发送者抛弃其队列中的所有内容并重新开始发送“实时”帧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接