videojs获取视频播放进度和浏览时长

本文介绍了一个使用HTML5、video.js和jQuery实现的视频播放器案例,该播放器能够实时记录视频的播放进度及用户的浏览时长,并在视频播放结束、暂停或用户离开页面时将这些数据发送到服务器。

需求:

1:获取视频播放进度

2:获取用户浏览时长

实现注意事项

1:调用video.js  video.css

2:视频播放时计时,停止、缓冲时、关闭网页时浏览时长计算停止,并将数据上传到服务器

html
 

<!DOCTYPE html>
<html lang="en">
<head>

    <title>Video.js | HTML5 Video Player</title>
    <link href="http://vjs.zencdn.net/7.0/video-js.min.css" rel="stylesheet">
    <script src="http://vjs.zencdn.net/7.0/video.min.js"></script>
	<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>

  <video id="demo-video" class="video-js vjs-default-skin" controls preload="none" width="640" height="264" poster="http://vjs.zencdn.net/v/oceans.png" data-setup="{}">
    <source id="demo" src="http://vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
  </video>
	观看时长:<input type="text" id="aa" value="0">
	当前时间:<input type="text" id="bb" value="0">
</body>

</html>

js代码

<script>
$(document).ready(function () {
    var options = {
    };       
    var player = videojs('demo-video', options, function onPlayerReady() {
        var time1;
        var t1 = 0;
        function aa() {
            t1 += 0.1;
            document.getElementById('aa').value = t1;
            console.log('aa-' + t1);
            var currentTime = document.getElementById("demo-video").firstChild.currentTime;
            document.getElementById('bb').value = currentTime;
            console.log('当前播放时间'+ currentTime);            
        }
        //结束和暂时时清除定时器,并向后台发送数据
        this.on('ended', function () {
            console.log('结束播放');
            window.clearInterval(time1);
            countTime();   //向后台发数据
        });
        this.on('pause', function () {
            console.log('暂停播放');
            window.clearInterval(time1);
            countTime();  //向后台发数据
        });
        this.on('ended', function() {//播放结束
            console.log("播放结束");
            window.clearInterval(time1);
        });
        this.on('waiting', function () {
            console.log('等待加载');
            window.clearInterval(time1);
            countTime();   //向后台发数据
          })
        //开始播放视频时,设置一个定时器,每100毫秒调用一次aa(),观看时长加1秒
        this.on('playing', function () {
            console.log('开始播放');
            time1 = setInterval(function () {
                aa();
            }, 100);                               
        });     
    });
    //直接关闭页面,并向后台发送数据
    if(window.addEventListener){
        window.addEventListener("beforeunload",countTime,false);
    }else{
        window.attachEvent("onbeforeunload",countTime);
    }
})
 
function countTime() {
            var sTime = $("#aa").val();
            var currentTime = $("#bb").val();
            console.log(sTime+'=='+currentTime+'发往后台');            
        }
</script>

可以通过 JavaScript 中的 HTML5 Video API 来获取视频播放进度。具体方法如下: 1. 获取 video 元素 首先,你需要获取 video 元素。可以通过以下代码来获取: ```javascript var videoElement = document.getElementById('myVideo'); ``` 这里的 `myVideo` 是 video 元素的 id,你需要将其替换为你实际使用的 id。 2. 获取当前播放时间视频总时长 接下来,你可以使用 video 元素提供的 `currentTime` `duration` 属性来获取当前播放时间视频总时长。代码如下: ```javascript var currentTime = videoElement.currentTime; var duration = videoElement.duration; ``` 其中,`currentTime` 表示当前播放时间(单位为秒),`duration` 表示视频总时长(单位为秒)。 3. 获取播放进度百分比 最后,你可以通过计算当前播放时间视频总时长的比例来获取播放进度百分比。代码如下: ```javascript var progress = (currentTime / duration) * 100; ``` 这里的 `progress` 就是播放进度百分比,值为 0 到 100 之间的数值。 完整的代码如下: ```javascript var videoElement = document.getElementById('myVideo'); var currentTime = videoElement.currentTime; var duration = videoElement.duration; var progress = (currentTime / duration) * 100; console.log('当前播放时间:' + currentTime + '秒'); console.log('视频总时长:' + duration + '秒'); console.log('播放进度:' + progress + '%'); ``` 需要注意的是,以上代码需要在视频播放期间才能正确获取播放进度。如果视频未开始播放或已停止播放,`currentTime` `duration` 的值可能不准确。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值