123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- import {getDataSet, getEventParam, toast} from "../../utils/utils";
- import {liveSources} from "../../model/enum";
- import {timStore} from "../../store/tim";
- import {createStoreBindings} from "mobx-miniprogram-bindings";
- import Tim from "../../model/tim";
- import User from "../../model/user";
- import EduTRTC from "../../model/edu-trct";
- import Route from "../../model/route";
- Page({
- data: {
- liveSourcesEnum: liveSources,
- user: {},
- groupId: '',
- pic: '',
- userSig: '',
- scheduleId: '',
- isFull: false,
- bigIndex: 0,
- isLive: false,
- },
- async onLoad(options) {
- wx.setKeepScreenOn({
- keepScreenOn: true,
- })
- this.storeBindings = createStoreBindings(this, {
- store: timStore,
- fields: ['isCanShare', 'isAudVideo', 'isAudText', 'isStuVideo', 'pusher', 'playerList'],
- actions: ['setScroll', 'pushMessage', 'resetMessage', 'logout', 'initLive', "exitRoom", "setPusherAttributesHandler"]
- })
- const {title, type, eId, scheduleId, eduStuName,pic} = options;
- let userID = "";
- let groupId = "";
- if (type == liveSources.DEFAULT) {
- userID = "student_" + eId;
- } else if (type == liveSources.GUEST) {
- userID = "guest_" + eId;
- }
- groupId = "schedule_" + scheduleId;
- const res = await User.getUserSign(userID);
- const userSig = res.userSig
- Tim.SDKAppID = res.appID;
- this.setData({
- type,
- user: {nickname: eduStuName, avatar: '', gender: 1, userID},
- groupId,
- scheduleId,
- userSig,
- pic
- })
- wx.setNavigationBarTitle({title})
- this.initLive(this);
- setTimeout(() => EduTRTC.getInstance().getSDK().getPusherInstance().start(), 800)
- },
- async reply(e) {
- let msg = getEventParam(e, "msg")
- if (!msg.trim()) {
- toast('请输入内容')
- return;
- }
- const message = Tim.getInstance().createGroupTextMsg(msg, this.data.groupId);
- this.setScroll(true)
- try {
- await Tim.getInstance().sendMessage(message);
- this.pushMessage(message)
- this.selectComponent('.bottom-reply').clear();
- } catch (e) {
- toast(e.message)
- }
- },
- async hand(e) {
- const message = Tim.getInstance().createHandMsg(this.data.groupId);
- const res = await Tim.getInstance().sendCMD(message);
- },
- async onUnload() {
- wx.setKeepScreenOn({
- keepScreenOn: false,
- })
- this.exitRoom()
- await this.logout()
- this.storeBindings.destroyStoreBindings()
- },
- changeFull(e) {
- this.setData({
- isFull: !this.data.isFull
- })
- },
- handlePusher(e) {
- console.log("handlePusher", e)
- },
- handlePlayer(e) {
- console.log("handlePlayer", e)
- let index = getDataSet(e, 'index');
- if (this.data.bigIndex == index || (index == -1 && !this.data.pusher.enableCamera)) {
- return;
- }
- this.setData({
- bigIndex: index
- })
- },
- switchCamera() {
- wx.createLivePusherContext().switchCamera({
- success() {
- },
- fail() {
- toast("切换失败")
- },
- }
- )
- },
- quitLink() {
- this.setPusherAttributesHandler({enableCamera: false, enableMic: false})
- },
- // 请保持跟 wxml 中绑定的事件名称一致
- _pusherStateChangeHandler(event) {
- console.log("_pusherStateChangeHandler", event);
- const code = getEventParam(event, "code")
- if (code == 1018) {
- this.setData({
- isLive: true
- })
- }
- EduTRTC.getInstance().getSDK().pusherEventHandler(event)
- },
- _pusherNetStatusHandler(event) {
- EduTRTC.getInstance().getSDK().pusherNetStatusHandler(event)
- },
- _pusherErrorHandler(event) {
- console.log("_pusherErrorHandler", event);
- EduTRTC.getInstance().getSDK().pusherErrorHandler(event)
- },
- _pusherBGMStartHandler(event) {
- EduTRTC.getInstance().getSDK().pusherBGMStartHandler(event)
- },
- _pusherBGMProgressHandler(event) {
- EduTRTC.getInstance().getSDK().pusherBGMProgressHandler(event)
- },
- _pusherBGMCompleteHandler(event) {
- EduTRTC.getInstance().getSDK().pusherBGMCompleteHandler(event)
- },
- _pusherAudioVolumeNotify(event) {
- EduTRTC.getInstance().getSDK().pusherAudioVolumeNotify(event)
- },
- _playerStateChange(event) {
- console.log("_playerStateChange", event);
- EduTRTC.getInstance().getSDK().playerEventHandler(event)
- },
- _playerFullscreenChange(event) {
- EduTRTC.getInstance().getSDK().playerFullscreenChange(event)
- },
- _playerNetStatus(event) {
- EduTRTC.getInstance().getSDK().playerNetStatus(event)
- },
- _playerAudioVolumeNotify(event) {
- EduTRTC.getInstance().getSDK().playerAudioVolumeNotify(event)
- },
- onShareAppMessage(options) {
- let obj = {};
- if (this.data.pic){
- obj.imageUrl = this.data.pic
- }
- return {
- path: Route.getIndexUrl(this.data.scheduleId),
- ...obj
- }
- },
- //放大pusher的方法(就是改变pusher控件的大小)
- //放大player的方法
- testPlayerFullScreen(id) {
- let livePlayerContext = wx.createLivePlayerContext(id);
- //进入全屏
- let direction = 0;
- let item = this.data.playerList[0];//item是流集合里的一个
- // // 已知问题:视频的尺寸需要等待player触发NetStatus事件才能获取到,如果进房就双击全屏,全屏后的方向有可能不对。
- if (item.netStatus && item.netStatus.videoWidth && item.netStatus.videoHeight) {
- // 如果是横视频,全屏时进行横屏处理。如果是竖视频,则为0
- direction = item.netStatus.videoWidth > item.netStatus.videoHeight ? 90 : 0
- }
- livePlayerContext.requestFullScreen({
- direction,
- success(res) {
- }
- })
- //退出全屏
- livePlayerContext.exitFullScreen({
- success(res) {
- }
- })
- }
- });
|