常见的流媒体传输协议-如rtsp,hls等协议
参考:
流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls) https://blog.csdn.net/u013008311/article/details/80405241
五种常见流媒体协议 https://www.jianshu.com/p/d71ceef679de
HTTP Live Streaming 详解 https://github.com/pro648/tips/wiki/HTTP-Live-Streaming-详解
这一部分介绍 HLS 主要组件如何协同工作以传递流媒体。从概念上讲,HTTP Live Streaming 包含三部分:服务器组件、分发组件和客户端软件。
在常见配置中,硬件编码器接受输入的音视频,将其编码为 HEVC 视频、AC-3 音频,输出片段化(fragmented)MPEG-4 文件或 MPEG-2 传输流,分段器(segmenter)软件将 stream 分割成系列短媒体文件,然后将短媒体文件放在 web 服务器上。segmenter 还会创建并维护一个包含媒体文件列表的索引文件(index file)。索引文件的 URL 在 web 服务器上发布,客户端读取索引文件,按顺序读取列出的媒体文件并播放,各片段间没有任何暂停或间隔。
2.1 服务器组件
服务器组件负责获取媒体输入流并对其进行数字编码,将其封装成适合传输的格式,并为分发做准备。
对于直播,服务器需要媒体编码器(可以是现有的硬件),以及一种将编码的媒体分割成片段并保存为文件的方法,该方法可以是由 Apple 提供的 media stream segmented,也可以是第三方解决方案。
2.2 分发组件
分发系统是 web 服务器或 web 缓存系统,通过 HTTP 将媒体文件和索引文件传输到客户端。HTTP Live Streaming 协议不需要对服务器模块进行任何自定义即可用于传输内容,且 web 服务器只需要很少的配置。要实际使用 HTTP Live Streaming,需要将 HTML 页面或 app 作为接收器,还需要使用 web 服务器,以及将实时流编码为 HEVC 或 H.264视频、 ACC 或 AC-3 音频的分段 MPEG-4 媒体文件。
2.3 客户端软件
客户端软件负责确定所请求媒体资源类型、下载所需资源、重新组合资源,最后将媒体连续的呈现给用户。目前,Windows 10、macOS 10.6+、iOS 3.0+、Android 4.1+ 等均原生支持 HLS,大部分浏览器也支持HLS。点击这里可以查看各浏览器起始支持 HLS 版本。
客户端软件使用标志流媒体位置的 URL 获取 index file,index file 指定可用媒体文件位置、解密密钥和可选流。选定流后,客户端按顺序下载可用媒体文件,每个文件包含一段连续的 stream。当拥有足够数据后,客户端播放重组的 stream。
客户端负责获取解密密钥、身份认证,根据需要解密媒体文件。
这些过程会一直持续,直到在 index file 遇到 EXT-X-ENDLIST tag。如果没有 EXT-X-ENDLIST tag,则 index file 是直播的一部分。在直播期间,客户端会定期拉去 index file 的新版本,并在新版本的 index file 中查找新的媒体文件和加密密钥,并将这些 URL 添加到队列。