首页 > 学院 > 开发设计 > 正文

HLS学习(一)HLS介绍

2019-11-06 08:25:32
字体:
来源:转载
供稿:网友

HLS介绍

    HLS(HTTP live streaming)是apple公司提出的一个基于HTTP的流媒体网络传输协议    HLS只请求基本的HTTP报文,和实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器

协议简介

     1、视频的封装格式是TS     2、视频的编码格式是H.264,音频编码格式是MP3、AAC或者AC-3          3、处理TS视频文件本身,还定义了用来控制播放的m3u8文件(文本文件)

协议特点

     1、HLS是为了解决RTMP协议中存在的一些问题,RTMP协议不使用HTTP的接口,可能会被屏蔽     2、RTMP是有状态的协议,很难对视频服务器进行平滑扩展;二HLS是无状态的协议,客户端只需要按照顺序使用下载存储在服务器的普通TS文件。     3、HLS协议本身实现了码率的自适应。     4、HLS协议的延迟很大,直播延迟比较敏感的服务慎用HLS

HLS的工作流程

     1、客户端先下载一级索引文件(即m3u8文件)     2、一级索引文件里记录了二级索引文件(index1,index2,index3等,也是m3u8文件)的地址     3、客户端根据地质去下载二级索引文件     4、二级索引文件中记录了TS文件的下载地址

     5、这样客户端就可以按照顺序下载TS视频文件并连续播放

HLS的m3u8文件

    1、m3u8文件即索引(index)文件,示例图如下:          2、一级index文件介绍     #EXTM3U#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=10640001000kbps.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=564000500kbps.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=282000250kbps.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=21280002000kbps.m3u8     bandwidth指定视频的比特率;     PROGRAM-ID无需关注;     每个#EXT-X-STREAM-INF的下一行就是二级index文件的路径,路径可以是绝对路径也可以是相对路径;     客户端可以自己判断目前的网络带宽,来决定播放哪一个视频流     3、二级index文件#EXTM3U#EXT-X-PLAYLIST-TYPE:VOD#EXT-X-TARGETDURATION:10#EXTINF:10,2000kbps-00001.ts#EXTINF:10,2000kbps-00002.ts#EXTINF:10,2000kbps-00003.ts#EXTINF:10,2000kbps-00004.ts... ...#EXTINF:10,2000kbps-00099.ts#EXTINF:10,2000kbps-00100.ts#ZEN-TOTAL-DURATION:999.66667#ZEN-AVERAGE-BANDWIDTH:2190954#ZEN-MAXIMUM-BANDWIDTH:3536205#EXT-X-ENDLIST     #EXTINF表示每个ts切片的视频文件的时长     #EXT-X-TARGETDURATION指定当前视频流中切片文件的最大时长,即这些ts切片的时长不能超过这个值     #EXT-X-PLAYLIST-TYPE-VOD 表示当前的视频不是一个直播流,而是点播流     #EXT-X-ENDLIST表示这个视频结束,这个标志也说明了当前的流是一个非直播流

播放模式

     1、点播VOD。特点是当前时间点可以获取到所有index文件和ts文件,二级index文件中记录了所有ts文件的地址。这种模式允许客户访问全部内容。     2、Live(直播)。实时生成m3u8文件和ts文件。它的索引玩呢家一直处于动态变化的,播放的时候需要不断下载二级index文件,以获取最新生成的ts文件。如果一个而今index文件的末尾没有#EXT-X-ENDLIST标志,说明他是一个live视频流

整理自:http://www.jianshu.com/p/426425cad08a


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表