流媒体技术学习笔记之(十八)互联网草案HTTP直播流2017年5月

简介: 原文地址:https://tools.ietf.org/html/draft-pantos-http-live-streaming-231、HTTP直播流介绍  HTTP实时流媒体提供了一个可靠的,成本效益的手段通过互联网提供连续和长时间的视频。

 原文地址:https://tools.ietf.org/html/draft-pantos-http-live-streaming-23

1、HTTP直播流介绍

  HTTP实时流媒体提供了一个可靠的,成本效益的手段通过互联网提供连续和长时间的视频。它允许接收器使媒体的比特率适应当前网络条件,以保持不间断播放最好的质量。它支持插页式内容边界。它为媒体加密提供了一个灵活的框架。它可以有效地提供相同内容的多个呈现,例如:音频翻译。它提供了与大规模HTTP的兼容性缓存基础设施以支持向大量受众传递。

自2009年首次发布草案以来,HTTP Live Streaming已经有了已经被广泛的内容制作者实施和部署,工具供应商,分销商和设备制造商。在里面随后的八年,协议已被广泛的提炼与各种媒体流媒体实现者进行回顾和讨论。

本文档的目的是为了促进互操作性在HTTP实时流媒体实现之间通过描述媒体传输协议。使用这个协议,客户端可以收到一个来自服务器的连续媒体流以便并行呈现。

本文档介绍协议的第7版。

2、概念

多媒体演示由统一资源指定标识符(URI)[ RFC3986 ]播放列表。

播放列表是媒体播放列表或主播放列表。两者都是包含URI和描述性标签的UTF-8文本文件。

媒体播放列表包含媒体片段的列表,当播放时依次播放多媒体演示。

这里是一个媒体播放列表的例子:

   #EXTM3U
   #EXT-X-TARGETDURATION:10

   #EXTINF:9.009,
   http://media.example.com/first.ts
   #EXTINF:9.009,
   http://media.example.com/second.ts
   #EXTINF:3.003,
   http://media.example.com/third.ts

第一行是格式标识符标签#EXTM3U。该线包含#EXT-X-TARGETDURATION表示所有媒体片段将会是10秒或更少。然后宣布三个媒体分段。第一和第二是9.009秒长, 三是3.003秒。

要播放此播放列表,客户端首先下载它然后下载并播放在其中声明的每个媒体分段。该客户端将按照本文档中的描述重新加载播放列表以发现任何额外的细分。数据应该通过HTTP [ RFC7230 ] 传送,但是通常一个URI可以指定任何可以可靠传输的协议指定的资源按需。

主播放列表可以描述更复杂的演示。一个主播放列表提供了一组变体流,其中每一个描述了相同内容的不同版本。

变体流包括指定媒体的媒体播放列表以特定的比特率编码,以特定的格式编码,并以包含视频的媒体的特定分辨率。

一个Variant流也可以指定一组Renditions。译丛是内容的替代版本,例如制作的音频不同的语言或不同的摄像机角度录制的视频。

客户应该在不同的变体流之间切换以适应网络状况。客户应根据用户选择Renditions优先。

关键词“必须”,“不得”,“需要”,“应该”,“不应该”,“应该”,“不应该”,“推荐”,“可能”和“可选”文档将按照RFC 2119 [ RFC2119 ]中的描述进行解释。

3、媒体细分

媒体播放列表包含一系列组成的媒体片段整体介绍。媒体段由URI和可选地一个字节范围。

媒体播放列表中显示了每个媒体段的持续时间通过其EXTINF标签(第4.3.2.1节)。

媒体播放列表中的每个片段都有唯一的整数媒体序列数。媒体中第一个片段的媒体序列号播放列表为0,或在播放列表中声明(第4.3.3.2节)。每隔一段的媒体序列号等于媒体序列号之前的段加1。

每个媒体段必须带有编码的延续从以前的媒体段的末尾的比特流序列号,一系列的值,如时间戳和连续性计数器必须不中断。唯一的例外是媒体播放列表中第一个出现在媒体播放列表中的媒体细分媒体分段明确表示为不连续(第4.3.2.3节)。未标记的介质不连续可以触发播放错误。

包含视频的任何媒体片段都应该包含足够的内容信息来初始化视频解码器并解码连续集合包含段中最后一帧的帧; 网络如果细分中有足够的信息,效率会得到优化解码段中的所有帧。例如,任何媒体细分包含H.264视频应该包含一个IDR; 之前的帧第一个IDR将被下载,但可能被丢弃。

4、支持的媒体段格式

所有媒体片段必须采用本节所述的格式。其他媒体文件格式的传输未定义。

一些媒体格式需要一个相同的字节序列来初始化a可以解析Media Segment之前的解析器。这种格式特定的序列被称为媒体初始化部分。媒体初始化部分可以由EXT-X-MAP指定(第4.3.2.5节)标签。媒体初始化部分不可以包含样本数据。

 

简单的媒体播放列表

   #EXTM3U
   #EXT-X-TARGETDURATION:10
   #EXT-X-VERSION:3
   #EXTINF:9.009,
   http://media.example.com/first.ts
   #EXTINF:9.009,
   http://media.example.com/second.ts
   #EXTINF:3.003,
   http://media.example.com/third.ts
   #EXT-X-ENDLIST

