博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云 Aliplayer高级功能介绍(四):直播时移
阅读量:5919 次
发布时间:2019-06-19

本文共 3057 字,大约阅读时间需要 10 分钟。

基本介绍

时移直播基于常规的HLS视频直播,直播推流被切分成TS分片,通过HLS协议向播放用户分发,用户请求的m3u8播放文件中包含不断刷新的TS分片地址;对于常规的HLS直播而言,TS分片地址及相应的TS文件并不持久化保存,导致当前时间之前的直播视频内容无法回溯;而对于开通了时移功能的HLS直播而言,TS分片地址及相应TS文件会分别在数据库和OSS中持久化保存最长15天,使得回溯从直播开始时间到当前时间之间的视频内容成为可能。详情参见 , 播放器的表现为:

3439f2a05bbcdd5e71a7e35805a83627d95c79c7

直播时移在播放器中的表现为可以支持当前时间之前的直播内容的回看,当鼠标放到进度条上面时,会出现负数的时间提示,表示回看之前的几分几秒的视频。

Aliplayer的使用

Aliplayer提供了下面的一些属性支持直播时移的配置:

名称 必选 说明
isLive 值设置为true
liveTimeShiftUrl 时移信息查询URL怎么生成参考
liveStartTime 直播开始时间
liveOverTime 直播结束时间
liveShiftSource 直播时移hls地址,只有在source为flv直播流是需要设置

基本的代码:

var player = new Aliplayer({
id: "player-con", source: "https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8", width: "100%", height: "500px", autoplay: true, isLive: true, liveStartTime:"2018/12/25 16:00:00", liveOverTime:"2018/12/25 18:00:00", }, function (player) {
console.log("播放器创建成功"); });
  • 开通直播时移

播放器的直播时移功依赖于阿里云直播服务的直播时移,首先需要到阿里云直播服务里开通,详情参见 。

直播低延迟场景

HLS的延迟比较高,差不多10秒左右, 而flv的延迟基本到3秒左右,因此对于希望低延迟的场景,可以在直播时使用flv地址播放, 切换到时移时使用HLS的地址播放, Aliplayer支持这种模式: source属性指定flv直播地址, liveShiftSource属性指定hls的地址:

{
source:'http://localhost/live/test.flv', //flv的播放地址 liveShiftSource:'http://localhost/live/test.m3u8', //支持直播时移的HLS地址}

另外需要指定recreatePlayer函数回调,用于切换为flv直播时,重新创建播放器:

var player = "";var create = function(){
player = new Aliplayer({
recreatePlayer:function(){
create(); }, ..... }, function(player){
console.log('播放器已经创建'); });}

因此完整的代码为:

var player = "";var create = function(){
player = new Aliplayer({
id: "player-con", width: "100%", height: "500px", autoplay: true, //直播时移相关的属性 isLive: true, liveStartTime:"2018/12/25 16:00:00", liveOverTime:"2018/12/25 18:00:00", source:'http://localhost/live/test.flv', liveShiftSource:'http://localhost/live/test.m3u8', recreatePlayer:function(){
create(); }, ..... }, function(player){
console.log('播放器已经创建'); });}

当在回放状态的时候,可以点击Control的"LIVE"图标,可以切换为直播状态:

79b798e0c961a0c3b36f918246ff4b54daaef0be

时移回放地址

当需要区间回放时候,直播服务的播放地址通过添加相关的参数,可以回放指定区间的视频,具体参考: 但是有一种特殊情况需要说明,如果时移回放的是以前某个区间的视频, 比如当前是17点, 需要回看15点-16点的视频,则可以推荐使用点播模式的地址,结束时间使用"vodend"参数,如果使用直播模式会有下面的问题:

  • duration计算不准确
  • 播放端的卡顿,暂停等操作,会导致直播服务返回的切片列表不准确

比如直播地址为http://domain/app/stream.m3u8, 当使用直播结束时间是,地址格式为:

http://domain/app/stream.m3u8?lhs_start=1&lhs_start_human_s_8=20171024160220&lhs_end_human_s_8=20171024160420"

使用点播结束时间的地址格式为:

http://domain/app/stream.m3u8?lhs_start=1&lhs_start_human_s_8=20171024160220&lhs_vodend_human_s_8=20171024160420"

主要区别结束参数lhs_end_human_s变为lhs_vodend_human_s, 使用点播格式的时间,表示使用点播模式回看,一次返回指定时间段内的所有切片,包含endlist标签。Aliplayer就使用点播模式观看isLive设置为false.

let player = new Aliplayer({
id: "player-con", width: "100%", height: "500px", autoplay: true, //不使用直播 isLive: false, //直播时移的播放地址 source:'http://localhost/live/test.m3u8?lhs_start=1&lhs_start_human_s_8=20171024160220&lhs_vodend_human_s_8=20171024160420"', }, function(player){
console.log('播放器已经创建'); });

转载地址:http://rnbvx.baihongyu.com/

你可能感兴趣的文章
php redis 清空数据库,redis怎么删数据
查看>>
php自动删除图片,PHP自动清理图片资源
查看>>
php变量覆盖以后内存,PHP变量被重写会释放内存吗
查看>>
php渗透提权拿shell,Metasploit 之 webshell 提权
查看>>
java中instance of,JAVA的instanceOf例子
查看>>
java如何配置两个数据源,java – Spring boot – 如何配置多个数据源
查看>>
matlab如何打开xlsx表格,matlab窗口中显示excel表格的问题
查看>>
matlab怎么调用主函数,Matlab中一个函数调用另外一个函数的操作步骤
查看>>
php实例化mongodb,php操作mongodb封装类与用法实例
查看>>
matlab光学应用实践,Matlab在光学信息处理仿真实验中的应用
查看>>
php将文件内容读入数组,PHP 文件读入到数组
查看>>
matlab回归残差分析,非线性回归的残差分析
查看>>
LUA验证系统PHP,openresty+Lua构建高性能、高可靠、安全的登陆校验
查看>>
mysql能装在wimdows上吗,MySQL5.5在Windows上的安装
查看>>
php记录post日志,Nginx正确记录post日志的方法
查看>>
java cache定时过期,本地缓存高性能之王Caffeine
查看>>
java hadoop教程,Hadoop教程(二),hadoop教程
查看>>
matlab在推荐系统中的应用,【转】SVD在推荐系统中的应用
查看>>
java 虚拟机栈 例子,JVM学习笔记——虚拟机栈
查看>>
matlab 安装nc插件,matlab中netcdf插件安装和.nc格式数据的读取
查看>>