Skip to content

Commit 7b5e3da

Browse files
committed
fix: player volume event
1 parent 8966d61 commit 7b5e3da

File tree

4 files changed

+56
-16
lines changed

4 files changed

+56
-16
lines changed

WXMini/components/trtc-room/controller/user-controller.js

+33-6
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,21 @@ class UserController {
160160
let stream = user.streams[streamType]
161161
console.log(TAG_NAME, 'updateUserVideo start', user, streamType, stream)
162162
// 常规逻辑
163-
// 新来的stream,新增到 user.steams 和 streamList,streamList 包含所有用户的 stream
163+
// 新来的stream,新增到 user.steams 和 streamList,streamList 包含所有用户(有音频或视频)的 stream
164164
if (!stream) {
165165
// 不在 user streams 里,需要新建
166166
user.streams[streamType] = stream = new Stream({ userID, streamID, hasVideo, src, streamType })
167167
this._addStream(stream)
168168
} else {
169169
// 更新 stream 属性
170170
stream.setProperty({ hasVideo })
171+
// or
172+
// if (hasVideo) {
173+
// stream.setProperty({ hasVideo })
174+
// } else if (!stream.hasAudio) {
175+
// hasVideo == false && hasAudio == false
176+
// this._removeStream(stream)
177+
// }
171178
}
172179
// 特殊逻辑
173180
if (streamType === 'aux') {
@@ -207,19 +214,39 @@ class UserController {
207214
const userID = item.userid
208215
// 音频只跟着 stream main ,这里只修改 main
209216
const streamType = 'main'
217+
const streamID = userID + '_' + streamType
210218
const hasAudio = item.hasaudio
211219
const src = item.playurl
212220
const user = this.getUser(userID)
213221
if (user) {
214222
let stream = user.streams[streamType]
223+
// if (!stream) {
224+
// user.streams[streamType] = stream = new Stream({ streamType: streamType })
225+
// this._addStream(stream)
226+
// }
227+
228+
// 常规逻辑
229+
// 新来的stream,新增到 user.steams 和 streamList,streamList 包含所有用户的 stream
215230
if (!stream) {
216-
user.streams[streamType] = stream = new Stream({ streamType: streamType })
231+
// 不在 user streams 里,需要新建
232+
user.streams[streamType] = stream = new Stream({ userID, streamID, hasAudio, src, streamType })
217233
this._addStream(stream)
234+
} else {
235+
// 更新 stream 属性
236+
stream.setProperty({ hasAudio })
237+
// or
238+
// if (hasAudio) {
239+
// stream.setProperty({ hasAudio })
240+
// } else if (!stream.hasVideo) {
241+
// hasVideo == false && hasAudio == false
242+
// this._removeStream(stream)
243+
// }
218244
}
219-
stream.userID = userID
220-
stream.streamID = userID + '_' + streamType
221-
stream.hasAudio = hasAudio
222-
stream.src = src
245+
246+
// stream.userID = userID
247+
// stream.streamID = userID + '_' + streamType
248+
// stream.hasAudio = hasAudio
249+
// stream.src = src
223250
// 更新所属 user 的 hasXxx 值
224251
this.userList.find((item)=>{
225252
if (item.userID === userID) {

WXMini/components/trtc-room/template/grid/grid.wxml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!-- template grid -->
22
<template name='grid'>
3-
<view class="template-grid {{streamList.length < 9 ? 'stream-' + streamList.length : 'stream-8'}}">
4-
<view wx:for="{{streamList}}" wx:key="streamID" wx:if="{{item.src && (item.hasVideo || item.hasAudio)}}"
3+
<view class="template-grid {{visibleStreamList.length < 9 ? 'stream-' + visibleStreamList.length : 'stream-8'}}">
4+
<view wx:for="{{visibleStreamList}}" wx:key="streamID"
55
class="view-container player-container {{item.isVisible?'':'none'}}" data-userid="{{item.userID}}" data-streamtype="{{item.streamType}}" bindtap="_doubleTabToggleFullscreen">
66
<live-player
77
class="player"
@@ -27,7 +27,7 @@
2727
bindstatechange="_playerStateChange"
2828
bindfullscreenchange="_playerFullscreenChange"
2929
bindnetstatus="_playerNetStatus"
30-
bindaudiovolumenotify ="_playerAudioVolumeNotify"
30+
bindaudiovolumenotify="_playerAudioVolumeNotify"
3131
/>
3232
<view class="operation-bar">
3333
<view class="btn-normal" bindtap="_handleSubscribeRemoteAudio" data-user-i-d="{{item.userID}}" data-stream-type="{{item.streamType}}">

WXMini/components/trtc-room/trtc-room.js

+19-6
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Component({
4141
debugPanel: true, // 是否打开组件调试面板
4242
debug: false, // 是否打开player pusher 的调试信息
4343
streamList: [], // 用于渲染player列表,存储stram
44+
visibleStreamList: [], // 有音频或者视频的StreamList
4445
userList: [], // 扁平化的数据用来返回给用户
4546
template: '', // 不能设置默认值,当默认值和传入组件的值不一致时,iOS渲染失败
4647
cameraPosition: '', // 摄像头位置,用于debug
@@ -66,7 +67,7 @@ Component({
6667
console.log(TAG_NAME, 'created', ENV)
6768
MTA.App.init({
6869
appID: '500710685',
69-
eventID: '500710697', // 高级功能-自定义事件统计ID,配置开通后在初始化处填写
70+
eventID: '500710697',
7071
autoReport: true,
7172
statParam: true,
7273
})
@@ -241,6 +242,7 @@ Component({
241242
pusher: this.data.pusher,
242243
userList: result.userList,
243244
streamList: result.streamList,
245+
visibleStreamList: this._filterVisibleStream(event.data.streamList),
244246
}, () => {
245247
// 在销毁页面时调用,不会走到这里
246248
resolve({ userList: this.data.userList, streamList: this.data.streamList })
@@ -864,6 +866,7 @@ Component({
864866
// user.streams引用的对象和 streamList 里的是同一个
865867
this.setData({
866868
streamList: this.data.streamList,
869+
visibleStreamList: this._filterVisibleStream(this.data.streamList),
867870
}, () => {
868871
// console.log(TAG_NAME, '_setPlayerConfig complete', params, 'streamList:', this.data.streamList)
869872
resolve(params)
@@ -1071,6 +1074,7 @@ Component({
10711074
this.setData({
10721075
userList: event.data.userList,
10731076
streamList: event.data.streamList,
1077+
visibleStreamList: this._filterVisibleStream(event.data.streamList),
10741078
}, () => {
10751079
this._emitter.emit(EVENT.REMOTE_USER_LEAVE, { userID: event.data.userID })
10761080
})
@@ -1084,6 +1088,7 @@ Component({
10841088
this.setData({
10851089
userList: event.data.userList,
10861090
streamList: event.data.streamList,
1091+
visibleStreamList: this._filterVisibleStream(event.data.streamList),
10871092
}, () => {
10881093
// 完善 的stream 的 playerContext
10891094
stream.playerContext = wx.createLivePlayerContext(stream.streamID, this)
@@ -1102,6 +1107,7 @@ Component({
11021107
this.setData({
11031108
userList: event.data.userList,
11041109
streamList: event.data.streamList,
1110+
visibleStreamList: this._filterVisibleStream(event.data.streamList),
11051111
}, () => {
11061112
// 有可能先触发了退房事件,用户名下的所有stream都已清除
11071113
if (stream.userID && stream.streamType) {
@@ -1117,6 +1123,7 @@ Component({
11171123
this.setData({
11181124
userList: event.data.userList,
11191125
streamList: event.data.streamList,
1126+
visibleStreamList: this._filterVisibleStream(event.data.streamList),
11201127
}, () => {
11211128
stream.playerContext = wx.createLivePlayerContext(stream.streamID, this)
11221129
// 新增的需要触发一次play 默认属性才能生效
@@ -1133,6 +1140,7 @@ Component({
11331140
this.setData({
11341141
userList: event.data.userList,
11351142
streamList: event.data.streamList,
1143+
visibleStreamList: this._filterVisibleStream(event.data.streamList),
11361144
}, () => {
11371145
// 有可能先触发了退房事件,用户名下的所有stream都已清除
11381146
if (stream.userID && stream.streamType) {
@@ -1314,6 +1322,13 @@ Component({
13141322
// console.log(TAG_NAME, '_playerAudioVolumeNotify', event)
13151323
this._emitter.emit(EVENT.REMOTE_AUDIO_VOLUME_UPDATE, event)
13161324
},
1325+
_filterVisibleStream(streamList) {
1326+
const list = streamList.filter((item) => {
1327+
return (item.hasVideo || item.hasAudio)
1328+
})
1329+
console.log(TAG_NAME, '_filterVisibleStream list:', list)
1330+
return list
1331+
},
13171332

13181333
// ______ __ __ ______ __ __
13191334
// | \| \ / \ | \ | \ | \
@@ -1632,10 +1647,10 @@ Component({
16321647
})
16331648
if (stream.muteVideo) {
16341649
this.subscribeRemoteVideo({ userID, streamType })
1635-
this.setViewVisible({ userID, streamType, isVisible: true })
1650+
// this.setViewVisible({ userID, streamType, isVisible: true })
16361651
} else {
16371652
this.unsubscribeRemoteVideo({ userID, streamType })
1638-
this.setViewVisible({ userID, streamType, isVisible: false })
1653+
// this.setViewVisible({ userID, streamType, isVisible: false })
16391654
}
16401655
},
16411656
_debugToggleRemoteAudio(event) {
@@ -1914,9 +1929,6 @@ Component({
19141929
* grid布局, 绑定事件
19151930
*/
19161931
_bindEventGrid() {
1917-
if (this.data.config.template !== 'grid') {
1918-
return
1919-
}
19201932
// 远端音量变更
19211933
this.on(EVENT.REMOTE_AUDIO_VOLUME_UPDATE, (event) => {
19221934
const data = event.data
@@ -1933,6 +1945,7 @@ Component({
19331945
}
19341946
this.setData({
19351947
streamList: this.data.streamList,
1948+
visibleStreamList: this._filterVisibleStream(this.data.streamList),
19361949
}, () => {
19371950
})
19381951
})

WXMini/components/trtc-room/trtc-room.wxml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<template is='1v1' data="{{pusher, streamList, debug}}"></template>
88
</block>
99
<block wx:if="{{template === 'grid'}}">
10-
<template is='grid' data="{{pusher, streamList, debug, panelName}}"></template>
10+
<template is='grid' data="{{pusher, streamList, visibleStreamList, debug, panelName}}"></template>
1111
</block>
1212
<block wx:if="{{template === 'custom'}}">
1313
<template is='custom' data="{{pusher, streamList, debug}}"></template>

0 commit comments

Comments
 (0)