文档章节

IOS 设备m3u8流媒体协议标签解析

孟飞阳
 孟飞阳
发布于 2016/07/17 22:39
字数 1377
阅读 64
收藏 1
点赞 0
评论 0

1、抓取接口内容

通过配置代理抓包工具与itouch连接后,在代理服务端即可抓取itouch访问优酷服务器过程的包。配置教程:

http://jingyan.baidu.com/article/5bbb5a1b4cb92513eaa1797a.html

抓取成功后,如图:

以下优酷服务端响应itouch播放请求的内容:

#EXTM3U
#EXT-X-TARGETDURATION:12
#EXT-X-VERSION:2
#EXTINF:6,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=0&ts_end=5.9&ts_seg_no=0&ts_keyframe=1
#EXTINF:6,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=5.9&ts_end=11.9&ts_seg_no=1&ts_keyframe=1
#EXTINF:6,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=11.9&ts_end=17.9&ts_seg_no=2&ts_keyframe=1
#EXTINF:12,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=17.9&ts_end=29.9&ts_seg_no=4&ts_keyframe=1
#EXTINF:12,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=29.9&ts_end=41.9&ts_seg_no=5&ts_keyframe=1
#EXTINF:12,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=41.9&ts_end=53.9&ts_seg_no=6&ts_keyframe=1
#EXTINF:12,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=53.9&ts_end=65.9&ts_seg_no=7&ts_keyframe=1
#EXTINF:12,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=65.9&ts_end=77.9&ts_seg_no=8&ts_keyframe=1
#EXTINF:12,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=77.9&ts_end=89.9&ts_seg_no=9&ts_keyframe=1
#EXTINF:12,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=89.9&ts_end=101.9&ts_seg_no=10&ts_keyframe=1
#EXTINF:12,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=101.9&ts_end=113.9&ts_seg_no=11&ts_keyframe=1
#EXTINF:12,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=113.9&ts_end=125.9&ts_seg_no=12&ts_keyframe=1
#EXTINF:4,
http://58.211.22.209/67742D3E9A34883C3013EF4071/03000201005355AEB045B30230E416DE8E7AE4-029D-1B46-B233-8E29C448A69F.flv?ts_start=125.9&ts_end=129.833&ts_seg_no=13&ts_keyframe=1
#EXT-X-ENDLIST

2、解析特殊标签

内容中有一些特殊标签,如#EXTM3U,现在我们来解析这些标签:

编号

标签值

标签意义

备注

1、

#EXTM3U

标识播放列表文件扩展名的格式,如

.M3U8

该标签必须包含在播放列表中。且只能出现1次

2、

#EXT-X-TARGETDURATION

指定媒体段文件最大持续的时间

该标签在播放列表文件中只能出现1次。#EXTINF会标识每个段的具体持续时间,该时间只能小于等于#EXT-X-TARGETDURATION

3、

#EXTINF

指定每个媒体段文件的持续时间。

该标签后必须紧跟段文件的URI地址。

4、

#EXT-X-VERSION

指定播放列表兼容性版本。相关的媒体文件和服务器都必须全部支持该标签指定的版本。

该标签必须包含在播放列表中,且该值在PlayList中只能出现1次

5、

#EXT-X-DISCONTINUITY

该标签指示在当前段文件的段前或段后的连续性

该标签不能出现在主播放列表中

6、

#EXT-X-ENDLIST

该标签指示其后没有媒体文件段了。

该标签可以在播放列表的任意位置出现,但只能出现1次

7、

#EXT-X-BYTERANGE

该标签指示当前的媒体段文件是一个被媒体URI确定的源文件的子范围

该标签只能出现在当前段文件的下一个段文件中。

8、

#EXT-X-MEDIA-SEQUENCE

每个媒体段文件在播放列表中都有一个唯一的顺序值,该标签指示第一个出现的段文件的顺序号。

