image.png
    微信官方给的提示
    微信小程序video玩法(控制进度条)搬砖 - 图2

    解决方法一

    1. 以上是从微信官方论坛中找到的答案,就是说如果想实现禁止拖动进度条,要么就是隐藏掉,要么就是自己自定义一个进度条。如果用show-progress=‘{{false}}’,这个属性隐藏掉了进度条,那video原本自带的底部控制栏中(播放/暂停 ,进度时间,进度条,总时长,全屏/退出全屏),这些按钮中,就只剩下全屏/退出全屏了。
    2. 开始,我决定自定义进度条,但是我发现video里嵌套的组件,虽说官网给出的是可以使用view,但是只有界面效果,却触发不了view对应的方法,也就是说,我用slider组件自定义了一个进度条,并且禁用,然而不管用。
    3. 注意:就是如果你想全部隐藏掉自带的底部控制栏,就要在video里设置属性:controls='{{false}}'。但设置了这个属性,你想设置视频封面的图片的属性就无效了。
    4. 于是乎,几经波折,来回调试,最终还是决定用video自带的控制栏,通过在进度条位置,设置一个遮罩层,再设置一下透明度,这样,光标点不到进度条,就拖动不了了。当然,这个遮罩层也是要用<cover-view>
    5. 在设置遮罩层时,还遇到了问题,就是position: relative; opacity:0;无效!!!
    6. 改成这样::position: absolute;opacity:0;模拟器,安卓手机上都没问题,iOS真机上无效!!!
    7. 但是我发现,将透明度改大一点,大于0iOS上就可以了。
    8. 所以,我用
    9. wx.getSystemInfo,来判断设备,如果是iOS,那就设置透明度为0.1,如果是安卓,就为0.
    10. 其实到这里,问题基本解决了,但是还有一点点瑕疵,就是因为保留了本身的控制栏,那全屏/退出全屏的按钮功能要保留,所以遮罩层不能罩到要用的按钮,不然就都点击不了,所以在使用的按钮上我用view,设置了一个跟遮罩层一样颜色一样透明度的还补全,这样从视觉效果上才算是过关。
    11. 该代码搬砖简书 我不推荐这种哦

    方法二

    1. <video id="myVideo" bindtimeupdate="timeUpdate" bindpause="pause" bindwaiting="waiting" binderror="error" src='视频链接地址' initial-time="{{initial_time}}" poster="视频封面图片链接地址" page-gesture controls >
    2. </video>
    3. //百度==================解决 问群===================闲聊
    4. //获取应用实例
    5. var app = getApp();
    6. const bgMusic = wx.getBackgroundAudioManager()
    7. Page({
    8. data: {
    9. video_real_time:0, //实时播放进度
    10. initial_time:'', //视频跳转进度 秒
    11. },
    12. /**
    13. * 生命周期函数--监听页面加载
    14. */
    15. onLoad: function (options) {
    16. var that = this
    17. //此处写在接口的位置 100从接口处获取
    18. that.setData({
    19. initial_time:'100' //视频进度
    20. })
    21. },
    22. //监听视频播放进度
    23. timeUpdate: function (e) {
    24. var aa = 1; // 是否开启可以视频快进 1 禁止开启
    25. //跳转到指定播放位置 initial-time 时间为秒
    26. let that = this;
    27. //播放的总时长
    28. var duration = e.detail.duration
    29. //实时播放进度 秒数
    30. var currentTime = parseInt(e.detail.currentTime)
    31. //当前视频进度
    32. // console.log("视频播放到第" + currentTime + "秒")//查看正在播放时间,以秒为单位
    33. if (that.data.video_real_time==0){
    34. var jump_time = parseInt(that.data.initial_time) + parseInt(that.data.video_real_time)
    35. }else{
    36. var jump_time = parseInt(that.data.video_real_time)
    37. }
    38. if(aa==1){
    39. if (currentTime > jump_time && currentTime - jump_time>3){
    40. let videoContext = wx.createVideoContext('myVideo')
    41. videoContext.seek(that.data.video_real_time)
    42. wx.showToast({
    43. title: '未完整看完该视频,不能快进',
    44. icon: 'none',
    45. duration: 2000,
    46. })
    47. }
    48. }
    49. that.setData({
    50. video_real_time: currentTime, //实时播放进度
    51. })
    52. },
    53. pause: function (e) {
    54. console.log('视频暂停播放')
    55. console.log('暂停时播放时间====>' + this.data.video_real_time)
    56. },
    57. waiting: function (e) {
    58. console.log('视频缓冲')
    59. console.log(e)
    60. },
    61. error: function (e) {
    62. console.log('视频播放出错时')
    63. console.log(e)
    64. },
    65. })
    66. //这种方法比较推荐大家使用 搬砖csdn