关于直播视频格式和浏览器兼容性汗青的前因后果

由于误打误撞来到了淘宝直播团队,从最先完全不相识直播手艺,如今由于leader临时的脱离,预备接办h5播放器的迭代,就不得不最先相识相干的视频手艺,先整顿一下在直播手艺中的视频花样和差别浏览器的兼容性。

直播协定HLS和RTMP

直播手艺平常有两种协定体式格局,离别是HLS和RTMP,两种协定离别的诠释我就摘抄了一个博主的诠释

  • HLS ,是苹果公司完成的基于 HTTP 的流媒体传输协定,全称 HTTP Live Streaming,可支撑流媒体的直播和点播,重要应用在 iOS 体系,为 iOS 装备(如 iPhone、iPad)供应音视频直播和点播计划。
  • RTMP ,及时音讯传输协定,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开辟的开放协定。协定基于 TCP,是一个协定族,包含 RTMP 基础协定及 RTMPT/RTMPS/RTMPE 等多种变种。RTMP 是一种设想用来举行及时数据通信的收集协定,重要用来在 Flash/AIR 平台和支撑RTMP协定的流媒体/交互服务器之间举行音视频和数据通信。

总结下来就是RTMP是Adobe公司推出的基于flash的及时视频音讯传输协定,服务端和用户端经由过程flash竖立长链接,并及时举行音讯的推送、传输和吸收然后播放,对应的视频播放花样是flv。而HLS就是apple公司为了祛除flash(由于老乔一直以来对flash的抵抗和ios对flash的不支撑)自身定义的一套替换flash的视频解决计划。服务器和用户端经由过程不断的吸收视频片断(每一个片断都经由过程一次http请求)来播放,对应的视频播放花样是m3u8,个中m3u8只是一个示意视频片断地点的纯文本,用来加载一个个的.ts视频文件。

HLS和RTMP的利害

两种协定各有利害,详细的在本篇中不展开了,就我所知的RTMP协定耽误低,协定自身设想简约,合适及时性较高的收集直播,HLS是http请求,所以能够用cdn缓存等体式格局加快传输,然则由于是视频片断,轻易被跳过,所以假如有强迫广告请求的话也能够被跳过。然则RTMP由于占用的收集端口是1935,假如今后浏览器的一些新平安机制就有能够block一切80端口之外的衔接,也有平安性问题。

flv和m3u8花样的浏览器兼容性

挪动端

由于苹果公司对flash的猛烈抵抗以及自身定的视频协定,所以在ios端原生支撑m3u8花样的视频播放而不支撑flv的播放,而且由于苹果在挪动端的领头作用,所以其他挪动端包含android浏览器也都原生支撑m3u8花样的视频播放。

PC端

pc端由于汗青缘由,在hls之前都是用flash播放视频,厥后跟着html5的提高,能够用原生的video标签来播放mp4、ogg、webm等视频花样的播放,然则关于直播花样m3u8(除了safari)和flv都不能支撑播放。所以如今pc端广泛的做法照样经由过程flash来播放m3u8和flv花样的视频。

MSE

然则由于flash的镌汰正在加快,也比较有决计,比方我就发明如今chrome播放flash视频已要手动点击许可了。加上media source extention在高端浏览器已被支撑,就能够直接在浏览器端就完成视频花样的转换。MSE是一个能够经由过程js掌握浏览器视频源文件的api,有了这个api我们就能够经由过程js在浏览器端对视频举行转码及处置惩罚并供应给video标签了。B站已开源了一个flv播放器flv.js,道理就是经由过程剖析视频源,然后举行视频源解码转换成mp4花样,然后经由过程mse丢在video原生标签里播放,同理也有hls.js对m3u8花样的视频举行转码在pc端播放。

    原文作者:九瑶
    原文地址: https://segmentfault.com/a/1190000009121042
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