ios网页视频抓取工具(iOS浏览器环境下支持常见的低延迟直播,真·实时)
优采云 发布时间: 2021-12-06 14:21ios网页视频抓取工具(iOS浏览器环境下支持常见的低延迟直播,真·实时)
iOS的浏览器环境当然包括微信和QQ。目前的直播协议一般都是HLS,延迟可想而知。当然,“真实·实时”是指2秒以内的延迟。
浏览器环境下支持常见的低延迟直播,flv.js是首选。支持多种数据获取方式(fetch、websocket、xhr),兼容性好。 flv流解析后,封装成mp4数据,利用Media Source Extensions功能将数据馈送到播放器,实现实时解码播放。根据浏览器支持,它具有硬件加速性能。
而iOS是目前无法实现的平台。可以看出,到目前为止,系统11.2仍然不支持该功能。
但是通过websocket+WebAssembly技术,可以曲线救国。我已经实现了第一个版本
采用emscripten技术,完全用C++编写,最后编译成js代码。仅使用 ffmpeg 的 libavcodec、libavutil 和 libswresample 库。仅编译 h264、hevc、mp3、aac、nellymoser *敏*感*词*。最后,2.9M的js代码是在-Os级别编译的。经过测试,基本兼容windows、linux、mac、android、ios。视频渲染完全由WebGL实现,性能高于其他js*敏*感*词*的YUV转RGB。经测试,640×480@30纯h264视频在iphone5s上可以流畅播放。
目前还不清楚实际的应用场景。或许QQ里的实时视频监控可以用在微信上。*敏*感*词*也可以尝试使用openh264,而且不需要支持音频场景,也可以达到理想的720p软件解码性能,体积也可以做得很小,1M以内。基本上通过CDN加速,也可以达到不错的首屏启动速度。
由于emscripten的TCP支持是基于websocket的,所以传输协议只能是websocket。最常见的媒体格式是非常适合低延迟直播的flv格式。开源流媒体服务器Node-我开发的Media-Server就支持这个特性。 emscripten也支持fetch,不过好像是xhr,兼容性有待提高。 emscripten好像也支持UDP,不过我还没试过。好像代码是用webrtc做前端的,不清楚。如果能够支持传统的UDP传输,对服务器的要求就可以降低。只是模拟了c层的BSD socket接口,还是websocket传输。
如果您有这方面的需求或建议,可以留言或邮件联系我。