HLS科普5 播放列表
2016-01-25 22:30
274 查看
1.播放列表必须是扩展的M3U文件,该文档通过定义新的标签扩展了m3u文件的格式。M3U播放列表是一个文本文件,它包含了各自独立的行。
2.HLS的播放列表文本文件必须是UTF-8编码格式。
3.M3U播放列表是一个文本文件,它包含了各自独立的行,行以一个LF字符或者LF字符紧跟一个CR字符来结束。行可以是一个URI,空行,或者以字符#开头。空行将会被忽略。空格只能作为一行中不同元素间的分隔。
4.以注释字符#开头的行可能是注释或者标签,标签以#EXT开头,其他所有行都应该被忽略。播放列表文件的持续时间是他所指向的媒体文件的时长的总和。
5.每个媒体片段的码率的计算方式:当前媒体片段的size/当前的播放时长 单位一般为bps(一秒钟播放多少bits)该计算方法可能含有容器头(如TS包头信息等),但是不含有传输系统提供的头信息(如:HTTP, TCP 或 IP头信息)。
6.峰值码率计算:选取连续一组媒体片段的集合的最大码率(所有片段的size和/所有片段播放时长和,其中需要保证所有片段播放时长和在目标duration的0.5倍到1.5倍之间)。
7. 平均码率计算:所有媒体片段的size和/所有媒体偏度的播放时长和
8. 列表属性
在一些特性标签中,会有一些列表属性值。列表属性名称和列表属性值会成对出现。如PROGRAM-ID=1,BANDWIDTH=1280000。并且注意:属性名称与属性值中间不能出现空格,属性之间用逗号隔开
表示方式:属性名称1=属性值1,属性名称2=属性值2 中间用一个等号连接
属性名称只能用"A~Z","0~9"以及"_"表示,也就是说属性名称不能出现小写字母,并且属性名称与属性值都不允许出现空格
播放列表中某一属性只允许最多出现一次,多次的,客户端可以选择拒绝播放
属性值解析:
1) 十进制整数:范围是0到2^(64-1) (18446744073709551615) 也就是说最多占用20个字符空间
2) 十六进制数字序列:表示方式0xAF098A 或者 0XAF098A 它的最大长度取决于属性名称
3) 浮点数:必须是非负的浮点数,如 9.876
4) 带符号位的浮点数: 如 9.876 ,负数:-9.876
5) quoted-string : 字符串 方式 :属性名称=“xxxxx” 注意:含有引号 其中的字符不能含有"0x22" (引号)、"0x0A" (换行符)、"0x0D" (回车符)
QuotedString和UnquotedString 区别:
有引号字符串(QuotedString)和无引号字符串(UnquotedString)
区别:
它们的主要区别还是体现在最终的显示上,我们平时定义一个字符串,比如说String pig = "Where is pig"; 那么pig就是一个无引号字符串(UnquotedString),别看它定义的时候用引号引着,它就是无引号字符串,因为刚才说了,有引号还是无引号是相对于最终显示来定的。
显然,pig最终的显示是这样的(没有带引号):
Where is pig
那么如果要让pig变成有引号字符串(QuotedString)该怎么搞呢?
下面的方式肯定是不行的,编译器直接报错:
"Where is pig"
6)枚举类型字符串:方式 :属性名称=xxxxx 注意:xxx不含有引号,逗号,以及空格
7)宽高分辨率: 方式:属性名称= wxh ,分别表示宽度和高度,中间用x连接,如 1920x1080 宽度为1920 高度为1080
样例:
2.HLS的播放列表文本文件必须是UTF-8编码格式。
3.M3U播放列表是一个文本文件,它包含了各自独立的行,行以一个LF字符或者LF字符紧跟一个CR字符来结束。行可以是一个URI,空行,或者以字符#开头。空行将会被忽略。空格只能作为一行中不同元素间的分隔。
4.以注释字符#开头的行可能是注释或者标签,标签以#EXT开头,其他所有行都应该被忽略。播放列表文件的持续时间是他所指向的媒体文件的时长的总和。
5.每个媒体片段的码率的计算方式:当前媒体片段的size/当前的播放时长 单位一般为bps(一秒钟播放多少bits)该计算方法可能含有容器头(如TS包头信息等),但是不含有传输系统提供的头信息(如:HTTP, TCP 或 IP头信息)。
6.峰值码率计算:选取连续一组媒体片段的集合的最大码率(所有片段的size和/所有片段播放时长和,其中需要保证所有片段播放时长和在目标duration的0.5倍到1.5倍之间)。
7. 平均码率计算:所有媒体片段的size和/所有媒体偏度的播放时长和
8. 列表属性
在一些特性标签中,会有一些列表属性值。列表属性名称和列表属性值会成对出现。如PROGRAM-ID=1,BANDWIDTH=1280000。并且注意:属性名称与属性值中间不能出现空格,属性之间用逗号隔开
表示方式:属性名称1=属性值1,属性名称2=属性值2 中间用一个等号连接
属性名称只能用"A~Z","0~9"以及"_"表示,也就是说属性名称不能出现小写字母,并且属性名称与属性值都不允许出现空格
播放列表中某一属性只允许最多出现一次,多次的,客户端可以选择拒绝播放
属性值解析:
1) 十进制整数:范围是0到2^(64-1) (18446744073709551615) 也就是说最多占用20个字符空间
2) 十六进制数字序列:表示方式0xAF098A 或者 0XAF098A 它的最大长度取决于属性名称
3) 浮点数:必须是非负的浮点数,如 9.876
4) 带符号位的浮点数: 如 9.876 ,负数:-9.876
5) quoted-string : 字符串 方式 :属性名称=“xxxxx” 注意:含有引号 其中的字符不能含有"0x22" (引号)、"0x0A" (换行符)、"0x0D" (回车符)
QuotedString和UnquotedString 区别:
有引号字符串(QuotedString)和无引号字符串(UnquotedString)
区别:
它们的主要区别还是体现在最终的显示上,我们平时定义一个字符串,比如说String pig = "Where is pig"; 那么pig就是一个无引号字符串(UnquotedString),别看它定义的时候用引号引着,它就是无引号字符串,因为刚才说了,有引号还是无引号是相对于最终显示来定的。
显然,pig最终的显示是这样的(没有带引号):
Where is pig
那么如果要让pig变成有引号字符串(QuotedString)该怎么搞呢?
下面的方式肯定是不行的,编译器直接报错:
String pig = ""Where is pig"";当然,是有好多方法来实现的,这里就不贴了,它最终的显示结果是这样的:
"Where is pig"
6)枚举类型字符串:方式 :属性名称=xxxxx 注意:xxx不含有引号,逗号,以及空格
7)宽高分辨率: 方式:属性名称= wxh ,分别表示宽度和高度,中间用x连接,如 1920x1080 宽度为1920 高度为1080
样例:
#EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000 http://example.com/low.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000 http://example.com/mid.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000 http://example.com/hi.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5" http://example.com/audio-only.m3u8
相关文章推荐
- 84. Largest Rectangle in Histogram
- Record linkage
- 如何设置滚动条样式
- Golang初级系列教程-接口多态性
- webpack 自动发现 entry 的配置和引用方式
- 从grub rescue> 问题解决,温习操作系统中文件系统的相关内容
- UVA 11624 Fire!
- CodeForces 614A Link/Cut Tree
- 91. String to Integer (atoi)
- NIO
- HDU 5613 Baby Ming and Binary image
- 【YouXue 1266.5】回文正整数
- ZJU1005-Jugs
- 二值化区分前景和背景
- Android的DiskLruCache硬盘缓存技术
- android 打电话权限问题报错 java.lang.SecurityException android studio 发短信
- uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案
- uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案
- c++中引用和指针的区别
- polymorphism 知识点的学习与分析