微信官方给的提示
解决方法一
以上是从微信官方论坛中找到的答案,就是说如果想实现禁止拖动进度条,要么就是隐藏掉,要么就是自己自定义一个进度条。如果用show-progress=‘{{false}}’,这个属性隐藏掉了进度条,那video原本自带的底部控制栏中(播放/暂停 ,进度时间,进度条,总时长,全屏/退出全屏),这些按钮中,就只剩下全屏/退出全屏了。
开始,我决定自定义进度条,但是我发现video里嵌套的组件,虽说官网给出的是可以使用view,但是只有界面效果,却触发不了view对应的方法,也就是说,我用slider组件自定义了一个进度条,并且禁用,然而不管用。
注意:就是如果你想全部隐藏掉自带的底部控制栏,就要在video里设置属性:controls='{{false}}'。但设置了这个属性,你想设置视频封面的图片的属性就无效了。
于是乎,几经波折,来回调试,最终还是决定用video自带的控制栏,通过在进度条位置,设置一个遮罩层,再设置一下透明度,这样,光标点不到进度条,就拖动不了了。当然,这个遮罩层也是要用<cover-view>
在设置遮罩层时,还遇到了问题,就是position: relative; opacity:0;无效!!!
改成这样::position: absolute;opacity:0;模拟器,安卓手机上都没问题,iOS真机上无效!!!
但是我发现,将透明度改大一点,大于0,iOS上就可以了。
所以,我用
wx.getSystemInfo,来判断设备,如果是iOS,那就设置透明度为0.1,如果是安卓,就为0.
其实到这里,问题基本解决了,但是还有一点点瑕疵,就是因为保留了本身的控制栏,那全屏/退出全屏的按钮功能要保留,所以遮罩层不能罩到要用的按钮,不然就都点击不了,所以在使用的按钮上我用view,设置了一个跟遮罩层一样颜色一样透明度的还补全,这样从视觉效果上才算是过关。
该代码搬砖简书 我不推荐这种哦
方法二
<video id="myVideo" bindtimeupdate="timeUpdate" bindpause="pause" bindwaiting="waiting" binderror="error" src='视频链接地址' initial-time="{{initial_time}}" poster="视频封面图片链接地址" page-gesture controls >
</video>
//百度==================解决 问群===================闲聊
//获取应用实例
var app = getApp();
const bgMusic = wx.getBackgroundAudioManager()
Page({
data: {
video_real_time:0, //实时播放进度
initial_time:'', //视频跳转进度 秒
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this
//此处写在接口的位置 100从接口处获取
that.setData({
initial_time:'100' //视频进度
})
},
//监听视频播放进度
timeUpdate: function (e) {
var aa = 1; // 是否开启可以视频快进 1 禁止开启
//跳转到指定播放位置 initial-time 时间为秒
let that = this;
//播放的总时长
var duration = e.detail.duration
//实时播放进度 秒数
var currentTime = parseInt(e.detail.currentTime)
//当前视频进度
// console.log("视频播放到第" + currentTime + "秒")//查看正在播放时间,以秒为单位
if (that.data.video_real_time==0){
var jump_time = parseInt(that.data.initial_time) + parseInt(that.data.video_real_time)
}else{
var jump_time = parseInt(that.data.video_real_time)
}
if(aa==1){
if (currentTime > jump_time && currentTime - jump_time>3){
let videoContext = wx.createVideoContext('myVideo')
videoContext.seek(that.data.video_real_time)
wx.showToast({
title: '未完整看完该视频,不能快进',
icon: 'none',
duration: 2000,
})
}
}
that.setData({
video_real_time: currentTime, //实时播放进度
})
},
pause: function (e) {
console.log('视频暂停播放')
console.log('暂停时播放时间====>' + this.data.video_real_time)
},
waiting: function (e) {
console.log('视频缓冲')
console.log(e)
},
error: function (e) {
console.log('视频播放出错时')
console.log(e)
},
})
//这种方法比较推荐大家使用 搬砖csdn