HTTP LIVE Streams

来源:互联网 发布:中国省市地区json数据 编辑:程序博客网 时间:2024/06/08 05:04
     简介: HTTP LIVE Streams(HLS) 是苹果公司基于 HTTP 的流媒体传输协议,可实现流媒体的直播和点播,主要功能是为 iOS 设备提供视频直播和点播方案。HLS点播基本上就是常见的分段HTTP点播,不同点是它的分段很小。要实现HLS点播,重点在于对媒体文件分段(可以参考开源工具)


     HLS 直播技术: 相对于常见的 RTMP 协议、RTSP 协议、MMS协议等来说,HLS直播最大的不同在于直播客户端获取到的并不是一个完整的数据流。HLS 协议在服务器端讲直播数据流存储为连续的、很短时长的MPEG-TS格式的媒体文件,客户端不断下载并播放这些小文件。因为服务器总是将最新的直播数据生成新的小文件,这样客户端只需要不停的按顺序播放从服务器获取到的文件,就实现了直播。即HLS是以点播的方式实现了直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率。以适应不同带宽条件下的播放。HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体传输协议

根据以上所述,要实现HLS直播,需要研究并实现以下关键技术点
    • 采集视频源和音频源的数据
    • 对原始数据进行H264视频编码和AAC音频编码
    • 视频和音频数据封装为MPEG-TS包
    • HLS分段生成策略以及m3u8索引文件
    • HTTP传输协议


  1. 分别开启音频与视频编码线程,通过DirctShow技术实现音视频采集,随后分别调用libx264和libfaac进行视频和音频编码。两个编码线程实时编码音视频数据后,根据自定义的分片政策,存储在某个MPEG-TS格式分段文件中,当完成一个分段文件的存储后,更新m3u8索引文件
  2. 采集到音频和视频数据后,首先需要判断,当前分片是否应该结束,并创建新分片,以延续TS分片的不断生成。需要注意的是,新的分片,需要从关键帧开始,防止播放器编码失败
附注: 
分段策略:HLS的分段策略,基本上推荐10秒一个分片,当时,具体时间还要根据分好的分片的实际时长做标注。通常为了缓存等方面的原因,在索引文件中会保留最新的三个分片地址。以类似于“滑动”的形式进行更新
     m3u8文件:m3u8是HLS直播的索引文件,基本上可以认为是.m3u格式文件,区别在于m3u8文件使用UTF-8字符编码 
0 0
原创粉丝点击