微信小程序-设置倍数播放按钮

目前微信小程序的Video并没有自带的倍数播放设置,但是官方提供了设置播放倍数的方法:VideoContext.playbackRate(number rate) | 微信开放文档 (qq.com)

用cover-view标签在video上设置按钮。

上代码(仅提供设计思路):

HTML部分:

    <video 
      class="video-playback"
      id="myVideo" 
      src="{{videoLink}}" 
      binderror="videoErrorCallback" 
      danmu-list="{{danmuList}}" 
      enable-danmu 
      vslide-gesture
      show-center-play-btn='{{false}}' 
      show-play-btn="{{true}}" 
      controls
      title="{{titleName}}"
      referrer-policy='origin'
      initial-time="{{initial_time}}"
      bindpause="suspendPlay"
      bindplay="startPlay"
      bindended="endPlay"
      bindtimeupdate="updatePlay"
      bindfullscreenchange="screenChange"
      bindcontrolstoggle="bindcontrolstoggle"
    >
    <cover-view class="video-multiple-play" wx:if="{{!showMultiple}}" style="{{isFullScreen && showButtonMultiple?'':'display:none'}}" catchtap="clickMultiple">
      <!-- <button plain="true" class="video-multiple-play-btn">{{selectMultiple}}X</button> -->
      {{selectMultiple}}X
    </cover-view>
    <cover-view class="multiple-play-message" wx:if="{{showMessage}}"><cover-view style="display:inline;">已切换为</cover-view> <cover-view style="color: #F97124;display:inline;">{{selectMultiple}}倍数</cover-view> <cover-view style="display:inline;">播放</cover-view></cover-view>
    <cover-view class="video-more-multiple" wx:if="{{isFullScreen && showMultiple}}" bindtap="closeMultiple">
      <cover-view class="video-more-multiple-main">
        <cover-view style="color: #FFFFFF;font-size: 18px;font-weight: 400;">倍数</cover-view>
        <cover-view class="video-more-multiple-item">
          <cover-view class="multiple-item" wx:for="{{playbackMultiple}}" style="{{item == selectMultiple?'color: #F97124;box-sizing: unset;border-bottom: 4px solid;':''}}" wx:key="item" data-multiple="{{item}}" catchtap="selectMultiple">{{item}}X
            <cover-view style="width:100%;height:4px;background:#F97124;" wx:if="{{item == selectMultiple}}"></cover-view>
          </cover-view>        
        </cover-view>        
      </cover-view>


    </cover-view>
  </video>

CSS部分:

.video-name{
  width: 100%;
  height: 72rpx;
  box-sizing: border-box;
  padding: 0 48rpx;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: #333333;
}
.video-playback{
  width: 100%;
}
.video-name-text{
  width: 100%;
  font-family: PingFang SC;
  font-style: normal;
  font-weight: 600;
  font-size: 24rpx;
  line-height: 24rpx;
  letter-spacing: 0.4rpx;
  color: #FFFFFF;

  overflow:hidden; /* 超出一行文字自动隐藏  */
  text-overflow:ellipsis;/* 文字隐藏后添加省略号 */
  white-space:nowrap;/* 强制不换行 */
}
.video-multiple-play{
  position: absolute;
  top: 5.1%;
  right: 9.7%;
  z-index: 50;
  width: 48px;
  height: 18px;
  border: 2px solid #FFFFFF;
  /* box-sizing: border-box; */
  border-radius: 2px;

  font-family: 'PingFang SC';
  font-style: normal;
  font-weight: 600;
  font-size: 14px;
  line-height: 18px;
  text-align: center;
  color: #FFFFFF;
}
.video-multiple-play-btn[plain]{
  position: absolute;
  /* width: 48px;
  height: 18px; */
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: 0;
  z-index: 50;
  border: none;
  font-family: 'PingFang SC';
  font-style: normal;
  font-weight: 600;
  font-size: 14px;
  line-height: 18px;
  text-align: center;
  color: #FFFFFF;
}
.video-more-multiple{
  /* height: 0rpx; */
  /* transition: 0.3; */
  height: 375px;
  width: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  background: rgba(0, 0, 0, 0.5);
  overflow: hidden;
}
.video-more-multiple-main{
  /* width: 78.3%;   */
  width: 636px;
  height: 125px;
  /* height: 32%; */
  position: absolute;
  left: 7.3%;
  /* bottom: 7.5%; */
bottom: 28px;
}
.video-more-multiple-item{
  /* height: 80%; */
  width: 636px;
  height: 96px;
  margin-top: 5px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.multiple-item{
  width: 96px;
  height: 96px;
  background: #000000;
  opacity: 0.7;
  border-radius: 4px;
  box-sizing: border-box;

  font-family: 'PingFang SC';
  font-style: normal;
  font-weight: 600;
  font-size: 18px;
  line-height: 96px;
  text-align: center;
  color: #FFFFFF;
}
/* 切换倍数后的提示 */
.multiple-play-message{
  width: 100%;
  height: 94px;
  box-sizing: border-box;
  padding-top: 35px;
  font-family: 'PingFang SC';
  font-style: normal;
  font-weight: 600;
  font-size: 15px;
  line-height: 15px;
  text-align: center;
  color: #FFFFFF;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.5) 0%, rgba(231, 231, 231, 0) 100%);
  
}

JS部分:

  // 选中倍数
  selectMultiple(e){
    var value = e.currentTarget.dataset.multiple
    this.setData({
      selectMultiple:value,
      showMultiple:false,
      showButtonMultiple:false,
      showMessage:true
    },()=>{
      setTimeout(() => {
        this.setData({
          showMessage:false
        })
      }, 3000);
    })

//关键代码
    this.videoContext.playbackRate(Number(value))
  },

效果图:

总结:用cover-view设置按钮, 以此触发设置播放倍数的方法。

微信小程序是一种基于微信平台的应用的开发模式,可以快速的开发出符合用户需求的小程序。在小程序开发中,组件是一个非常重要的概念,通过组件可以实现复用性和模块化编程思想。 组件应用是小程序开发的基础。通过组件可以将某一模块化并封装起来,使得组件可以在不同的页面间得到复用,大大提升了开发效率并减少了代码冗余。微信小程序提供了丰富的自带组件,包括文本、图片、按钮、输入框等等,开发者也可以自己开发组件来满足自己的需求。实际开发中,通过组件可以快速搭建页面框架和业务逻辑。 Demo是一个演示小程序的示例程序。在小程序的实际开发过程中,一个好的Demo非常重要。通过Demo,开发人员可以更深入的了解小程序开发流程、组件的应用和实际的业务开发等等。在Demo中,通常会包括小程序的一些基础操作,如页面跳转、数据绑定、组件的使用等。而在实际开发中,Demo还会包括一些复杂的业务场景,如支付、登录、数据列表展示等等。Demo不仅为开发者提供了学习和实践的机会,也方便了使用者了解该小程序功能和特点。 总之,微信小程序组件的应用和Demo的开发都是小程序开发过程中非常重要的两个部分。良好的组件应用和精心设计的Demo,可以在极短的时间内实现小程序开发
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值