Live Media播放列表,使用HTTPS

   #EXTM3U
   #EXT-X-VERSION:3
   #EXT-X-TARGETDURATION:8
   #EXT-X-MEDIA-SEQUENCE:2680

   #EXTINF:7.975,
   https://priv.example.com/fileSequence2680.ts
   #EXTINF:7.941,
   https://priv.example.com/fileSequence2681.ts
   #EXTINF:7.975,
   https://priv.example.com/fileSequence2682.ts

说明:绝对

带有加密媒体段的播放列表

   #EXTM3U
   #EXT-X-VERSION:3
   #EXT-X-MEDIA-SEQUENCE:7794
   #EXT-X-TARGETDURATION:15

   #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52"

   #EXTINF:2.833,
   http://media.example.com/fileSequence52-A.ts
   #EXTINF:15.0,
   http://media.example.com/fileSequence52-B.ts
   #EXTINF:13.333,
   http://media.example.com/fileSequence52-C.ts

   #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53"

   #EXTINF:15.0,
   http://media.example.com/fileSequence53-A.ts

主播放列表

   #EXTM3U
   #EXT-X-STREAM-INF:BANDWIDTH=1280000,AVERAGE-BANDWIDTH=1000000
   http://example.com/low.m3u8
   #EXT-X-STREAM-INF:BANDWIDTH=2560000,AVERAGE-BANDWIDTH=2000000
   http://example.com/mid.m3u8
   #EXT-X-STREAM-INF:BANDWIDTH=7680000,AVERAGE-BANDWIDTH=6000000
   http://example.com/hi.m3u8
   #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5"
   http://example.com/audio-only.m3u8

主播放列表I帧

   #EXTM3U
   #EXT-X-STREAM-INF:BANDWIDTH=1280000
   low/audio-video.m3u8
   #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=86000,URI="low/iframe.m3u8"
   #EXT-X-STREAM-INF:BANDWIDTH=2560000
   mid/audio-video.m3u8
   #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=150000,URI="mid/iframe.m3u8"
   #EXT-X-STREAM-INF:BANDWIDTH=7680000
   hi/audio-video.m3u8
   #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=550000,URI="hi/iframe.m3u8"
   #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5"
   audio-only.m3u8

主播放列表与替代音频

   #EXTM3U
   #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="English", \
      DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en", \
      URI="main/english-audio.m3u8"
   #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Deutsch", \
      DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="de", \
      URI="main/german-audio.m3u8"
   #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Commentary", \
      DEFAULT=NO,AUTOSELECT=NO,LANGUAGE="en", \
      URI="commentary/audio-only.m3u8"
   #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="...",AUDIO="aac"
   low/video-only.m3u8
   #EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="...",AUDIO="aac"
   mid/video-only.m3u8
   #EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="...",AUDIO="aac"
   hi/video-only.m3u8
   #EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5",AUDIO="aac"
   main/english-audio.m3u8

主播放列表与替代视频

   #EXTM3U
   #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Main", \
      DEFAULT=YES,URI="low/main/audio-video.m3u8"
   #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Centerfield", \
      DEFAULT=NO,URI="low/centerfield/audio-video.m3u8"
   #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Dugout", \
      DEFAULT=NO,URI="low/dugout/audio-video.m3u8"

   #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="...",VIDEO="low"
   low/main/audio-video.m3u8

   #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Main", \
      DEFAULT=YES,URI="mid/main/audio-video.m3u8"
   #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Centerfield", \
      DEFAULT=NO,URI="mid/centerfield/audio-video.m3u8"
   #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Dugout", \
      DEFAULT=NO,URI="mid/dugout/audio-video.m3u8"

   #EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="...",VIDEO="mid"
   mid/main/audio-video.m3u8

   #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Main", \
      DEFAULT=YES,URI="hi/main/audio-video.m3u8"
   #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Centerfield", \
      DEFAULT=NO,URI="hi/centerfield/audio-video.m3u8"
   #EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Dugout", \
      DEFAULT=NO,URI="hi/dugout/audio-video.m3u8"

   #EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="...",VIDEO="hi"
   hi/main/audio-video.m3u8

 

目录
相关文章
|
3月前
|
网络协议 Linux iOS开发
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
194 1
|
3月前
|
测试技术 网络架构
【技术干货连载 一】业务经过WAF HTTP 400问题排查
教你如何排查和解决业务经过WAF 七层代理HTTP 400问题原因?
141 1
|
2月前
|
安全 网络协议 网络安全
HTTPS:保护你的网站免受中间人攻击的关键技术
【6月更文挑战第13天】HTTPS是抵御中间人攻击的关键技术,通过数据加密、身份验证和完整性保护保障网络安全。它基于SSL/TLS协议加密通信,防止数据被窃取或篡改,并使用数字证书确认服务器身份,避免伪造。要确保HTTPS安全,需使用有效数字证书,启用强制HTTPS,定期更新维护并限制访问范围。
|
4天前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
16 0
|
1月前
|
机器学习/深度学习 人工智能 文字识别
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://www.paddlepaddle.org
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://www.paddlepaddle.org
|
2月前
|
编解码 自然语言处理 算法
技术心得:前端学HTTP之字符集
技术心得:前端学HTTP之字符集
21 0
|
2月前
|
缓存 开发框架 网络协议
必知的技术知识:HTTP协议和SOCKS5协议
必知的技术知识:HTTP协议和SOCKS5协议
|
2月前
|
监控 小程序 前端开发
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
|
3月前
|
XML Java 数据库
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
58 4
|
3月前
|
Go
深度探讨 Golang 中并发发送 HTTP 请求的最佳技术
深度探讨 Golang 中并发发送 HTTP 请求的最佳技术

热门文章

最新文章