移动端video,不能快进,拖动进度条遇到的bug

移动端项目中有个学习考试模块,要求就是视频不能快进,可以全屏,并且看完视频才能考试。

本来想着挺简单的 ,设置一下video标签的

controls  controlsList="nodownload  noplaybackrate " disablepictureinpicture

把右下角的三个点隐藏,里面包含下载和画中画,最新版谷歌浏览器还新增了播放速度按钮。

然后设置一下时间,拖动进度条就让他回去,然后监听视频播放结束事件,再播放结束的时候发送请求。基本思路就是这样的。

万万没想到的是,这样设置,再移动端不生效,虽然拖动进度条能回去,但是只要把进度条拖到最后,还是会触发ended

myVideo.addEventListener('ended', function () {
    clearInterval(app.time)
    //形成记录
    let eiInfo = new EiInfo();
    eiInfo.set("idNumber", $("#inqu_status-0-userId").val());
    eiInfo.set("vedioId", app.id);
    eiInfo.set("flag", "end");
    EiCommunicator.send("PMET51V", "insVedioLog", eiInfo, {
        onSuccess: function (ei) {
            if (ei.getStatus() < 0) {
                IPLAT.alert(ei.getMsg());
                return false;
            } else {
                IPLAT.alert(ei.getMsg());
            }
        }, onFail: function (ei) {
            IPLAT.alert(ei.getMsg());
        }
    })
});

这个问题困扰了好几天,最后找到一个timeupdate事件,就是视频播放会一直触发,然后我只需要再当前播放时间等于视频总时长时候发个请求就好了,以下是完整代码

    //视频播放结束
     myVideo.addEventListener("timeupdate",function(e){
         console.log(myVideo.currentTime)//当前播放时间
         console.log(myVideo.duration)//视频总时长
         if(myVideo.currentTime==myVideo.duration){
                   发送请求                    
          }
        })

让进度条回去的是以下代码

  var last = +app.lastPlayTime;//后台返回上次播放时间,默认是0
        myVideo.ontimeupdate = function () {
        var current = myVideo.currentTime;
        if (current - last > 0.5) {//此处是限制跳过几秒 可调整
        myVideo.currentTime = last;
        } else {
         last = current;
          }
        };

设置0.5的原因是,之前设置的隐藏倍速只能再谷歌生效,在移动端不生效,设置成0.5的话就不能两倍速播放了,如果有大佬知道怎么更好的解决这个问题,请留言

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: h5 video不显示进度条一般是因为视频播放器的控制条被隐藏了,可以在播放器的属性中设置控制条的显示与隐藏。至于不能快进的问题,可能是因为视频的编码格式或者播放器的设置问题导致的。如果是编码格式的问题,可以尝试转换视频格式或者使用优秀的编码软件重新编码视频;如果是播放器的设置问题,可以查看播放器相关的API文档和使用说明,进行相应的设置调整,以解决快进功能无法使用的问题。此外,还可以考虑使用第三方开源的视频播放器插件,例如video.js、jwplayer等,这些插件不仅可以解决视频播放器问题,还可以提供更多的功能和美化效果,提升用户体验。总之,h5 video不显示进度条不能快进,需要仔细分析问题原因,并采取相应的解决措施。 ### 回答2: H5 video 是基于 HTML5 技术开发的视频播放器,由于其良好的兼容性和支持性,已经成为当前主流的网页视频播放方式。然而,有时候我们可能会遇到 H5 video 不显示进度条不能快进的问题,这主要有以下原因: 1.视频格式问题:H5 video 对一些视频格式的支持性可能存在限制,如果所播放的视频格式不支持,则会导致视频进度条无法显示,无法进行快进等操作。 2.音视频文件不完整或损坏:如果所播放的音视频文件不完整或损坏,可能会导致视频进度条无法显示,无法进行快进等操作。 3.缓存问题:有时候我们可能会在播放过程中遇到视频进度条无法显示、无法快进的情况,这可能是由于缓存未完全加载导致的。可以尝试清除浏览器缓存或重新加载页面解决。 针对以上问题,我们可以采取以下解决措施: 1.检查视频格式:确认所要播放的视频格式是否被 H5 video 支持,如果不支持,可以考虑使用其他格式或转换工具将视频转成支持格式。 2.检查音视频文件完整性:确认所要播放的音视频文件是否完整,并且未损坏。如果文件不完整或损坏,可以重新下载或使用修复工具修复文件。 3.清除浏览器缓存:在遇到视频进度条无法显示、无法快进等问题时,可以尝试清除浏览器缓存,重新加载视频页面。 除此之外,为了提高 H5 video 在播放过程中的体验,我们也可以采用以下建议: 1.视频预加载:在加载页面时预先加载视频文件,以保证视频缓存完全。 2.网络优化:优化网络连接,提高视频下载速度,避免视频卡顿或加载缓慢的情况。 3.增加交互体验:可以添加交互组件,如暂停、快进、倒退、全屏等功能,以提高用户体验。 ### 回答3: 近年来,随着移动互联网的迅速发展,H5视频作为一种使用方便、便于传播的视频播放方式逐渐受到更多人的喜爱。然而,在使用H5视频时,有时会遇到一些问题,比如无法显示进度条不能快进等问题。这些问题可能会给用户带来不便和困扰。 首先,对于H5视频无法显示进度条的问题,我们可以尝试检查以下几个方面。首先,我们需要确定视频的格式是否与浏览器兼容。如果视频格式不被浏览器支持,那么就会出现无法显示进度条的情况。要解决这个问题,我们需要在编码视频的时候,选择浏览器支持的格式进行编码,或者通过引入第三方库进行视频格式兼容的处理。 其次,我们还需要检查是否需要设置视频的属性。有些H5视频播放器需要对视频属性进行设置,以便正确地显示进度条。需要设置的属性包括视频的宽度、高度、播放时长、总时长等。正确地设置这些属性可以确保视频播放时进度条的显示正常。 最后,对于H5视频不能快进的问题,我们需要检查视频源文件是否正常。如果视频源文件损坏或者遗失某些数据,那么就会影响到视频的正常播放和快进。此时,我们需要重新获取或修复视频源文件,以便确保视频播放正常。 除了上述几点,还有一些其它的问题可能会导致H5视频无法显示进度条不能快进。比如网络状况不佳,服务器响应慢等等。针对这些问题,我们需要进一步深入定位问题,并采取相应的修复措施。 总之,H5视频作为一种现代化的视频播放方式,不仅使用方便,而且便于传播,可以满足人们在移动设备上观看视频的需求。但是在使用过程中会遇到一些问题,我们需要积极解决这些问题,以便更好地使用H5视频。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值