HLS流媒体-整体认知(1)
前言:HLS是HTTP Live Streaming的缩写。它是苹果公司实现的基于HTTP的流媒体传输协议,可以实现流媒体的直播和点播。官网参考地址:http://developer.apple.com/resources/http-streaming/
PS:本文的主要目的在于:加以个人理解,对研究新技术的记录。如果文中有出入的地方,还请见谅,且请各位大虾指正,不胜感激,已内牛满面...
本文主要内容:
1、何为直播?何为点播?2、HLS流媒体播放的工作流程(重点说明理解);3、总结。
1、何为直播?何为点播?
视频播放实现简述:客户端播放器播放视频URL(这也是一个网络请求),服务器受到请求后,做出响应,实时将2个小时的视频文件,经过处理,以媒体“流”(一个形象的说法)的形式传输到客户端的播放器,就实现了视频的播放。
点播:视频内容已经存放在服务器上(换句话说,我们能够得到该视频文件在服务器上的URL地址),我们可以选择性地播放某个“大片”。
直播:视频内容是实时录制的,与此同时,将音视频以媒体“流”的形式推到服务器上。此时,一旦有观众收看该直播,服务器收到响应后,会将媒体流传输至播放器,实现视频播放
PS:最直观的认知,即点播的内容,可以任意控制视频播放的进度。而直播则不然,取决于网红的实时直播进度。
扩展了解:目前常见的点播视频的格式,mp4、flv、hls等。其中,1、mp4是比较经典的文件格式,其格式较复杂,处理成本较高;2、flv是Adobe力推的标准;3、hls是Apple力推的标准,鉴于其精简的m3u8索引结构所表现出的优势,无疑会使其成为媒体处理的趋势。
2、HLS流媒体播放的工作流程(重点说明理解)
工作流程图上图为Apple官网提供的说明,参见上图,对其工作流程做以下说明:
1.音视频采集(Live、或录制好的Video) -> 这里“采集”只针对于视频直播,比如说我通过iPhone32(噗,更长了...)设备的麦克风、摄像头来采集音视频,并将其实时上传至服务器。而点播的内容,已经在服务器上了。
2.音视频编码(H.264、AAC)->服务端对视频、音频进行H.264、AAC编码(所谓的编码:将视频文件进行合理的最大化的压缩处理,便于在网络中传输),鉴于H.264具有很高的数据压缩比率,同时还拥有高质量流畅的图像,故而备受“恩宠”。
3.媒体流切片处理(Stream segmenter) ->服务器通过“切割器”对多媒体进行切片处理,生成N多个.ts文件,并对应了一个索引文件(.m3u8)。其中该索引文件记录了视频即 .ts文件的播放顺序,并会作出及时的更新。
4.生成.m3u8(精简的索引结构)和 N多个.ts文件(5~10s) ->这样精简的结构相对于MP4而言,尤其显示了优势之处,首先是便于阅读理解,其次最重要的每个ts文件很小,能够在网络快速传输。而对于用户而言,可以根据网络状况,快速的切换视频码率。另外,.m3u8采用UTF-8编码,接下来咱们看一下该结构:
m3u8编码格式说明 m3u8案例-索引目录5.基于Http协议,将数据传递给客户端,以实现视频播放 -> 通过Http协议,客户端课按照m3u8所提供的索引结构,能够快速的下载相应的 .TS片段。最后通过播放器对音视频解码,从而播放“大片”。
3、总结
目前是一个“网红”盛行的时代,越来越多的人跻身其中,无形中推动了互联网“直播”的快速发展,就拿现在的直播平台来说,YY,斗鱼、熊猫等等,这无疑对于开发者是一个新的契机。流媒体就好比是一块非常大的蛋糕,而本文的目的是先对这个蛋糕做一个整体认知,便于对其的每个组成部分逐一攻破。
最后
团队微信公众号欢迎大家关注我们团队微信公众号,以及博客地址,在这里我们会实时与大家分享优质的技术文章。大家也可以加入我们的技术交流群(QQ群:343640780),共同探讨,共同进步。
团队博客地址:http://www.52learn.wang
团队GitHub:https://github.com/wu2LearnTeam