HTTP Live Streaming(HLS)详解
1,由来:
HLS是一个基于 HTTP 的视频流协议,由 Apple 公司实现,Mac OS 上的 QuickTime、Safari 以及 iOS 上的 Safari 都能很好的支持 HLS,高版本 Android 也增加了对 HLS 的支持。一些常见的客户端如:MPlayerX、VLC 也都支持 HLS 协议。
2,格式:
浏览器使用的是 m3u8 文件,可以简单的认为 m3u8 就是包含多个 ts 文件的播放列表。播放器按顺序逐个播放,全部放完再请求一下 m3u8 文件,获得包含最新 ts 文件的播放列表继续播,周而复始。整个直播过程就是依靠一个不断更新的 m3u8 和一堆小的 ts 文件组成,m3u8 必须动态更新,ts 可以走 CDN。一个典型的 m3u8 文件格式如下:
#EXTM3U#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000
gear1/prog_index.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=311111
gear2/prog_index.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=484444
gear3/prog_index.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=737777
gear4/prog_index.m3u8
具体的格式详细内容可以参考我的另外一篇介绍:hls之m3u8、ts流格式详解
还有苹果官网的hls介绍:Apple HLS
可以看到 HLS 协议本质还是一个个的 HTTP 请求 / 响应,所以适应性很好,不会受到防火墙影响。
3,播放:
对于支持 HLS 的浏览器来说,直接这样写就能播放了:
<video src="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"
height="300" width="400" preload="auto" autoplay="autoplay" loop="loop" webkit-playsinline="true"></video>
注意:HLS 在 PC 端仅支持safari浏览器,类似chrome浏览器使用HTML5 video标签无法播放 m3u8 格式,可直接采用网上一些比较成熟的方案,
如:
sewise-player、
MediaElement、
videojs-contrib-hls、
jwplayer。
4,延时:
hls有一个致命的弱点:延迟现象非常明显。如果每个 ts 按照 5 秒来切分,一个 m3u8 放 6 个 ts 索引,那么至少就会带来 30 秒的延迟。如果减少每个 ts 的长度,减少 m3u8 中的索引数,延时确实会减少,但会带来更频繁的缓冲,对服务端的请求压力也会成倍增加。所以只能根据实际情况找到一个折中的点。
HTTP Live Streaming(HLS)详解相关推荐
- HLS详解(看这个就够了)
HLS详解(看这个就够了) HLS概述 官方定义 优劣性 优点: 缺点: 格式解析 HLS文件 playlist(m3u8)介绍 HLS playlist(m3u8)格式详解 播放模式 点播VOD L ...
- 详解MapReduce中的五大编程模型
前言 我们上一节讲了关于 MapReduce 中的应用场景和架构分析,最后还使用了一个CountWord的Demo来进行演示,关于MapReduce的具体操作.如果还不了解的朋友可以看看上篇文章:初识 ...
- hls之m3u8、ts流格式详解
HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件. 1.M3U8文件 ...
- FFmpeg入门详解之87:HLS直播协议详解
引言与效果演示 ----------------------------------------- FFmpeg431的官方地址已经无法打开, 我将ffmepg4.3.1的开发包和源码上传到了百度云: ...
- FFmpeg入门详解之102:HLS直播协议详解
引言与效果演示 ----------------------------------------- FFmpeg431的官方地址已经无法打开, 我将ffmepg4.3.1的开发包和源码上传到了百度云: ...
- FFmpeg入门详解之109:m3u8加密--HLS 架构简介及播放加密的HLS
HLS 概述 HLS 全称是 HTTP Live Streaming, 是一个由 Apple 公司实现的基于 HTTP 的媒体流传输协议. 他跟 DASH 协议的原理非常类似. 通过将整条流切割成一个 ...
- Hadoop Streaming详解
一: Hadoop Streaming详解 1.Streaming的作用 Hadoop Streaming框架,最大的好处是,让任何语言编写的map, reduce程序能够在hadoop集群上运行:m ...
- Spark Streaming 源码详解
原地址 本系列内容适用范围:* 2015.12.05 update, Spark 1.6 全系列 √ (1.6.0-preview,尚未正式发布) * 2015.11.09 update, Spark ...
- 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解
注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明.可以对照这些命令详解配置nginx -rtmp服务 一.nginx ...
- 视频直播技术详解(7)现代播放器原理
<视频直播技术详解>系列之七:现代播放器原理 牛小七2016年9月29日发布在 视频直播技术详解 from: http://blog.qiniu.com/archives/7040 七牛云 ...
最新文章
- JNI 实战全面解析
- hybird 跨平台移动app开发
- xampp启动Apache报错 1、Error: Apache shutdown unexpectedly. 2、Unclean shutdown of previous Apache run?
- 传相互宝或于6月11日被关停 蚂蚁集团回应:假消息
- linux入门 适合初学者_经过慎重考虑,我拿出这套适合初学者入门的Java基础完整版视频...
- onenote设置默认新建页面颜色非白色
- python ioc框架_轻松理解 Spring 中的 IOC
- 使用@Conditional条件注解
- 进程同步——信号量机制(操作系统)
- 2019年安徽省学业水平考试计算机,2019年安徽省初中学业水平考试
- 安装pika配置系统服务过程中遇到的错误
- 一个计算机程序员高手的成长 [转]
- android tag的使用方法,Android setTag方法的key问题解决办法
- laravel短信包 easy-sms
- Razer雷蛇7.1声音驱动卸载后无法安装问题
- 4.6 案例10 使用QList处理数据集
- OCA,OCP,OCM傻傻分不清?
- 用VB实现WAV文件PCM与ADPCM的格式转换
- Maya安装后运行崩溃/闪退/报错
- lsi sas2208阵列卡刷直通模式