|
|
@@ -5,22 +5,13 @@
|
|
|
<zego-local-view v-if="videoShow" :viewMode="publisherViewModeIndex"
|
|
|
style="width: 100%; flex: 1; border: 1px solid #0000; z-index: 20">
|
|
|
</zego-local-view>
|
|
|
-
|
|
|
- <zego-remote-view v-else :viewMode="publisherViewModeIndex"
|
|
|
- style="height: 403.84rpx;flex: 1; z-index: 20">
|
|
|
- </zego-remote-view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 服务器传来的预览图 -->
|
|
|
- <!-- <view class="video_you" @click="changeShow"> -->
|
|
|
- <view class="video_you">
|
|
|
- <zego-remote-view v-if="videoShow" :viewMode="publisherViewModeIndex"
|
|
|
- style="height: 403.84rpx;flex: 1; z-index: 20">
|
|
|
+ <view class="video_you" v-if="allUserViewObjectList.length > 0" v-for="(item, index) in allUserViewObjectList" :key="item.userID">
|
|
|
+ <zego-remote-view v-if="item.streamID" :streamID="item.streamID" :viewMode="item.viewMode"
|
|
|
+ style="height: 403.84rpx; flex: 1;">
|
|
|
</zego-remote-view>
|
|
|
-
|
|
|
- <zego-local-view v-else :viewMode="publisherViewModeIndex"
|
|
|
- style="width: 100%; flex: 1; border: 1px solid #0000; z-index: 20">
|
|
|
- </zego-local-view>
|
|
|
</view>
|
|
|
|
|
|
<view class="video_btn">
|
|
|
@@ -39,8 +30,6 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
- <!-- <u-button type="error" class="offBtn" @click="offVideo()" size="mini" text="关闭">
|
|
|
- </u-button> -->
|
|
|
<image @click="offVideo()" style="width: 50px; height: 50px; margin: 0 0 0 330rpx;"
|
|
|
src="../../static/image/10.png" mode=""></image>
|
|
|
</view>
|
|
|
@@ -72,24 +61,37 @@
|
|
|
|
|
|
// 即构
|
|
|
publisherViewModeIndex: 0, // 本地预览图
|
|
|
- serveViewModeIndex: 0, // 服务器拉流预览图
|
|
|
+ viewModeA: 0, // 服务器预览图
|
|
|
+ serveViewModeIndex: "", // 服务器拉流预览图
|
|
|
engine: undefined,
|
|
|
videoObj: null,
|
|
|
userid: "Uni" + Math.floor(Math.random() * 1000000).toString(),
|
|
|
isPublishingStream: false,
|
|
|
shotShow: false, // 翻转镜头
|
|
|
videoShow: true, // 切换视频显示
|
|
|
-
|
|
|
- // 消息提醒
|
|
|
- // typeVide: '',
|
|
|
- // videoMsg: "",
|
|
|
+
|
|
|
+ allStreamList: [],
|
|
|
+ allUserViewObjectList: [],
|
|
|
}
|
|
|
},
|
|
|
components: {
|
|
|
ZegoLocalView: ZegoLocalView,
|
|
|
ZegoRemoteView: ZegoRemoteView
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
+ watch: {
|
|
|
+ allUserViewObjectList(val) {
|
|
|
+ if (val.length > 0) {
|
|
|
+ val.forEach((item) => {
|
|
|
+ if (item.streamID) {
|
|
|
+ this.tensile(item)
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
methods: {
|
|
|
// 即构 - 视频通话 初始化
|
|
|
async setup() {
|
|
|
@@ -118,7 +120,7 @@
|
|
|
this.shotShow = !this.shotShow
|
|
|
this.engine.useFrontCamera(this.shotShow)
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
// 切换视频显示
|
|
|
changeShow() {
|
|
|
this.videoShow = !this.videoShow
|
|
|
@@ -128,7 +130,7 @@
|
|
|
this.publishBtnName = "Stop Publishing";
|
|
|
console.log(this.videoShow)
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
// 即构 - 视频通话 监听房间
|
|
|
addListeners() {
|
|
|
// 房间状态变化通知
|
|
|
@@ -152,75 +154,122 @@
|
|
|
|
|
|
// 房间用户变化通知
|
|
|
this.engine.on("roomUserUpdate", (roomID, updateType, userList) => {
|
|
|
- // console.log('房间用户变化通知')
|
|
|
- // console.log(updateType)
|
|
|
- // console.log(userList)
|
|
|
- // if (updateType == "ADD") {
|
|
|
- // console.log('hsdjshadjh')
|
|
|
- // } else if (updateType == 1 ) {
|
|
|
- // console.log('几十块的教科书')
|
|
|
- // this.offVideo()
|
|
|
- // }
|
|
|
console.log(updateType)
|
|
|
console.log(userList)
|
|
|
console.log("有其他用户进出房间");
|
|
|
+ if (updateType == ZegoUpdateType.Add) {
|
|
|
+ for (let user of userList) {
|
|
|
+ for (let stream of this.allStreamList) {
|
|
|
+ if (user.userID == stream.user.userID) {
|
|
|
+ user.streamID = stream.streamID;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.allUserViewObjectList.push(user);
|
|
|
+ }
|
|
|
+ } else if (updateType == ZegoUpdateType.Delete) {
|
|
|
+ this.allUserViewObjectList = this.allUserViewObjectList.filter((object) => {
|
|
|
+ for (let user of userList) {
|
|
|
+ if (user.userID == object.userID) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (updateType == "1") {
|
|
|
+ // 有其他用户退出房间
|
|
|
+ this.offVideo()
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
// 房间内其他用户推的流变化通知
|
|
|
this.engine.on("roomStreamUpdate", (roomID, updateType, streamList) => {
|
|
|
- console.log('房间内其他用户推的流变化通知')
|
|
|
- console.log(updateType)
|
|
|
- console.log(streamList)
|
|
|
-
|
|
|
- // 房间内其他用户音视频流变化的通知
|
|
|
- console.log("有其他用户开启或关闭音频");
|
|
|
- if (updateType == "ADD") {
|
|
|
- // 流新增,开始拉流
|
|
|
- this.tensile(streamList[0].streamID);
|
|
|
- } else if (updateType == "DELETE") {
|
|
|
- // 流删除,停止拉流
|
|
|
- this.notTensile(streamList[0].streamID);
|
|
|
+ // if (updateType == "0") {
|
|
|
+ // // 流新增,开始拉流
|
|
|
+ // this.tensile(streamList[0].streamID)
|
|
|
+ // } else if (updateType == "1") {
|
|
|
+ // // 流删除,停止拉流
|
|
|
+ // this.notTensile(streamList[0].streamID);
|
|
|
+ // }
|
|
|
+
|
|
|
+ console.log('---------updateType-----------', updateType)
|
|
|
+ console.log('---------streamList-----------', streamList)
|
|
|
+ console.log('---------ZegoUpdateType-----------', ZegoUpdateType)
|
|
|
+ console.log('---------ZegoUpdateType.Add-----------', ZegoUpdateType.Add)
|
|
|
+ console.log('---------ZegoUpdateType.Delete-----------', ZegoUpdateType.Delete)
|
|
|
+ console.log('---------allUserViewObjectList-----------', this.allUserViewObjectList)
|
|
|
+
|
|
|
+ if (updateType == ZegoUpdateType.Add) {
|
|
|
+ for (let object of this.allUserViewObjectList) {
|
|
|
+ for (let stream of streamList) {
|
|
|
+ if (object.userID == stream.user.userID) {
|
|
|
+ object.streamID = stream.streamID;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.allStreamList = this.allStreamList.concat(streamList);
|
|
|
+ } else if (updateType == ZegoUpdateType.Delete) {
|
|
|
+ for (let object of this.allUserViewObjectList) {
|
|
|
+ for (let stream of streamList) {
|
|
|
+ if (object.streamID == stream.streamID) {
|
|
|
+ object.streamID = undefined;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.allStreamList = this.allStreamList.filter((object) => {
|
|
|
+ for (let stream of streamList) {
|
|
|
+ if (object.streamID == stream.streamID) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// 房间内在线用户数量回调
|
|
|
// this.engine.on("roomOnlineUserCountUpdate", (roomID, count) => {
|
|
|
// // console.log(roomID)
|
|
|
- // // console.log(count)
|
|
|
- // // console.log('>?>>>>>>>>>>>>>>>>>>>>>>>在线用户有变化')
|
|
|
+ // console.log(count)
|
|
|
+ // console.log('>?>>>>>>>>>>>>>>>>>>>>>>>在线用户有变化')
|
|
|
// });
|
|
|
|
|
|
// 拉流质量回调
|
|
|
- // this.engine.on("playerQualityUpdate", (streamID, quality) => {
|
|
|
- // console.log('拉流质量回调')
|
|
|
- // });
|
|
|
-
|
|
|
- // // 推流质量回调
|
|
|
- // this.engine.on("publisherQualityUpdate", (streamID, quality) => {
|
|
|
- // // console.log('推流质量回调')
|
|
|
- // });
|
|
|
-
|
|
|
- // // 采集视频大小变更回调
|
|
|
- // this.engine.on("publisherVideoSizeChanged", (width, height, channel) => {
|
|
|
- // // console.log('采集视频大小变更回调')
|
|
|
- // });
|
|
|
+ this.engine.on("playerQualityUpdate", (streamID, quality) => {
|
|
|
+ console.log('拉流质量回调')
|
|
|
+ });
|
|
|
|
|
|
- // // 拉流分辨率变更通知
|
|
|
- // this.engine.on("playerVideoSizeChanged", (streamID, width, height) => {
|
|
|
- // // console.log('拉流分辨率变更通知')
|
|
|
- // });
|
|
|
+ // 拉流后的事件回调
|
|
|
+ this.engine.on("playerStateUpdate", (streamID, state, errorCode, extendedData) => {
|
|
|
+ console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' + '拉流后的事件触发了')
|
|
|
+ })
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
// 拉流
|
|
|
- tensile(roomId) {
|
|
|
- this.engine.instance().startPlayingStream(roomId)
|
|
|
- },
|
|
|
+ // tensile(roomId) {
|
|
|
+ // console.log('拉流进入了啊')
|
|
|
+ // console.log(roomId)
|
|
|
+ // this.serveViewModeIndex = roomId
|
|
|
+ // console.log(this.serveViewModeIndex)
|
|
|
+ // this.engine.startPlayingStream(roomId);
|
|
|
+ // },
|
|
|
|
|
|
+ tensile(item) {
|
|
|
+ console.log(this.allStreamList)
|
|
|
+ console.log(item)
|
|
|
+ console.log(this.allUserViewObjectList)
|
|
|
+ this.engine.startPlayingStream(item.streamID)
|
|
|
+ },
|
|
|
+
|
|
|
// 停止拉流
|
|
|
notTensile(roomId) {
|
|
|
- this.engine.instance().stopPlayingStream(roomId)
|
|
|
+ console.log(roomId)
|
|
|
+ this.serveViewModeIndex = roomId
|
|
|
+ console.log(this.serveViewModeIndex)
|
|
|
+ this.engine.stopPlayingStream(roomId)
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
// 推流 - 展示视图 - 本地视频流
|
|
|
onPublish() {
|
|
|
// 设置视频配置
|
|
|
@@ -239,9 +288,6 @@
|
|
|
}
|
|
|
this.isPublishingStream = !this.isPublishingStream;
|
|
|
},
|
|
|
-
|
|
|
- // 停止推流
|
|
|
- // notTensile() {},
|
|
|
|
|
|
// 挂断退出
|
|
|
offVideo() {
|
|
|
@@ -253,13 +299,13 @@
|
|
|
})
|
|
|
setTimeout(() => {
|
|
|
uni.navigateBack({
|
|
|
- delta: 1
|
|
|
+ delta: 1
|
|
|
})
|
|
|
}, 1500)
|
|
|
// uni.redirectTo({
|
|
|
// url: "/pages/response/index"
|
|
|
// })
|
|
|
-
|
|
|
+
|
|
|
},
|
|
|
},
|
|
|
|