1
0
Fork 0
Agora-Miniapp-Tutorial/components/agora-pusher/agora-pusher.js

159 lines
3.4 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// components/agora-pusher.js
const Utils = require("../../utils/util.js")
Component({
/**
* 组件的属性列表
*/
properties: {
minBitrate: {
type: Number,
value: 200
},
maxBitrate: {
type: Number,
value: 500
},
width: {
type: Number,
value: 0
},
height: {
type: Number,
value: 0
},
x: {
type: Number,
value: 0
},
y: {
type: Number,
value: 0
},
muted: {
type: Boolean,
value: !1
},
debug: {
type: Boolean,
value: !1
},
beauty: {
type: String,
value: 0
},
aspect: {
type: String,
value: "3:4"
},
/**
* 0 - loading, 1 - ok, 2 - error
*/
status: {
type: String,
value: "loading",
observer: function (newVal, oldVal, changedPath) {
Utils.log(`player status changed from ${oldVal} to ${newVal}`);
}
},
url: {
type: String,
value: "",
observer: function (newVal, oldVal, changedPath) {
// 属性被改变时执行的函数可选也可以写成在methods段中定义的方法名字符串, 如:'_propertyChange'
// 通常 newVal 就是新设置的数据, oldVal 是旧数据
Utils.log(`pusher url changed from ${oldVal} to ${newVal}, path: ${changedPath}`);
}
}
},
/**
* 组件的初始数据
*/
data: {
pusherContext: null,
detached: false
},
/**
* 组件的方法列表
*/
methods: {
/**
* start live pusher via context
* in most cases you should not call this manually in your page
* as this will be automatically called in component ready method
*/
start() {
Utils.log(`starting pusher`);
this.data.pusherContext.stop();
if (this.data.detached) {
Utils.log(`try to start pusher while component already detached`);
return;
}
this.data.pusherContext.start();
},
/**
* stop live pusher context
*/
stop() {
Utils.log(`stopping pusher`);
this.data.pusherContext.stop();
},
/**
* switch camera direction
*/
switchCamera() {
this.data.pusherContext.switchCamera();
},
/**
* 推流状态更新回调
*/
recorderStateChange: function (e) {
Utils.log(`live-pusher code: ${e.detail.code} - ${e.detail.message}`)
if (e.detail.code === -1307) {
//re-push
Utils.log('live-pusher stopped', "error");
this.setData({
status: "error"
})
//emit event
this.triggerEvent('pushfailed');
}
if (e.detail.code === 1008) {
//started
Utils.log(`live-pusher started`);
if(this.data.status === "loading") {
this.setData({
status: "ok"
})
}
}
},
recorderNetChange: function(e) {
Utils.log(`network: ${JSON.stringify(e.detail)}`);
}
},
/**
* 组件生命周期
*/
ready: function () {
Utils.log("pusher ready");
this.data.pusherContext || (this.data.pusherContext = wx.createLivePusherContext(this));
},
moved: function () {
Utils.log("pusher moved");
},
detached: function () {
Utils.log("pusher detached");
// auto stop pusher when detached
this.data.pusherContext && this.data.pusherContext.stop();
this.data.detached = true;
}
})