收藏
回答

live-pusher 安卓手机提推流失败,iOS可以

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug live-pusher 客户端 6.7.3 2.4.3

- 当前 Bug 的表现(可附上截图)


- 预期表现



- 复现路径


- 提供一个最简复现 Demo

wxml:

<live-pusher

id="livePusher"

url="{{pushUrl}}"

mode="RTC"

bindstatechange="pusherStateChange"

binderror="onPushError"

enable-camera="{{false}}"

beauty="6"

class="invisible"></live-pusher>


js:

onReady: function () {

console.log('>>>on ready')

var self = this;

this.createPushContext(self);

this.createPlayContext(self);


wx.setKeepScreenOn({

keepScreenOn: true,

})

},


//初始化推流

createPushContext: function (self) {

console.log('>>> push create context');

var context = wx.createLivePusherContext('livePusher', self);

this.setData({

pushVideoContext: context

})

},


//推流

startPush: function(url){

console.log('>>> start pushing');

var that = this;

that.setData({

pushUrl: url

}, function () {

that.data.pushVideoContext.start();

})

},

//停止推流

stopPush: function(){

console.log('>>> stop pushing');


var that = this;

that.setData({

isPushing: false,

}, function () {

that.data.pushVideoContext.stop();

})

},


pusherStateChange: function (e) {

console.log('>>> live-pusher onPushStateChange:', e.detail.code);


if (e.detail.code == -1307) {

this.stopPush();

wx.showToast({

title: '-1307,推流失败',

})

} else if (e.detail.code == 1007) {

wx.hideToast();


// 推流成功

this.setData({

isPushing: true

})

}

},


onPushError: function (e) {

console.log('>>>push error:',e)

console.error('>>> live-pusher onPushError:', e.detail.errMsg);

this.stopPush();

wx.showToast({

title: '推流失败',

icon: 'none'

})

},


最后一次编辑于  2018-12-27
回答关注问题邀请回答
收藏

4 个回答

  • 小程序技术专员-Eric
    小程序技术专员-Eric
    2018-12-27

    live-pusher 组件目前正在重构,后续版本会更新,如果之后还存在这个错误可以再反馈一下。

    2018-12-27
    赞同
    回复
  • 社区技术运营专员-小柿子
    社区技术运营专员-小柿子
    2018-12-27

    这是报图片的问题?

    2018-12-27
    赞同
    回复 1
    • 好名字
      好名字
      2018-12-27

      我仔细看了下code码,好像是10004。

      官方文档上写的   “ 10004    等待画面资源(waiting-image)加载失败”

      安卓一直会报这个问题,但同样的代码iOS就一点事情没有。我试了好几个手机,三星s9,oppo R9,华为p20和荣耀magic 2,都会出现同样的错误。然后我发现,好像并不影响推流效果。只要删掉那个error检测,就可以。。


      这个问题具体是怎么造成的,我并不是很清楚,猜想可能跟使用的浏览器内核有关?

      2018-12-27
      回复
  • 黑色幽默
    黑色幽默
    01-21

    我也是这么做的,但是安卓手机还是没反应,打不开 摄像头,后台收不到推流数据,不知道为什么,ios则可以,

    <live-pusher url="{{livePlayerUrl}}" id="player"  autopush mode ="HD" enable-camera="{{true}}" bindstatechange="stateLiveChange"></live-pusher>


    01-21
    赞同
    回复 2
    • 好名字
      好名字
      01-21

      额,你这个时pusher组件,但是你写的id好像时player,你是不是用错了。。。

      01-21
      回复
    • 黑色幽默
      黑色幽默
      01-21

      我是这样写的,刚刚把id改了一下


      图上所示,安卓版微信只出现两个状态码,连摄像头都没有打开,ios则会出现多个,包括1003,打开摄像头


      <!--推流-->

      <live-pusher url="{{livePlayerUrl}}" id="pusher"  autopush mode ="HD" enable-camera="{{true}}" bindstatechange="stateLiveChange"></live-pusher>

      onReady: function () {

      var context = wx.createLivePusherContext('pusher',this);

      this.setData({

      pushVideoContext: context

      })

      },



      01-21
      回复
  • 好名字
    好名字
    2018-12-27

    我发现,只要删掉那个组件里的 binderror="onPushError" 属性就可以了。。。

    2018-12-27
    赞同
    回复 3
    • 界世的蛋操
      界世的蛋操
      03-27

      你好, 我直接使用的是微信官方的实例, 我mac ari 上可以调起摄像头和语音, 也能看到画面, 但是我的安卓手机上就不行, 啥反应都没, 一加5T 安卓8.1.0, 麻烦了

      03-27
      回复
    • 好名字
      好名字
      03-27回复界世的蛋操

      换个手机呢?

      03-27
      回复
    • 好名字
      好名字
      03-27回复界世的蛋操

      感觉上,你可能初始化组件有问题吧,或者,推流地址不对。再不然,手机网络问题?

      03-27
      回复