(HLS播放器之中的一个)HLS协议之M3U8解析
參照 http://tools.ietf.org/html/draft-pantos-http-live-streaming-08, 能够对M3U8有比較系统的认识。
HLS(HTTP Live Streaming)是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方式。在 HLS 技术中 Web server向client提供接近实时的音视频流。但在使用的过程中是使用的标准的 HTTP 协议,所以这时,仅仅要使用 HLS 的技术,就能在普通的 HTTP 的应用上直接提供点播和直播。在App Store中的视频相关的应用,基本都是应用的此种技术。该技术基本原理是将视频文件或视频流切分成小片(ts)并建立索引文件(m3u8)。支持的视频流编码为H.264,音频流编码为AAC。
好了,我開始说说我的吧。例如以下
#EXTM3U #EXT-X-TARGETDURATION:15
#EXTINF:7, http://data.video.qiyi.com/videos/movie/20111225/f9eb21f9247aafb04b39cc5bba13afa1.ts?start=0&end=658512&hsize=5343&tag=0&v=7620766549&contentlength=229360
#EXTINF:14, http://data.video.qiyi.com/videos/movie/20111225/f9eb21f9247aafb04b39cc5bba13afa1.ts?start=1712&end=2720295&hsize=5343&tag=1&v=7620766549&contentlength=1544984
#EXTINF:10, http://data.video.qiyi.com/videos/movie/20111225/f9eb21f9247aafb04b39cc5bba13afa1.ts?start=658512&end=3785637&hsize=5343&tag=1&v=7620766549&contentlength=1082880
//省略...
#EXT-X-DISCONTINUITY
#EXTINF:9, http://data.video.qiyi.com/videos/movie/20111225/f2eab9af69495077eea62a17029b0c9b.ts?start=0&end=836062&hsize=14301&tag=0&v=7620766549&contentlength=408148
#EXTINF:10, http://data.video.qiyi.com/videos/movie/20111225/f2eab9af69495077eea62a17029b0c9b.ts?start=1748&end=1489908&hsize=14301&tag=1&v=7620766549&contentlength=493500
#EXTINF:10, http://data.video.qiyi.com/videos/movie/20111225/f2eab9af69495077eea62a17029b0c9b.ts?start=377373&end=2159598&hsize=14301&tag=1&v=7620766549&contentlength=694660
//省略...
#EXT-X-ENDLIST
这就是简略的M3U8文件。当中要注意#EXTINF:[int/double],表示这个片段的总时长,这个字段非常关键我们能够通过它找见跳转位置的TS片段; #EXT-X-DISCONTINUITY,表示一个新的时间点開始,也就是说数据流的时间戳从此刻開始从0開始。那你可要准备好换算了,否则IMediaSeeking::SetPositions可就找不见了哦。当然有部分M3U8没有这个字段,大部分是影片总长度比較小的(不是绝对的哦)。
剩下的事情就是解析字符串的了,不累赘了。还有就是最好将时间列表和ts地址列表分离开来,使用起来会更方便由于大部分时候是多线程的情况。
(HLS播放器之中的一个)HLS协议之M3U8解析的更多相关文章
- GOOGLE VR SDK开发VR游戏,VR播放器之中的一个
近期一年来,VR虚拟现实和AR增强现实技术的宣传甚嚣尘上.事实上VR,AR技术非常早就有了,一直没有流行开来.不可否认价格是影响技术推广的最大壁垒. 谷歌对VR最大的贡献是提供了便宜的谷歌眼镜,依照G ...
- RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议
RTSP 编辑 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwo ...
- 使用phonegap开发安卓HLS播放软件解决方案
目前使用phonegap开发的手机应用,很少涉及视频播放的功能,究其原因,主要是phonegap提供的API里面对视频播放功能支持度不够,当然播放音频一般情况下还是能够实现的,由于工作需要,自己研究了 ...
- 如何生成HLS协议的M3U8文件
什么是HLS协议: HLS(Http Live Streaming)是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件 ...
- 基于Vivado HLS在zedboard中的Sobel滤波算法实现
基于Vivado HLS在zedboard中的Sobel滤波算法实现 平台:zedboard + Webcam 工具:g++4.6 + VIVADO HLS + XILINX EDK + ...
- vue2.0+vue-dplayer实现hls播放
vue2.0+vue-dplayer实现hls播放 开始 安装依赖 npm install vue-dplayer -S 1,编写组件HelloWorld.vue <template> & ...
- RDP 协议组件 X.224 在协议流中发现一个错误并且中断了客户端连接
如果你的服务器有如下错误: “RDP 协议组件 X.224 在协议流中发现一个错误并且中断了客户端连接.” 可能的有2种: 1:你试试能否能继续远程登陆,有可能你的远程登陆组件出现问题. 2:有人攻击 ...
- 播放器之争:VLC还是martPlayer
好多开发者跟我们交流的时候提到,为什么有了VLC这种开源播放器,大牛直播SDK还要开发SmartPlayer?以下就针对VLC和SmartPlayer功能支持和涉及侧重,做个大概的比较: VLC VL ...
- 基于UDP协议模拟的一个TCP协议传输系统
TCP协议以可靠性出名,这其中包括三次握手建立连接,流控制和拥塞控制等技术.详细介绍如下: 1. TCP协议将需要发送的数据分割成数据块.数据块大小是通过MSS(maximum segment siz ...
随机推荐
- erlang学习笔记(2)
函数%###geometry.erl###-module(geometry). 定义-export([area/1, function1/2, function2/0, ...]).area({rec ...
- B2C 电商网站需要怎样的 ERP 系统
B2C 电商网站需要怎样的 ERP 系统 主要由如下一些系统组成:1.进销存系统,你的产品的采供销当然最好是由系统来实现:2.BI系统,BI包括所有的流量.订单.商品.库存.发货等所有数据节点,亦包含 ...
- Windows平台内核级文件访问
1.背景 在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,读写文件.从kernel32的CreateFile/ReadFile/WriteFile函数,到本地系统 ...
- Android UI学习组件概述
Android的UI组件繁多,如果学习的时候不能自己总结和分类而是学一个记一个不去思考和学习他们内在的联系那真的是只有做Farmer的命了.为了向注定成为Farmer的命运抗争,在学习Android的 ...
- java中的上传下载----ajaxFileUpload+struts2
文件上传在项目中应该是非常常见的,而且很多时候,上传文件都只是一个小页面中的一个功能,要求在实现文件上传的前提下不刷新页面.而一般情况下将客户端的文件包装成网络地址传递到服务器端然后通过流来进行文件传 ...
- C实例--推断一个字符串是否是回文数
回文是指顺读和反读内容均同样的字符串.比如"121","ABBA","X"等. 本实例将编写函数推断字符串是否是回文. 引入两个指针变量,開 ...
- ruby简单的基础 5
方法和代码块 在Ruby中.{}或do...end之间的代码是一个代码块.代码块只能出如今一个方法的后边,它紧接在方法最后一个參数的同一行上,一般由yieldkeyword调用代码块中的代码. 方法是 ...
- Android中的数据存储
Android中的数据存储主要分为三种基本方法: 1.利用shared preferences存储一些轻量级的键值对数据. 2.传统文件系统. 3.利用SQLite的数据库管理系统. 对SharedP ...
- JavaSE思维导图(八)
- 浅谈SpringMVC(一)
一.SpringMVC引言 Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MV ...