HTML5视频直播技术介绍

HTML5视频直播技术介绍视频直播如火如荼,为了满足比较火热的移动Web端直播需求,一系列的HTML5直播技术迅速的发展了起来。只要实现了视频直播的各个技术难点,通过HTML5进行视频直播并非难事。常见的可用于HTML5的直播技术共有3种协议:HLS、WebSocket与WebRTC。本文将对基于这3种协议的HTML5直播技术实现做下基础的介绍。一.HLS优点:CDN支持比较好缺点

大家好,又见面了,我是你们的朋友全栈君。

视频直播如火如荼,为了满足比较火热的移动 Web 端直播需求,一系列的 HTML5 直播技术迅速的发展了起来。只要实现了视频直播的各个技术难点,通过HTML5进行视频直播并非难事。
常见的可用于 HTML5 的直播技术共有3种协议:HLS、WebSocket与WebRTC。本文将对基于这3种协议的HTML5直播技术实现做下基础的介绍。

一. HLS
优点:CDN支持比较好
缺点:延时较高,无法进行互动直播

HLS(全称HTTP Live Streaming)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议,是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8)playlist文件,用于寻找可用的媒体流。
用HLS协议实现直播的延时比较高,是因为每一小段的视频文件都需要延迟时间比如文件列表里面包含5个TS文件,每个TS文件包含5秒视频,那么整体的延迟就是25秒。
当然也可以缩短列表的长度和单个TS文件的大小来降低延迟,甚至可以缩减列表长度为1,TS视频时长为1s。但是这样设置无疑会增加请求次数,服务器压力自然也会增大,而且当网速慢时这样的设置会造成更多的缓冲。苹果官方推荐的TS时长是10s,这样就会大约有30s的延迟。


HTML5视频直播技术介绍


二. WebSocket+MSE

优点:实时性比较好,可以用于互动直播,前端可操作性更大

缺点:技术较新,一些旧浏览器不支持


1. WebSocket

通常的Web应用都是围绕着HTTP的请求/响应模式而构建的。所有的HTTP通信都是通过客户端来控制的,都是由客户端向服务器发出一个请求,服务器接收和处理完毕后再返回结果给客户端,客户端再将数据展现出来。这种模式不能满足实时应用的需求,于是出现了SSE,Comet等“服务器推”的长连接技术.

WebSocket是直接基于TCP连接之上的通信协议,可以在单个TCP连接上进行全双工的通信。WebSocket在2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范,WebSocketAPI被W3C定为标准。

WebSocket是独立的创建在TCP上的协议,HTTP协议中的那些概念都不复存在,和HTTP的唯一关联是使用HTTP协议的101状态码进行协议切换,使用的TCP端口是 80,可以用于绕过大多数防火墙的限制。


HTML5视频直播技术介绍


2. MSE

MSE(全称:Media Source Extensions)是一个主流浏览器支持的新的Web API。MSE是一个W3C标准,允许Java动态的构建和 的媒体流。它定义了对象,允许Java传输媒体流片段到一个HTMLMediaElement。

通过使用MSE,你可以动态地修改媒体流而不需要任何的插件。这让前端Java可以做更多的事情,我们可以在Java进行转封装,处理,甚至转码。


HTML5视频直播技术介绍


三. WebRTC

优点:实时性好,延时低,基于UDP协议

缺点:缺少成熟的开源中转服务器方案


WebRTC(全称:WebReal-Time Communication),网页即时通信,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。

WebRTC 涉及到很多复杂技术,不过好在大多数复杂工作可以抽象成为下面三个 API:

MediaStream:获取音频和视频流;

RTCPeerConnection:用来建立和维护端到端连接,提供高效的音视频流传输;

RTCDataChannel:用于支持端到端的任意应用数据交换。

这里的MediaStream对应的是JS里的navigator.getUserMedia() 方法,它负责从底层平台获取音视频流。音视频流经过WebRTC音视频引擎的自动优化、编码和解码,可以直接读取或者传输到各种目的地。比如,我们可以用getUserMedia获取视频流,再把每一帧都转成ASCII字符播放。MediaStream这个API设计得很简单,使用起来也很方便。


三种协议方式的实现难度依次递增,用户体验也依次递增。


HLS基于HTTP的协议,本质是一个文本协议,将点播转换成直播。

WebSocket本质上算流协议,除了Chrome要求按GoP送数据之外,不会有切片时列表和切片请求的延迟。相比之下,使用WebSocket+MSE进行流媒体数据的传输,实时性更高。

WebRTC由于目前缺少成熟的开源中转服务器方案,在技术落地方面一直在进行相关探索。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162886.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NTP 协议介绍_什么是UTC协议

    NTP 协议介绍_什么是UTC协议NTP协议NTP(NetworkTimeProtocol,网络时间协议)是由RFC1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。对于运行NTP的本地系统,既可以接收来…

    2022年10月12日
    3
  • 苹果系统自带的计算机怎么恢复出厂设置,苹果Macbook电脑怎么恢复出厂设置【图文】…

    苹果系统自带的计算机怎么恢复出厂设置,苹果Macbook电脑怎么恢复出厂设置【图文】…苹果电脑预装Mac系统,简洁又安全,不过使用时间长了,难免会碰到一些问题,导致系统运行速度变得卡顿。恢复出厂设置是一个不错的办法,之前windows系统恢复出厂设置比较简单,但苹果Macbook电脑怎么恢复出厂设置?Mac系统提供恢复出厂系统的功能,主要分为离线和在线两种方法,感兴趣的一起来学习。苹果Macbook恢复出厂设置删除数据的方法:提醒:恢复出厂设置前请做好数据备份,以免对您造成损失。1…

    2022年6月17日
    60
  • 开源项目之架构分享[通俗易懂]

    开源项目之架构分享[通俗易懂]此次分享是我当初在开发某个系统时,参考的一些开源项目架构的思路和风格。第一个是Jeesite,它的架构风格如下:大家如果对jeesite感兴趣的话,可以百度搜索找到,不过那已经是半年多以前的事情,jeesite目前也发生较大的变化。当初我在参考jessite这个思路时,不知道是什么原因使我没有加入module,其实从现在的角度出发,加上module也是一件不错的事情,modu…

    2022年7月28日
    6
  • SQL SERVER 中的smalldatetime和datetime区别「建议收藏」

    SQL SERVER 中的smalldatetime和datetime区别「建议收藏」SQLSERVER中的smalldatetime和datetime区别Postedon 2011-01-0410:43 Rainbow.ding 阅读(2371)评论(0) 编辑 收藏 smalldatetime不能到秒. 不過它占的空間小.(4位) datetime(8位) 而且兩者的時間範圍不一樣.   datetime占8字节,精度3.3

    2022年5月19日
    54
  • Java基础,if,Integer最大值最小值,负数移位[通俗易懂]

    Java基础,if,Integer最大值最小值,负数移位[通俗易懂]如下:inta=2;if(a){//错误的,Incompatibletype,requiredboolean}if(!a){//错误的,Operate!cannotbeappliedtoint}System.out.println(Integer…

    2022年9月7日
    2
  • Kubeadm 安装

    Kubeadm 安装

    2022年3月5日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号