我们希望通过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(...)
答案 0 :(得分:0)
我会使用javascript编码器(即MPEG)压缩屏幕截图,然后在服务器端将此流转码为VP8 for WebRTC。
然而,由于CPU资源较少,它可能无法在旧的iOS设备(即iPad 2010-2011)上正常工作,因此即使您对此流进行编码,它也可能不稳定且不适合流畅播放。