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传输协议
- 分别开启音频与视频编码线程,通过DirctShow技术实现音视频采集,随后分别调用libx264和libfaac进行视频和音频编码。两个编码线程实时编码音视频数据后,根据自定义的分片政策,存储在某个MPEG-TS格式分段文件中,当完成一个分段文件的存储后,更新m3u8索引文件
- 采集到音频和视频数据后,首先需要判断,当前分片是否应该结束,并创建新分片,以延续TS分片的不断生成。需要注意的是,新的分片,需要从关键帧开始,防止播放器编码失败
附注:
分段策略:HLS的分段策略,基本上推荐10秒一个分片,当时,具体时间还要根据分好的分片的实际时长做标注。通常为了缓存等方面的原因,在索引文件中会保留最新的三个分片地址。以类似于“滑动”的形式进行更新
m3u8文件:m3u8是HLS直播的索引文件,基本上可以认为是.m3u格式文件,区别在于m3u8文件使用UTF-8字符编码
0 0
- HTTP LIVE Streams
- URLs for publishing and playing live streams over HTTP (FMS)
- STREAMS
- Streams
- Streams
- Streams
- BOSH (Bidirectional-streams Over Synchronous HTTP)
- Apple http live stream
- HLS HTTP Live Streaming
- Apple: HTTP Live Streaming
- HTTP Live Streaming 分析
- Stream live media (HTTP)
- http live stream相关
- HTTP Live Streaming
- HLS (HTTP Live Streaming)
- HTTP Live Streaming直播
- HTTP Live Streaming (HLS)
- HTTP Live Streaming (HLS)
- Android ListView的getView()会出现多次position=0的情况
- select、poll、epoll的原理、优点、缺点比较总结
- 数据结构实验之栈四:括号匹配
- Android 动画系列之属性(Property)动画详解
- js 实现树 递归
- HTTP LIVE Streams
- [require.js插件] text.js异步加载文本资源
- Android加载动画系列——PlayBallLoadingAnim
- POJ_2082_Terrible Sets
- UVA12013
- psql常用命令
- 错误码及其文字描述
- 第一个理解的python程序--ZIP文件的字典破解
- 如何从List,ArrayList集合中删除对象,或者其他数据