如果该值是个十进制的整数,则该值不能在减少。一个播放列表文件一个以上的该标签。如果播放列表不包含此标签,则第一段出现的段文件的序号就是0,该标签不能出现在主播放列表中

9、

#EXT-X-KEY

媒体段文件可能会被加密,该标签指示如何解密他们。

该标签应用在当前段文件和下一个段文件之间,多个该标签必须提供同样的解密字符。

10、

#EXT-X-PROGRAM-DATE-TIME

该标签指定与第一个段文件的实例连接的绝对日期和时间。

该标签只能应用在当前段文件的下一个段文件中

11、

#EXT-X-ALLOW-CACHE

该标签值指示客户端是否缓存下一个请求的段文件。

该标签可以在播放列表的任意位置出现,但只能出现1次。

12、

#EXT-X-PLAYLIST-TYPE

该标签值将为播放列表提供多个提示信息。它应用与整个播放列表中。

该标签不能出现在主播放列表

13、

#EXT-X-MEDIA

该标签用于替换播放列表相关的相同的内容。

该标签只能出现在版本4以上的协议中,且不能出现在播放列表中

14、

#Rendition Groups

展示一套具有相同GROUP-ID值得EXT-X-MEDIA,

组内的每个成员必须代表可替代的一段相同内容

15、

#EXT-X-STREAM-INF

该标签指定一个流,这个流可以绑定在播放介绍中。

如绑定编码,带宽值等。

16、

#EXT-X-I-FRAMES-ONLY

该标签指定每个媒体段文件中的关键帧,关键帧被编码为不依赖其他帧。

不能出现在主播放文件

17、

#EXT-X-MAP

该标签指示了如何从每个段文件的包头中获得信息。它应用在每个紧接着的段文件中。

 

18、

#EXT-X-I-FRAME-STREAM-INF

该标签指示一个媒体播放列表文件所包含的的关键帧的帧内容介绍。它是独立的,不应用在主播放列表的特定URI中。

该标签不能出现在媒体播放列表中。

19、

#EXT-X-INDEPENDENT-SEGMENTS

该标签指示所有的媒体段文件都能被解码,它应用在播放列表中的每个段文件中。

协议版本6以上才能支持。

20、

#EXT-X-START

该标签指示播放列表中能被优先播放的点。默认为客户端在刚开始播放时,必须处在这个点。

此关键字在播放列表中只能出现1次。

© 著作权归作者所有

共有 人打赏支持
孟飞阳
粉丝 202
博文 923
码字总数 537538
作品 5
朝阳
个人站长
iOS直播类APP开发流程解析(内附源码详解)

前言 个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一...

_小迷糊
05/09
0
0
克服 iOS HTML5 音频的局限

简介 过去几年,开发人员一直都在制造完善的交互体验,努力使其可以在浏览器中正确运行。这样的站点通常需要使用浏览器插件 (Flash)。随着智能手机和平板电脑的推出,交互体验看似与新的小部...

tommyfok
2014/02/22
0
0
获取iOS设备上崩溃日志(Crash Log)的方法

获取iOS设备上崩溃日志(Crash Log)的方法:http://www.weste.net/2013/5-20/91509.html iOS怎么分析AppStore上面的Crash Log:http://m.blog.csdn.net/blog/tianjf0514/45201549 iOS Cra......

智能小松鼠
2015/08/25
0
0
再看知名应用背后的第三方开源项目

知名应用程序的设计和技术一直都是开发者需要学习的,同样这些应用所使用的开源框架也是不可忽视的一部分。此前《iOS第三方开源库的吐槽和备忘》中作者ibireme列举了国内多款知名应用所使用的...

hejunbinlan
2015/08/18
0
0
C++文件读写详解(ofstream,ifstream,fstream)

在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: [java] view pl...

涩女郎
2015/08/19
0
0
iOS 开发中音频队列播放音频

