About直播
苹果官方对于视频直播服务提输了HLS解决方案,主要只用于
1.iPhone,iPad,iPod touch以及Apple TV 进行流媒体的直播播放功能(MAC也适用).
2.不使用特殊的服务软件进行流媒体直播.
3.需要通过加密和坚定的视频点播服务.
互联网常用的视频技术
常用的流媒体传输协议主要有HTTP渐进下载和基于RTSP/RTP的实时流媒体协议,这两种基本上是完全不同的技术。
- HTTP渐进式下载,就是标准的基于HTTP下移的文件下载技术,媒体流和控制流都是通过HTTP传送
- RTSP/RTP,媒体流和控制流是分离的。(本文不分析RTSP,请参考文章 RTMP流媒体播放过程)
互联网视频技术,除了HTTP传送技术之外,还有两个关键技术
- 内容分片技术(segment):将一个大的影片文件分割成小的文件,这样便于实现边下载边播放和视频的直播。
- 自适应流媒体技术:(adaptive bit rate,ABR): ABR可以根据网络传送能力、终端能力和服务器能力自动选择合适的视频码率,从而能够有效实现多网络和多终端的视频业务,提升用户体验。
目前互联网公司提供PC视频和手机视频主要采用HTTP渐进下载技术,而电信和有线电视提供IPTV业务,采用RTSP/RTP技术。采用HTTP协议的好处在于,HTTP应用广泛,标准化和开放性高,很多免费和开元的技术,成本低廉。
HLS技术要点
-
HTTP Live Streaming(HLS)是苹果公司实现的基于HTTP的流媒体传输协议,可以实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(iPhone/iPad)提供给音视频直播和点播方案.HLS点播,基本上就是常见的分段式HTTP点播,不同在于,它的分段非常小.要实现HLS点播,重点在于对媒体文件分段.
-
HLS直播技术,直播的是从客户端获取的并不是一个完整的数据流.HLS协议在服务器端将直播数据流存储为连续的,很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播.可以认为,HLS的直播技术是以点播的方式实现.由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,已适应不同宽带条件下的播放.不过HLS的这种技术特点,决定了它的延时一般总会高于普通的流媒体直播协议.
-
实现直播,还有完成以下的技术关键点
1.采集视频源和音频源的数据.
2.对原始数据进行H264编码和AAC编码
3.视频和音频数据封装为MPEG-TS包
4.HTTP传输协议
HLS是如何工作的?
编码器首先将摄像机实时采集的视频、音频数据压缩编码为符合特定标准的音视频基本流,可也可以拿编码完的文件,这里一定要使用H.264视频和AAC音频,因为发明这个是苹果公司,只支持这个。然后将编码完的视频封装成MPEG-2(MPEG 2TS,MPEG 2PS),之所以使用这个是因为音频和视频会交织在一起,也会有关键帧来让视频可以直接播放。
流切片就是将完整的MPEG 2文件分割成很多ts的文件,分割过程大多按照时间来切,苹果HLS一般按照10秒来切割,如果高清等码流高可以5秒间隔。比如将1个1小时大的推送文件按照10秒间隔切割成360个小的ts文件,这时候,把一个影片分割成360个小文件,需要说明分片的规则、小文件的名称、相关之间的关系等等,这个描述文件成为索引文件(图一中的index file),索引文件个视频文件,二者缺一不可。当每10s多一个ts文件的时候,索引很会跟着修改。
服务器端
服务器可以采用硬件编码和软件编码两种形式,其功能都是按照上文描述的规则对现有的媒体文件进行管理.软件切片工具通常会使用Apple公司提供的工具或者第三方的集成工具.
媒体编码
媒体编码获取道德音频视频设饿背的实时信号,将其编码后压缩英语传输.贰佰你妈格式必须配置成客户端所支持的格式,比如H.264视频和HE-ACC音频.当前,支持用于视频的MPEG -2传输流和纯音频MPEG基本流.编码器通过本地网络将MPEG -2传输流分发出去,送到切片流器哪里.
流切片器
流切片器(通常是一个软件),会通过本地网络从上面的媒体编码器中读取数据,然后将这些数据分割成相等时间间隔的小媒体文件.虽然每一个片段都是一个单独的文件,但是他们的来源是一个连续的流,切完照样可以无缝重构回去.
切片器在切片的同时会创建一个索引文件,索引文件会包含这些切片文件的索引.每当一个切片文件生成之后,索引文件也会进行更新.索引用于追踪切片文件的有效性和定位切片文件的位置.切片器同时也可以对你的媒体片段进行加密并且创建一个密钥文件作为整个过程的一部分.
索引文件(PlayLists)
通常由切片器附带生成,保存为.M3U8
格式,.M3U8
一般用于MP3音频的索引文件.
文件切片器(相对于上面的流切片器)
如果已经有了编码后的文件,可以使用文件切片器,通过踏碎编码后的媒体文件进行MPEG -2流的封装并且将他们分割成等长的小片段.切片器允许使用已经存在的音频库用于HLS服务,它和流切片器功能相似,但是处理的源从流转换为文件.
媒体片段文件
媒体片段文件是由切割器生成的,机遇编码后的媒体源,并且是由一系列的.ts
格式的文件组成的.
分布式部分
分布式系统是一个网络服务或者一个网络缓存系统,用于通过HTTP向客户发送媒体文件和索引文件.不用自定义模块发送内容,通常仅仅需要很简单的网络配置就可以使用,这种配置一般就是指.M3U8
和.ts
文件的MIME类型.
客户端部分
客户端开始时会去抓取索引文件(.m3u8``.m3u
),其中用URL来标记不同的流.
第三方SDK
1.网易云信
2.ijkplayer
3.七牛
参考资料
HTTP Live Streaming
iOS 第三方之流媒体
IOS手机直播Demo技术简介
HTTP Live Streaming直播(iOS直播)技术分析与实现