小程序中 live-player 没有触发bindstatechange事件 导致无法自动播放视频?
发布于 5 年前 作者 ofu 5920 次浏览 来自 问答

小程序中 live-player 设置了autoplay ,但是进入页面后拿到远端流 没有触发bindstatechange ,无法自动播放。需要手动将微信置入手机后台,再次进入微信,才可触发statechange事件,(项目中mpvue 写法包装了一下,改造了腾讯云音视频的 webrtc 组件 demo),哪位同学能帮忙定位一下问题,谢谢

1、live-player

<div class="player-box"
  <live-player :id=fixPlayId || members[0].userID" autoplay mode="RTC" object-fit="fillCrop" min-cache="0.1" max-cache="0.3"
 :src=members[0].accelerateURL" :debug=debug"  @statechange=onPlay
</live-player>
</div>

2、js监听事件

//播放器live-player回调
onPlay(e) {
  e = e.mp || e
  console.log('onPlay code: ', e.detailcode) //这个console 首次进入视频页 没有打印出来
  this.members.forEach((val) => {
    if ((this.template == 'bigsmall' && e.currentTargetid === this.fixPlayId) || e.currentTargetid == val.userID) {
      switch (e.detailcode) {
        case 2007: {
          console.log'视频播放loading: ', e)
          val.loading = true
          break
        
        case 2004: {
          console.log'视频播放开始: ', e)
          val.loading = false
          setTimeout(() => {
            this.startPlay = true
          , 300
          break
        
        case 2301: {
          console.error'网络连接断开,且重新连接亦不能恢复,播放器已停止播放', val)
          this.delPusher(val)
          break
        
        default: {
          // console.log('拉流情况:', e.detail.code,e.detail.msg);
        
      }
    }
  })
3 回复

你好 请问这个问题解决了吗 ?

你好,如果不使用mpvue来处理是否会有这个问题?

您好 webrtc demo是原生小程序写法 是可以的,但是mpvue会编译成原生的,想问一下是不是个人逻辑哪里没有触发 player.play

回到顶部