EasyDSS视频点播服务器实现多分辨率/多码率无缝切换的办法
EasyDSS流媒体音视频直播与点播服务器软件,是一套提供一站式的转码、点播、直播、检索、回放、录像下载服务的高性能RTMP/HLS/HTTP-FLV流媒体服务,极大地简化了流媒体相关业务的开发和集成的工作。
其中,点播功能主要包含:上传、多分辨率转码、分发。直播功能,主要包含:直播、录像、检索、回放、下载等,直播支持RTMP输入,RTMP/HLS/HTTP-FLV的分发同步输出;录像支持自定义保存时长、录像天数、检索及下载。提供丰富的二次开发接口,基于JSON的封装及HTTP调用。提供播放鉴权、推流鉴权等安全保证。提供用户及相关权限管理配置。
在流媒体音视频点播服务当中,我们经常会遇到几种场景需求:
- 视频网站、党政宣传门户
- 在线教育、精品课堂
- 短视频点播
EasyDSS视频点播服务器的多码率/多分辨率/多清晰度切换功能
在之前的博客《EasyDSS视频点播服务器实现的多码率点播功能的说明》EasyDSS视频点播服务器已经加入了单个视频文件多分辨率切片点播的功能,今天主要捋一下在调用EasyDSS的多分辨率、多清晰度点播切换的时候,如果控制画面的切换,尽可能地去做到无缝切换、无感知切换的效果,当有EasyDSS的用户在“EasyDSS流媒体服务器”QQ群 提出这个问题的时候,我第一个想法就是我们在做EasyNVR无插件直播和录像的时候,对录像回放时间轴的效果:
这里的时间轴可以任意Seek录像,这里的录像模式也跟点播的视频结构是一样的,都是采用的HLS的方式,那么EasyPlayer.js播放器带有的播放Seek接口,就可以直接应用于EasyDSS点播服务器的多分辨率、多清晰度的切换中来:
- 第一步:当我们选择分辨率切换时,再菜单切换的瞬间,上层控制脚本需要记住当前播放的时间点t1;
- 第二步:暂停当前播放进度,例如暂停播放http://demo.easydss.com:10080/vod/720p.m3u8;
- 第三步:播放地址切换到新的分辨率,并带上seek的时间,例如:http://demo.easydss.com:10080/vod/1080p.m3u8?time=t1;
- 第四步:启动播放;
那么整个过程,我们就在很快的时间内,实现了分辨率、清晰度的切换,给用户带来一个非常好的感官效果;
当然,我们也可以采用m3u8自带的多码率格式形式,在一个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
三. EasyDSS点播服务器搭建资源
【点播版本在线演示:http://demo.easydss.com:10080/login.html?p=3】
【直播版本在线演示:http://demo.easydss.com:10080/login.html?p=1】
【旗舰版本在线演示:http://demo.easydss.com:10080/login.html】
【在线接口:http://demo.easydss.com:10080/apidoc/】
获取更多信息
QQ交流群:560148162
WEB:www.easydss.com
Copyright © EasyDSS.com 2012-2018
最新文章
- Python实现冒泡排序
- 【Cocos2d-x 3.x】 事件处理机制源码分析
- JavaScript 语句
- Hadoop - Azkaban 作业调度
- Spark Programming--Fundamental operation
- MySQL 基本函数
- LAMP+LNMP视频教程
- ES6 带来了什么
- 剑指offer_数组中的逆序对
- scrapy相关 通过设置 FEED_EXPORT_ENCODING 解决 unicode 中文写入json文件出现`\uXXXX`
- Exception: 'dlib.mmod_rectangle' object has no attribute 'right' - 例外:'dlib.mmod_rectangle'对象没有属性'right'
- Android学习笔记(11):线性布局LinearLayout
- 数据仓库基础(四)ODS、元数据
- 11 The Go Memory Model go语言内置模型
- No.16 selenium学习之路之异常处理
- UVA 11945 Financial Management 水题
- javascript---对象和函数的引用、浅拷贝、深拷贝、递归
- memcached源码剖析5:并发模型
- MFC CListCtrl 将一个列表的选中项添加到另一个列表
- python redis的基本使用