泰捷官方论坛

找回密码
立即注册

QQ登录

只需一步,快速开始

搜索
发新帖

1478

经验

3813

积分

539

帖子

老鸟级捷友

发表于 2013-5-20 15:44:43 | 查看: 36133| 回复: 114

本帖最后由 user03151 于 2013-5-20 10:10 编辑


M3U8格式讲解及实际应用分析

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

单码率适配流
#EXTM3U

#EXT-X-TARGETDURATION:5220

#EXTINF:5220,

http://media.example.com/entire.ts

#EXT-X-ENDLIST




国际标准组织对此的定义 rfc doc:
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文件。

1万

经验

2万

积分

9524

帖子

泰捷新知团

一帆(酱油帝)

发表于 2013-5-20 16:16:20
太专业了,完全看不懂;P;P;P;P
mellon 发表于 2013-5-20 16:20 详情  回复
这个对分析源很有用

1478

经验

3813

积分

539

帖子

老鸟级捷友

发表于 2013-5-20 16:20:10
qz0212110 发表于 2013-5-20 16:16
太专业了,完全看不懂

这个对分析源很有用

1万

经验

2万

积分

9524

帖子

泰捷新知团

一帆(酱油帝)

发表于 2013-5-20 16:27:41
mellon 发表于 2013-5-20 16:20
这个对分析源很有用

:o ,那要收藏了一下

27

经验

30

积分

26

帖子

中级捷友

发表于 2013-5-20 20:03:41
看不懂啊 ?

132

经验

141

积分

72

帖子

中级捷友

发表于 2013-5-21 11:08:45
学习了,谢谢!
发表于 2013-5-21 12:19:05
:( 没看懂
mellon 发表于 2013-5-21 12:43 详情  回复
技术大神啊也不明白?

1478

经验

3813

积分

539

帖子

老鸟级捷友

发表于 2013-5-21 12:43:16
Jevon 发表于 2013-5-21 12:19
没看懂

技术大神啊也不明白?

196

经验

259

积分

68

帖子

高级捷友

发表于 2013-5-21 13:38:03
好吧。。我看不懂。。

2642

经验

2729

积分

291

帖子

老鸟级捷友

发表于 2013-5-21 14:15:25
技术贴学习了
点击按钮快速添加回复内容: 支持 给力 感叹 惊呆 淡定 路过 感谢
您需要登录后才可以回帖 登录 | 立即注册

新浪微博|联系我们|泰捷官方论坛 ( 粤ICP备13060068号-1  

GMT+8, 2019-6-20 10:06 , Processed in 0.043495 second(s), 16 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表