收藏
回答

live-push组件无法推流

框架类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 live-push 客户端 Android 6.6.2 1.9.9

使用微信的直播组件live-push进行推流,自己搭建了一个rtmp服务器,但是现在在使用真机推流的时候,有些机器可以,有些机器没办法推流。在程序中直接调用start方法时,既没有成功,也没有失败,换了两个安卓客户端,都不行。烦请官方协助。

客户端是小米手机。

js文件

// pages/livepush/livepush.js

Page({


/**

  * 页面的初始数据

  */

data: {

//TODO update ip here

//home wifi 192.168.1.2

//office wifi 192.168.253.2

baseurl:'rtmp://192.168.253.2/push/',

pushurl:'rtmp://192.168.253.2/push/financial',

items: [

{ name: 'financial', value: '金融直播间', checked: 'true'},

{ name: 'stock', value: '股票直播间'},

]

},

radioChange: function (e) {

this.setData({

home: e.detail.value,

pushurl: this.data.baseurl + e.detail.value,

});

console.log('radio发生change事件,携带value值为:', e.detail.value)

//当切换直播源的时候,重新推流

this.data.pushContext.stop({

success(){

console.log("停止推流成功");

},

fail(){

console.log("停止推流失败")

}

})

this.data.pushContext.start({

success() {

console.log("开始重新推流成功");

},

fail() {

console.log("开始重新推流失败")

}

})

},

/**

  * 生命周期函数--监听页面加载

  */

onLoad: function (options) {

console.log("当前推流地址"+this.data.pushurl)

},

statechange(e) {

console.log('live-push code:', e.detail.code)

},

statuschanged(e){

console.log("status changed")

console.log(e);

},

error(e){

console.log(e)

},

/**

  * 生命周期函数--监听页面初次渲染完成

  */

onReady: function () {

console.log("begin onReady function")

this.data.pushContext = wx.createLivePusherContext('mypush',this);

//achieve live component

this.data.pushContext.start({

success() {

console.log("推流成功")

},

fail() {

console.log("推流失败")

}, complete(){

console.log("do nothing")

}

});

console.log("finished onReady function")

},


/**

  * 生命周期函数--监听页面显示

  */

onShow: function () {

console.log("on show" + this.data.pushurl)

},


/**

  * 生命周期函数--监听页面隐藏

  */

onHide: function () {

},


/**

  * 生命周期函数--监听页面卸载

  */

onUnload: function () {

},


/**

  * 页面相关事件处理函数--监听用户下拉动作

  */

onPullDownRefresh: function () {

},


/**

  * 页面上拉触底事件的处理函数

  */

onReachBottom: function () {

},


/**

  * 用户点击右上角分享

  */

onShareAppMessage: function () {

}

})


wxml

<view class='flexColumn'>

<text>实时直播</text>

<!-- 192.168.253.2  -->

<radio-group class="radio-group" bindchange="radioChange">

<label class="radio" wx:for="{{items}}">

<radio value="{{item.name}}" checked="{{item.checked}}" />{{item.value}}

</label>

</radio-group>

<live-pusher id="mypush" url="{{pushurl}}" autopush="{{true}}" bindstatechange="statechange" enable-camera bindnetstatus="statuschanged" style="width: 700rpx; height: 900rpx;" />

</view>


回答关注问题邀请回答
收藏

1 个回答

  • xiaosong
    xiaosong
    2018-03-14

    this.setData 后起个定时器等一下再调用 this.data.pushContext.stop,然后在 this.data.pushContext.stop 的 success 回调中调用 this.data.pushContext.start

    2018-03-14
    有用 1
    回复
登录 后发表内容