HLS,RTMP,HTTP这些协议有什么区别

html-css020

HLS,RTMP,HTTP这些协议有什么区别,第1张

HLS (HTTP Live Streaming)

Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用 HTTP 渐进下载方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。它最初是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的流.现在见到在桌面也有很多应用了,HTML5 是直接支持这个。

但是HLS协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量资源浪费。如果要实现数天的时移,索引量将会是个巨额数字,并明显影响请求速度。因此,HLS协议对存储I/O要求相当苛刻。对此,也有公司提出了非常好的解决方案。

新型点播服务器系统,独创了内存缓存数据实时切片技术,颠覆了这种传统实现方法,从根本上解决了大量切片的碎片问题,使得单台服务器的切片与打包能力不再是瓶颈。其基本原理如下:

不将TS切片文件存到磁盘,而是存在内存当中,这种技术使得服务器的磁盘上面不再会有“数以吨计”的文件碎片,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性。同时,由于使用这种技术,使得终端请求数据时直接从服务器的内存中获取,极大提高了对终端数据请求的反应速度,优化了视频观看体验。

RTSP协议,这应该是实时性最好的了,如果要想实时性要求很高,比如0.5s以内,这个是不错的选择。前阵子模仿spydroid写了个建议的rtsp 服务器,其实就是options,describe,setup,play,pause,teardown这几步了,这个协议用的最广泛,网上介绍也比较 多。要想真正深入了解rtsp协议,c++语言功底好的可以查看live555 。

推荐使用ckplayer,

最新更新日期:2018-01-10

修正了不能播放部分rtmp视频的bug

增加了删除缓动的api

升级方法

替换ckplayer.swf及ckplayer.js中112行!(function() {以下的内容

在ckplayer.js及ckplayer.xml中搜索“addCallback”属性节点,列表中增加deleteAnimate属性

最新更新日期:2017-12-14

调用播放器初始化时增加了一个属性playerID,可以在同页面多播放器时用来区分不同的播放器发出的监听事件

修正了一些无关紧要的bug

增加了h5部分对于控制栏的限制以及相对应的api

统一了flashplayer和h5的右键设置

增加了播放器动作按钮点击的监听函数clickEvent

升级方法

替换ckplayer.swf及ckplayer.js中112行!(function() {以下的内容

更新日期:2017-12-08

修正了h5字幕文件显示样式控制不了的bug

增加了控制控制栏显示/隐藏的接口

升级方法

替换ckplayer.swf及ckplayer.js中113行!(function() {以下的内容

搜索ckplayer.js以及ckplayer.xml中的addCallback属性,在其最后添加:“,changeControlBarShow”

更新日期:2017-11-24

修正了html5环境中视频出错时播放器上方不显示错误提示的bug

升级方法

替换ckplayer.swf及ckplayer.js中113行!(function() {以下的内容

更新日期:2017-11-23

1:增加了flashplayer中调用视频地址包含逗号时出错的bug

2:修正了当删除ckplayer.js的配置logo被删除后html5环境出错的bug

3:修正了html5中缓冲图标没有动画效果的bug

升级方法,1:替换ckplayer.swf、2:替换ckplayer.js中112行!(function() {以下的内容、3:在ckplayer.js中找到“m3u8MaxBufferLength: 30,”,在该行下面增加“split:',',”、4:在ckplayer.xml中找到“<m3u8MaxBufferLength>30</m3u8MaxBufferLength>”,在该行下面增加“<split>,</split>”

更新日期:2017-11-16

1:修复了ipad不能播放m3u8的bug

2:修改移动端默认不使用ckplayer自定义风格

3:html5风格中增加了倍速播放按钮列表

4:html5环境中增加了倍速播放api

升级方法,只需要替换ckplayer.swf以及ckplayer.js中112行!(function() {以下的内容

更新日期:2017-11-10

HTML5环境支持视频的旋转和缩放,修改的文件为ckplayer.js,修改的内容是videoRotation()函数和videoZoom()函数

更新日期:2017-11-07,更新内容(如果你不是使用的rtmp则无需更新):

1:html5播放器统一使用ckplayerConfig()函数里指定的logo图片做为logo

2:修正了部分rtmp直播流无法播放的bug

3:修正了一些其它bug

ckplayer X版本升级说明,2017-11-01

一:重构代码

1:完全重构了ckplayer.js、ckplayer.xml,配置规则标准化。不再使用同一个属性定义多个值的形式进行配置。ckplayer.js中的html5部分采用自定义风格的功能。

2:完全重构了language.xml,语言包进行了可扩展升级。

3:完全重构了风格文件。不再采用以前版本的压缩包形式,而是仅采用style.xml进行配置,图片文件全部转化成base64使用,并且支持加密。保护您的插件。并且支持自定义按钮,图片或swf的功能。

二:功能方面的升级

1:广告部分增加了新的广告形式,插入广告,结尾广告,其它类型的广告(如横幅,角标等自定义显示时间),保留原来的前置广告,暂停广告。增加了广告展示监听,广告点击监听功能。

2:播放部分升级了对m3u8格式的内部支持,不再使用外部插件播放。

3:增加了flashplayer环境对m3u8文件的加密支持。

4:内置了清晰度支持功能,以及m3u8清晰度自动选择及显示的支持。

5:内置了弹幕显示功能,多种缓动效果。可以制作出多种弹幕显示效果。并且支持弹幕和播放器的互动,以前和js的互动。

6:重构了播放器的API

三:其它说明

本次升级是一次非常大的升级行为,跟之前版本基本毫无联系。调用播放器的代码更加简单高效智能化。