众所周知,TSINGSEE青犀视频全线产品均能输出多种视频流,其中包括FLV、HLS。在今天的文章中,我们将为大家重点介绍:TSINGSEE青犀视频平台是如何输出HLS协议视频流。
什么是HLS协议?
HLS(HTTP Live Streaming)是苹果公司的动态码率自适应技术,主要用于PC和苹果终端的音视频服务,包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。
常用的流媒体协议主要有HTTP渐进下载和基于RTSP/RTP的实时流媒体协议。目前比较方便又好用的是HTTP渐进下载,而苹果公司的HTTP Live Streaming则是该方面的代表。
HLS的工作原理是把整个流分成一个个基于HTTP的文件片段来下载,当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。
在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。
HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。
简而言之,HLS是新一代流媒体传输协议,其基本实现原理为将一个大的媒体文件进行分片,将该分片文件资源路径记录于m3u8文件(即playlist)内,其中附带一些额外描述(比如该资源的多带宽信息等)用于提供给客户端。客户端依据该m3u8文件即可获取对应的媒体资源,进行播放。
因此,当我们的流媒体服务器视频平台获取HLS流文件,主要就是对m3u8文件进行解析操作。
那么,下面就简单介绍下m3u8文件。
M3U8文件是什么?
m3u8文件实质是一个播放列表(playlist),有可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是何种播放列表,其内部文字使用的都是utf-8编码。
当m3u8文件作为媒体播放列表(Media Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。
M3U8中包含基础标签:
EXTM3U:表明该文件是一个m3u8文件,每个m3u8文件必须将该标签放置在第一行。
EXT-X-VERSION:表示HLS的协议版本号,该标签与流媒体的兼容性相关。该标签为全局作用域,使能整个m3u8文件;每个m3u8文件内最多只能出现一个该标签定义。如果m3u8文件不包含该标签,则默认为协议的第一个版本。
EXTINF:表示其后URL指定的媒体片段时长(单位为秒)。每个URL媒体片段之前必须指定该标签,其值必须小于或等于EXT-X-TARGETDURATION指定的值。
简单来说,m3u8是一个TS切片列表文件,它记录视频的每个切片的时长与顺序。举个简单的例子,m3u8相当于一本书的目录,具体的ts文件类似书本每一章节具体的内容,播放器通过这个目录来加载读取每个章节具体的内容展示播放。目录上明确标识了该章节具体需要注意和设置的地方。
科普:TS,即Transport Stream(传输流),是高清摄像机拍摄下进行的封装格式,全称为MPEG2-TS。MPEG2-TS格式的特点,就是要求从视频流的任一片段开始都是可以独立解码的。
结语
TSINGSEE青犀视频全线产品在播放HLS视频流时,也是遵循以上操作。HLS的意义在于,当媒体流正在播放时,客户端可以根据当前网络环境,方便地在不同的码率流中做切换,以实现更好的观影体验。
值得一提的是,TSINGSEE青犀视频全线产品除了支持HLS协议之外,还可支持RTSP、RTMP、FLV等多种格式的视频流进行分发。
例如,TSINGSEE青犀视频旗下国标视频云服务产品EasyGBS,就可以将GB28181设备/平台推送的PS流转成ES流,并提供RTSP、RTMP、FLV、HLS多种格式进行分发,最终实现web浏览器、手机浏览器、微信、PC客户端等各种终端无插件播放。
EasyGBS视频播放界面实例图