videojs-markers 视频打点

<!DOCTYPE html>
<html>
<head>
    <title>videojs</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.3.0/video-js.min.css" rel="stylesheet">
    <link href="https://cdn.bootcss.com/videojs-markers/0.7.0/videojs.markers.css" rel="stylesheet">
    <style type="text/css">
        #example_video{
            width: 640px;
            height: 340px;
        }
    </style>
</head>
<body>

<video id="example_video" class="video-js vjs-defalut-skin" controls preload="metadata">
    <source src="http://hc.yinyuetai.com/uploads/videos/common/FA6B0169A324DD75A87E1C84F4B31399.mp4?sc=48ed02b41892022b&br=780&vid=3365773&aid=22&area=HT&vst=0" type="video/mp4">
</video>

<div class="btn-group">
    <button type="button" id="btn-prev">上一个打点位置</button>
    <button type="button" id="btn-next">下一个打点位置</button>
    <div>
        <span>所有标记时间增加:</span>
        <input type="text" name="" id="add-time">
        <span></span>
        <button type="butotn" id="btn-confirm">确认增加</button>
    </div>
    <button type="button" id="btn-del">删除标记</button>
    <button type="button" id="btn-add">添加标记</button>
    <button type="button" id="btn-reset">重置标记</button>
</div>

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.3.0/video.min.js"></script>
<script src="https://cdn.bootcss.com/videojs-markers/0.7.0/videojs-markers.js"></script>
<script type="text/javascript">
    var player = videojs('example_video');  //实例化对象

    player.markers({
        markerStyle:{  //标记样式
            'width':'7px',
               'border-radius': '0%',
               'background-color': 'orange'
        },
        markerTip:{  //悬停标记提示对象
            display:true,  //是否显示markerTips
            /*
              用于动态构建标记提示文本的回调函数。
              只需返回一个字符串,参数标记是传递给插件的标记对象
             */
             text: function(marker) {
                return "This is a break: " + marker.text;
             }
        },
        breakOverlay:{  //每个标记的中断覆盖选项
            display: true,  //是否显示叠加层
            displayTime: 3,
            style:{  //为叠加层添加css样式
                color:"red"
            },
            text: function(marker) {  //回调函数动态构建叠加文本
                return "This is an break overlay: " + marker.text;
            }
          },
          onMarkerReached:function(marker, index){  //只要播放到标记的时间间隔,就会出发此回调函数

          },
          onMarkerClick:function(marker,index){  //单击标记时会触发此回调函数,
              /*
                单击标记的默认行为是在视频中寻找该点,
                但是,如果onMarkerClick返回false,则将阻止默认行为
              */
          },
          markers:[
              {
                  time:9.5,
                  text:"this"
              },
              {
                  time:30.5,
                  text:"is"
              },
              {
                  time:60.5,
                  text:"demo"
              },
              {
                  time:90.5,
                  text:"markers"
              },
              {
                  time:120.5,
                  text:":)"
              },
          ],
    });

    /****** 返回插件中当前标记的数组,按升序时间排序 ******/
    var getMarkers = player.markers.getMarkers();
    
    /****** 从视频中的当前时间转到下一个标记。 如果没有下一个标记,那么什么都不做 ******/
    
    $("#btn-next").click(function(){
        player.markers.next();
    })

    /****** 从视频中的当前时间转到上一个标记。 如果没有上一个标记,那么什么都不做 ******/
    
    $("#btn-prev").click(function(){
        player.markers.prev();
    })

    /****** 允许动态修改标记时间(传入原始标记对象) ******/
    $("#btn-confirm").click(function(){
        var markers = player.markers.getMarkers();
        var add_time = parseInt( $("#add-time").val() );
        console.log(add_time);
        for (var i = 0; i < markers.length; i++) {
           markers[i].time += add_time;
        }
        //调用updateTime以立即反应UI中的更改
        player.markers.updateTime();
    })
    
    /****** 删除给定索引数组中的标记(从0开始) ******/
    $("#btn-del").click(function(){
        //player.markers.remove([1,3]);

        //删除所有标记
        player.markers.removeAll();
    })
    
    /****** 动态添加新标记 ******/
    $("#btn-add").click(function(){
        player.markers.add([{
           time: 40,
           text: "I'm added dynamically"
        }]);
    })
    
    /****** 重置视频中的所有标记(相当于removeAll后再设置) ******/
    $("#btn-reset").click(function(){
        player.markers.reset([{
           time: 40,
           text: "I'm new"
        },
        {
           time:20,
           text: "I'm new too"
        }]);
    })
</script>
</body>
</html>

 

posted @ 2019-04-04 15:22  ameame  阅读(3832)  评论(2编辑  收藏  举报