点播和直播原理

一、流媒体协议

直播和点播的原理都是基于流媒体协议来实现的,常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这两种协议是完全不同的实现方式。主要区别如下:

  1. 一种是分段渐近下载,一种是基于实时流来实现播放
  2. 协议不同,HTTP 协议的渐近下载意味着你可以在一台普通的 HTTP 的应用服务器上就可以直接提供点播和直播服务
  3. 延迟有差异,HTTP 渐近下载的方式的延迟理论上会略高于实时流媒体协议的播放
  4. 渐近下载会生成索引文件,所以需要考虑存储,对 I/O 要求较高

二、HLS(分段渐进下载方式)

1、简介

HLS (HTTP Live Streaming)是苹果公司实现的基于 HTTP 的流媒体协议,可以实现流媒体的点播和直播播放。当然,起初是只支持苹果的设备,目前大多数的移动设备也都实现了该功能。HTML5 直接支持该协议。

2、原理

HLS 点播是常见的分段 HTTP 点播,就是将视频流分成不同的片段,客户端不断的去下载该片段,由于片段之间的分段间隔时间非常短,所以看起来是一条完整的播放流,实现的重点是对于媒体文件的分割。同时,HLS 还支持多码率的切换,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。多清晰度就是这样实现的。
为了播放媒体流,客户端首先需要获得播放列表文件,也就是根据 HLS 生成的片段列表,该列表中包含每个流媒体的文件,客户端以类似轮询的方式不断重复加载播放列表文件并将片段追加实现流媒体的播放。
播放列表文件就是通常我们所说的 m3u8 文件,是以后缀 .m3u8 Content-Type是”application/vnd.apple.mpegurl” 的文件。

3、m3u8 介绍与分析

m3u8 文件本质说其实是采用了编码是 UTF-8 的 m3u 文件。
它只是一个纯索引文件,一个文件片段的列表,客户单打开它并不是播放它,而是根据它里面的文件片段找到视频文件的网路地址进行播放

三、HLS 直播

HLS 直播原理上还是按点播的方式实现的,通过 http 协议传输,生成 ts 索引文件以及 m3u8 索引文件。直播的复杂在于先要采集视频源和音频源的数据,然后再进行 H264 编码和音频 ACC 编码,并封装成 ts 包,其中还要考虑 ts 的分段生成策略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章