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)
上一篇 2022年7月21日 下午10:16
下一篇 2022年7月21日 下午10:16


相关推荐

  • java教程孙鑫_[Java基础] 孙鑫老师JAVA无难事视频教程 最适合java入门学习打基础的课程 附源码…「建议收藏」

    java教程孙鑫_[Java基础] 孙鑫老师JAVA无难事视频教程 最适合java入门学习打基础的课程 附源码…「建议收藏」资源介绍课程介绍由孙鑫老师亲自授课录制。内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手。由孙鑫老师亲自授课录制。内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手。从自学者很难弄明白的Java环境配置开始讲解,一步步引领你成为Java高…

    2022年5月17日
    36
  • Android RxJava原理分析

    Android RxJava原理分析团队并行开发 每个人对自己模块的 api 进行封装 然后利用 Retrofit 的 create 方法创建出对应的 apiservice 进行网络请求 各个模块都需要含有 apiservice 实例的简单单例封装 那么多个模块就有多个单例 这个时候就需要工厂模式进行设计

    2026年3月19日
    2
  • 模板方法模式例子「建议收藏」

    模板方法模式例子「建议收藏」原文地址:http://www.cnblogs.com/jenkinschan/p/5768760.html一、概述 模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。二、结构类图三、解决问题模板方法就是提供一个算法框架,框架里面的步骤有些是父类已经定好的,有些需要子类自己实现。相当于要去办一件事情,行动的流

    2025年6月9日
    5
  • spring容器创建对象的时间和懒加载

    spring容器创建对象的时间和懒加载

    2021年7月19日
    61
  • 进程调度算法–c语言实现

    进程调度算法–c语言实现nbsp nbsp 下面我用 c 语言模拟实现了 FCFS 先来先服务 SJF 短作业优先 和 RR 时间片轮转 的操作系统中的进程调度算法 还有实现结果哦 nbsp nbsp 关于这些算法的思想 大家可以去自己找一下 我呢就用结构体数组简单的实现了一下 nbsp nbsp nbsp 话不多说来看看代码 nbsp include lt stdio h gt include lt stdlib h gt include lt io

    2026年3月18日
    1
  • pycharm2021年激活码刚出 3月最新注册码

    pycharm2021年激活码刚出 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    50

发表回复

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

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