通过WebRTC将屏幕截图作为来自iOS的视频流进行流式传输

时间:2016-05-20 12:35:09

标签: ios objective-c swift webrtc screensharing

我们希望通过iPad将屏幕(屏幕截图)分享到浏览器。 目前我们截取屏幕截图并通过WebRTC DataChannel发送,但这需要更多带宽。

每秒发送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];

然后我按照文档的建议在16Kb块中通过WebRTC DataChannel发送base64数据。

dc.send(...)

1 个答案:

答案 0 :(得分:0)

我会使用javascript编码器(即MPEG)压缩屏幕截图,然后在服务器端将此流转码为VP8 for WebRTC。

然而,由于CPU资源较少,它可能无法在旧的iOS设备(即iPad 2010-2011)上正常工作,因此即使您对此流进行编码,它也可能不稳定且不适合流畅播放。