M3U8格式讲解及实际应用分析
来源:互联网 发布:免费下载管车宝软件 编辑:程序博客网 时间:2024/06/06 03:56
M3U8有啥好处 ?
网上搜索了一下,大家众说纷纭,个人理解主要是可以做多码率的适配,根据网络带宽,客户端会选择一个适合自己码率的文件进行播放,保证视频流的流畅。
在IOS device和mac上可以用http的方式进行分发,其中playlist标准为由m3u扩展而来的m3u8文件,媒体文件为MPEG2-TS或者AAC文件(audio only)。
m3u8文件有两种应用场景:
多码率适配流,
单码率适配流#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
国际标准组织对此的定义 rfc doc:#EXTM3U
#EXT-X-TARGETDURATION:5220
#EXTINF:5220,
http://media.example.com/entire.ts
#EXT-X-ENDLIST
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
m3u8 文件是m3u文件的扩展。在该rfc中定义了扩展的关键字:
其中:
#EXT-X-TARGETDURATION
定义每个TS的最大的duration。
#EXT-X-MEDIA-SEQUENCE
定义当前m3u8文件中第一个文件的序列号,每个ts文件在m3u8文件中都有固定唯一的序列号,该序列号用于在MBR时切换码率进行对齐。
#EXT-X-KEY
定义加密方式和key文件的url,用于取得16bytes的key文件解码ts文件。
属性:
METHOD
URL
#EXT-X-PROGRAM-DATE-TIME
第一个文件的绝对时间
#EXT-X-ALLOW-CACHE
是否允许cache。
#EXT-X-ENDLIST
表明m3u8文件的结束。live m3u8没有该tag。
#EXT-X-STREAM-INF
属性:
BANDWIDTH 指定码率
PROGRAM-ID 唯一ID
CODECS 指定流的编码类型
#EXT-X-DISCONTINUITY
当遇到该tag的时候说明以下属性发生了变化:
file format
number and type of tracks
encoding parameters
encoding sequence
timestamp sequence
#EXT-X-VERSION 该属性用不用都可以,可以没有
M3U8分顶级M3U8和二级M3U8, 顶级M3U8主要是做多码率适配的, 二级M3U8才是真正的切片文件,
客户端默认会首先选择码率最高的请求,如果发现码率达不到,会请求郊低码率的流
一个实际使用中的顶级M3U8文件如下 :
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=201273221265,BANDWIDTH=358400
11.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=201273221265,BANDWIDTH=972800
22.m3u8
上面顶级M3U8文件中又定义了 11.m3u8 和 22.m3u8 两个二级文件,客户端会选择其中一个获取其内容。
二级M3U8文件内容如下:
#EXTM3U
#EXT-X-VERSION:1
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:3,
1-4.ts
#EXTINF:8,
1-6.ts
#EXTINF:8,
1-8.ts
#EXTINF:8,
1-10.ts
#EXTINF:8,
1-12.ts
#EXTINF:8,
1-14.ts
#EXTINF:8,
1-16.ts
#EXTINF:9,
1-18.ts
#EXTINF:6,
1-20.ts
#EXTINF:8,
1-22.ts
#EXTINF:9,
1-24.ts
#EXTINF:3,
1-26.ts
#EXT-X-ENDLIST
客户端拿到上面的二级M3U8文件后,会继续请求里面的文件,这时就可进行播放了。
上面讲解的是点播的情况,直播的情况,M3U8文件里面会有属性告诉是直播,客户端会定时来请求新的M3U8文件。
http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/
- M3U8格式讲解及实际应用分析
- M3U8格式讲解及实际应用分析
- M3U8格式讲解及实际应用分析
- M3U8格式讲解及实际应用分析
- M3U8格式讲解及实际应用分析
- M3U8格式讲解及实际应用分析
- 【HLS】M3U8格式讲解及实际应用分析
- M3U8格式讲解及实际应用
- DWR ajax 实际应用讲解
- 07_Zookeeper_实际应用讲解
- Android:图解四种启动模式 及 实际应用场景讲解
- Java注解的实际应用案例讲解
- Dubbo实际应用基本配置讲解
- m3u8格式解析
- M3U8格式视频下载
- M3U8格式视频下载
- M3U8格式视频下载
- 的用途及实际应用
- c#对PL/SQL查询结果列复制的结果生成指定格式
- 基于Java阻塞队列实例(文件及文件内容搜索)
- C#2.0中,SerialPort如何读取串口数据并显示在TextBox上
- http://blog.csdn.net/joshua_yu/article/details/631915
- svn: Aborting commit: '文件名' remains in conflict svn提交冲突
- M3U8格式讲解及实际应用分析
- 获取Android短信草稿箱号码为空的解决办法
- TEST
- cocos2d-x之新浪微博平台接入接口
- 堆和栈的区别
- 简单工程模式
- SQL 2008数据库导入到SQL 2005中的操作
- XML--DTD
- Javascript获取某个月的天数-简单方法