【发布时间】:2016-05-20 12:35:08
【问题描述】:
我们希望将屏幕(屏幕截图)从 iPad 共享到浏览器。 目前我们截取屏幕截图并通过 WebRTC 数据通道发送,但这需要大量带宽。
每秒发送 5 帧完全压缩和缩放,仍然需要大约 1.5-2mb/s 的上传速度。
我们需要利用某种形式的视频编码,因此我们可以降低带宽要求,让 WebRTC 处理流量控制,具体取决于连接速度。
AVAssetWriter 获取图像并将它们转换为 .MOV 文件,但不允许我们从中获取流。
对我们有什么想法吗?暂时卡住了,所有想法都表示赞赏。
感谢您建议这是重复的,但这对我没有多大帮助。我已经有一个可行的解决方案,但是还不够好。
编辑:
UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.7); //Scaling is slow, but that's not the problem. Network is
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *data = UIImageJPEGRepresentation(image, 0.0); //Compress alot, 0.0 is max, 1.0 is least
NSString *base64Content = [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
然后按照文档的建议,我通过 WebRTC DataChannel 以 16Kb 块的形式发送 base64 数据。
dc.send(...)
【问题讨论】:
-
@Kevin 这个问题已经结束,而且非常笼统。答案仅显示如何将屏幕捕获到文件中。这个问题有很好的定义,并解释了他们目前如何实施解决方案(捕获屏幕并通过数据通道发送)。
-
@xdumaine 这只是一个建议。谁知道呢,也许它对 Jakkra 有帮助。标记为重复也是链接到 SO 中相关信息的便捷方式。注意它是如何添加 ?最后,这不是一个声明。
-
@Kevin 谢谢,但正如 xdumaine 所说,对我帮助不大。已经有了一个可行的解决方案,但还不够好。还是谢谢!
-
@Jakkra 你能添加你的相关代码吗?如果我们不知道您如何处理数据,我们将无法帮助您优化。你如何截取屏幕截图?你如何压缩和缩放它们?你如何包装它们?你如何打开它们?如果您可以发布这些部分的代码,我们或许可以告诉您如何改进它。
标签: ios objective-c swift webrtc screensharing