2012-07-17 19:59:24| 分类: ios|字号 订阅 第一部分 用 到了AudioToolbox这个音频接口,总结下,希望对需要的朋友有帮助。AudioToolbox这个库是C的接口,偏向于底层,用于在线流媒体音 乐的...

andyhe91
2013/06/15
0
1
微信公众平台开发:进阶篇(Web App开发入门)

WebApp与Native App有何区别呢? Native App: 1、开发成本非常大。一般使用的开发语言为JAVA、C++、Objective-C。 2、更新体验较差、同时也比较麻烦。每一次发布新的版本,都需要做版本打包...

LorinLuo
2015/03/06
0
0
iphone6&iphone6 plus

下面开始讨论iPhone6/iPhone6 Plus的设备屏宽,这里说的设备屏幕宽度专指设备物理显示尺寸(device-width),我们知道苹果从iPhone4开始引进了Retina屏幕,一个CSS像素可以表示多个物理像素(...

果树啊
2015/06/03
0
0
基于nodejs的http实时视频流尝试记录

公司的流媒体系统出来的码流都是传统的rtp承载、rtsp控制的标准流媒体,在3GPP环境下是没问题,可是PC上和易信、微信上就没法看了,负责推广的大姐建议改成不要控件在电脑上能播的方式,遂进...

jianyu_21
2014/06/13
0
1
iOS Sprite Kit教程之编写程序以及Xcode的介绍

iOS Sprite Kit教程之编写程序以及Xcode的介绍 Xcode界面介绍 一个Xcode项目由很多的文件组成,例如代码文件、资源文件等。Xcode会帮助开发者对这些文件进行管理。所以,Xcode的界面也比较复...

大学霸
2015/07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

并发设计之A系统调用B系统

A-->B A在发送请求之前,用乐观锁,减少对B的重复调用,这样一定程度上是幂等性。 比如A系统支付功能,要调用B系统进行支付操作,但是前端对"支付"按钮不进行控制,即用户会不断多次点击支付...

汉斯-冯-拉特
16分钟前
0
0
HTTP协议通信原理

了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。 HTTP使用...

寰宇01
38分钟前
0
0
【Java动态性】之反射机制

一、Java反射机制简介

谢余峰
39分钟前
1
0
Centos 6.X 部署环境搭建

1.Linux学习笔记CentOS 6.5(一)--CentOS 6.5安装过程

IT追寻者
52分钟前
0
0
博客即同步至腾讯云+社区声明

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=8vy9bsmadbko...

xiaoge2016
55分钟前
0
0
大数据教程(3.1):Linux系统搭建网络YUM源服务器

博主在前面的2.5章节讲述了linux系统本地YUM服务器的搭建和httpd轻量级静态网站服务器的安装,本节博主将为大家分享内网环境中搭建自己的网络YUM服务器的全过程。如果大家对本地YUM服务器还不...

em_aaron
58分钟前
0
0
蚂蚁技术专家:一篇文章带你学习分布式事务

小蚂蚁说: 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务...

Java大蜗牛
今天
0
0
新的Steam应用将拓展服务项目

导读 未来几周,Steam将推出两个免费的应用程序Steam Link和Steam Video。这两个应用程序都旨在拓展Steam平台的业务和便利性。 即将开放的Steam Link应用程序最先提供了Android测试版,它将允...

问题终结者
今天
0
0
golang 第三方包的使用总结

golang 第三方包的安装的方法: 1. go get 安装 $ go get github.com/gin-gonic/gin 注意:执行go get 命令需要先安装git命令,并配置git全局变量。 2. 源码包安装 由于国内网络问题,很多时...

科陆李明
今天
1
0
Android Studio调试运行时ADB not responding

最近有我朋友问我一个android studio的调试运行问题,我记得以前也是遇到过得,所以 来写一下 ADB not responding.If you'd like to retry, then please manually kill "adb.exe" and click...

切切歆语
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部