媒体源扩展(MSE)介绍

本文主要介绍MSE(Media Source Extensions,媒体源扩展)的相关知识。

1 概述

MSE,即媒体源扩展,可以理解为一种API,其提供了实现无插件且基于Web的流媒体的功能。通过MSE,媒体串流能够通过JavaScript创建,并且可以使用HTML5的<audio>和<video>标签进行播放。

2 why MSE

以前,用户在通过Web浏览器浏览网页内容,尤其是视频内容时,需要使用诸如Adobe Flash或是微软的Silverlight等类似的插件,才能播放视音频内容,这些插件对于Web浏览器来说,扮演着媒体播放器角色。但是,在浏览器中使用插件是不便捷并且不安全的(不法分子会在插件上动手脚),因此,最新的HTML5标准中,定义了一系列新的元素来避免使用插件,其中就包含了大名鼎鼎的<video>标签。

有了<video>标签,支持HTML5的Web浏览器就能够实现无需插件播放媒体内容了,但是HTML5的<video>标签对媒体的格式有所限制(在Windows电脑上只支持mp4、webm、ogg等格式)。这里简单介绍一下媒体格式,媒体的格式分为“编码格式”和“封装格式”,原视频数据通过编码来压缩视频数据大小,这里用到的格式为编码格式(如常见的“H.264”编码),再通过封装将压缩后的视音频、字幕组合到一个容器中,这里用到的格式为封装格式(如常见的mp4格式)。

我们可以把<video>标签看做是浏览器自带的、具有解封和解码功能的视频播放器。但是,随着视频点播、直播等视频业务的兴起,视频数据会通过流媒体传输协议(目前常用的MPEG-DASH和Apple的HLS)从服务端分发给客户端。在这种情况下,媒体内容就被包含在传输协议中了,此时HTML5的<video>标签就无法识别并播放媒体内容了。以HLS协议为例。HLS将视频源文件的内容分散地封装到一个个TS文件中,此时仅靠<video>标签是无法识别这些TS文件的,所以,我们就需要引入了MSE来帮助Web浏览器识别并处理TS文件,将其变回Web浏览器可识别的媒体容器格式(mp4格式)。经过MSE的处理,<video>标签就可以识别并播放视频源文件了。例如,“hls.js”中就利用MSE将视频分片内容进行合流,并组成HTML5的<video>标签可播放的媒体资源文件。再比如,“flv.js”通过MSE播放HTTP-FLV协议的视频直播流。简单总结一下,引入MSE之后,支持HTML5的Web浏览器就变成了能够解析流协议的播放器了。

从另外一个角度来说,通过引入MSE,HTML5的<video>标签不仅可以直接播放其默认支持的mp4、m3u8、webm、ogg等格式,还可以支持能够被 (具备MSE功能的)JS处理的视频流格式。如此一来,我们就可以通过 (具备MSE功能的)JS,把一些<video>标签原本不支持的视频流格式,转化为其支持的格式(如“H.264”的mp4)。B站开源的“flv.js”就是此技术的一个典型应用场景,B站的HTML5播放器,通过使用MSE技术,将FLV源用JS(flv.js)实时转码成HTML5支持的视频流编码格式,提供给HTML5播放器播放。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liitdar

赠人玫瑰,手有余香,君与吾共勉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值