From a6ced432831aa514750e4ba6b1ca187d08135880 Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Sun, 21 May 2023 10:32:53 +0800 Subject: [PATCH] =?UTF-8?q?[*]=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taoyao/media/client/LocalClient.java | 4 +- taoyao-client-web/src/App.vue | 1 + taoyao-client-web/src/components/Taoyao.js | 48 +++++++++++++------ 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/LocalClient.java b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/LocalClient.java index 5dced68..cfafe90 100644 --- a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/LocalClient.java +++ b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/LocalClient.java @@ -160,9 +160,7 @@ public class LocalClient extends RoomClient { } Log.i(RemoteClient.class.getSimpleName(), "关闭本地终端生产者:" + this.clientId + " - " + producerId); synchronized (this.mediaStream) { - final Long pointer = this.tracks.get(producerId); - // TODO:测试remove方法 -// final Long pointer = this.tracks.remove(producerId); + final Long pointer = this.tracks.remove(producerId); if(pointer == null) { return; } diff --git a/taoyao-client-web/src/App.vue b/taoyao-client-web/src/App.vue index dbbb2dc..03748ca 100644 --- a/taoyao-client-web/src/App.vue +++ b/taoyao-client-web/src/App.vue @@ -161,6 +161,7 @@ export default { }, async sessionCall() { this.taoyao.sessionCall(this.room.callClientId); + // this.taoyao.sessionCall(this.room.callClientId, false, false); this.roomVisible = false; }, async roomCreate() { diff --git a/taoyao-client-web/src/components/Taoyao.js b/taoyao-client-web/src/components/Taoyao.js index 9deb422..9050055 100644 --- a/taoyao-client-web/src/components/Taoyao.js +++ b/taoyao-client-web/src/components/Taoyao.js @@ -253,6 +253,10 @@ class Session { sessionId; // 本地媒体流 localStream; + // 是否打开音频 + audioEnabled; + // 是否打开视频 + videoEnabled; // 本地音频 localAudioTrack; localAudioEnabled; @@ -272,31 +276,35 @@ class Session { name, clientId, sessionId, + audioEnabled, + videoEnabled }) { this.id = sessionId; this.name = name; this.closed = false; this.clientId = clientId; this.sessionId = sessionId; + this.audioEnabled = audioEnabled; + this.videoEnabled = videoEnabled; } async pause(type) { - if(type === 'audio') { + if(type === 'audio' && this.localAudioTrack) { this.localAudioEnabled = false; this.localAudioTrack.enabled = false; } - if(type === 'video') { + if(type === 'video' && this.localVideoTrack) { this.localVideoEnabled = false; this.localVideoTrack.enabled = false; } } async resume(type) { - if(type === 'audio') { + if(type === 'audio' && this.localAudioTrack) { this.localAudioEnabled = true; this.localAudioTrack.enabled = true; } - if(type === 'video') { + if(type === 'video' && this.localVideoTrack) { this.localVideoEnabled = true; this.localVideoTrack.enabled = true; } @@ -2243,9 +2251,11 @@ class Taoyao extends RemoteClient { /** * 发起会话 * - * @param {*} clientId 接收者ID + * @param {*} clientId 接收者ID + * @param {*} audioEnabled 是否打开音频 + * @param {*} videoEnabled 是否打开视频 */ - async sessionCall(clientId) { + async sessionCall(clientId, audioEnabled = true, videoEnabled = true) { const me = this; if (!clientId) { this.callbackError("无效终端"); @@ -2257,7 +2267,7 @@ class Taoyao extends RemoteClient { }) ); const { name, sessionId } = response.body; - const session = new Session({name, clientId, sessionId}); + const session = new Session({name, clientId, sessionId, audioEnabled, videoEnabled}); this.sessionClients.set(sessionId, session); } @@ -2404,15 +2414,23 @@ class Taoyao extends RemoteClient { // TODO:重连 } } - const localStream = await me.getStream(); - session.localStream = localStream; + const localStream = await me.getStream(); + session.localStream = localStream; session.peerConnection = peerConnection; - session.localAudioTrack = localStream.getAudioTracks()[0]; - session.localAudioEnabled = true; - session.localVideoTrack = localStream.getVideoTracks()[0]; - session.localVideoEnabled = true; - await session.peerConnection.addTrack(session.localAudioTrack, localStream); - await session.peerConnection.addTrack(session.localVideoTrack, localStream); + if(session.audioEnabled) { + session.localAudioTrack = localStream.getAudioTracks()[0]; + session.localAudioEnabled = true; + await session.peerConnection.addTrack(session.localAudioTrack, localStream); + } else { + session.localAudioEnabled = false; + } + if(session.videoEnabled) { + session.localVideoTrack = localStream.getVideoTracks()[0]; + session.localVideoEnabled = true; + await session.peerConnection.addTrack(session.localVideoTrack, localStream); + } else { + session.localVideoEnabled = false; + } return peerConnection; }