摘要:和格式的浏览器兼容性移动端因为苹果公司对的强烈抵制以及自己定的视频协议,所以在端原生支持格式的视频播放而不支持的播放,而且因为苹果在移动端的领头作用,所以其他移动端包括浏览器也都原生支持格式的视频播放。
因为误打误撞来到了淘宝直播团队,从开始完全不了解直播技术,现在因为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://www.ucloud.cn/yun/82574.html
摘要:和格式的浏览器兼容性移动端因为苹果公司对的强烈抵制以及自己定的视频协议,所以在端原生支持格式的视频播放而不支持的播放,而且因为苹果在移动端的领头作用,所以其他移动端包括浏览器也都原生支持格式的视频播放。 因为误打误撞来到了淘宝直播团队,从开始完全不了解直播技术,现在因为leader暂时的离开,准备接手h5播放器的迭代,就不得不开始了解相关的视频技术,先整理一下在直播技术中的视频格式和不...
摘要:文红点联合创始人王宇航我今天分享的主题,是以实时连接场景为目标的一些技术架构探索。主要是关于红点在产品研发过程中,我们的技术选择,架构变化,还有这个过程中,我们的一些考虑。红点的第一个版本红点的第一个版本功能比较简单。 showImg(https://segmentfault.com/img/bVrBAw); 文 | 红点联合创始人 王宇航 我今天分享的主题,是以实时连接场景为目标的一...
阅读 1532·2023-04-26 01:54
阅读 1563·2021-09-30 09:55
阅读 2589·2021-09-22 16:05
阅读 1722·2021-07-25 21:37
阅读 2588·2019-08-29 18:45
阅读 1862·2019-08-29 16:44
阅读 1852·2019-08-29 12:34
阅读 1316·2019-08-23 14:02