Skip to content

Commit 9ea2d09

Browse files
authored
Merge pull request #94 from chrisnyoder/main
Unmuting now publish track if not already publishing
2 parents 731147b + f10b1f1 commit 9ea2d09

File tree

2 files changed

+59
-32
lines changed

2 files changed

+59
-32
lines changed

Assets/WebGLTemplates/AgoraTemplate/AgoraWebSDK/libs/agorachannel.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ class AgoraChannel {
206206
const vad = 0;
207207
const channel_str = this.channelId;
208208
result.forEach(function (volume, index) {
209-
console.log(`${index} UID ${volume.uid} Level ${volume.level}`);
209+
//console.log(`${index} UID ${volume.uid} Level ${volume.level}`);
210210

211211
if (volume.level > total) {
212212
total = volume.level;
@@ -280,9 +280,8 @@ class AgoraChannel {
280280
if (this.client_role === 1 && this.videoEnabled) {
281281
await this.setupLocalVideoTrack();
282282
if (localTracks.videoTrack != undefined) {
283-
localTracks.videoTrack.play("local-player");
283+
await this.client.publish(localTracks.videoTrack);
284284
}
285-
await this.client.publish(localTracks.videoTrack);
286285
this.is_publishing = true;
287286
}
288287

@@ -608,8 +607,14 @@ class AgoraChannel {
608607
await this.client.unpublish(localTracks.audioTrack);
609608
}
610609
} else {
611-
if (localTracks.audioTrack) {
610+
if(localTracks.audioTrack) {
612611
await this.client.publish(localTracks.audioTrack);
612+
} else {
613+
await this.setupLocalAudioTrack();
614+
if (localTracks.audioTrack != undefined) {
615+
await this.client.publish(localTracks.audioTrack);
616+
}
617+
this.is_publishing = true;
613618
}
614619
}
615620
this.audioEnabled = !mute;
@@ -629,16 +634,15 @@ class AgoraChannel {
629634
AgoraRTC.createCameraVideoTrack(),
630635
]);
631636
localTracks.videoTrack.play("local-player");
632-
if (this.is_publishing) {
633-
await this.client.publish(localTracks.videoTrack);
634-
}
637+
this.is_publishing = true;
638+
await this.client.publish(localTracks.videoTrack);
635639
}
636640
this.videoEnabled = !mute;
637641
}
638642
}
643+
639644
muteRemoteAudioStream(uid, mute) {
640645
Object.keys(this.remoteUsers).forEach((uid2) => {
641-
642646
if (uid2 == uid) {
643647
if (mute == true) {
644648
this.unsubscribe(this.remoteUsers[uid], "audio");

Assets/WebGLTemplates/AgoraTemplate/AgoraWebSDK/libs/clientmanager.js

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -435,34 +435,17 @@ class ClientManager {
435435
// Help function for JoinChannel
436436
async processJoinChannelAVTrack() {
437437
if (this.videoEnabled && this.isHosting()) {
438-
[localTracks.videoTrack] = await Promise.all([
439-
AgoraRTC.createCameraVideoTrack(this._customVideoConfiguration)
440-
]);
441-
currentVideoDevice = wrapper.getCameraDeviceIdFromDeviceName(
442-
localTracks.videoTrack._deviceName
443-
);
438+
await this.setupLocalVideoTrack();
444439
}
445440

446441
if (this.audioEnabled && this.isHosting()) {
447-
[localTracks.audioTrack] = await Promise.all([
448-
AgoraRTC.createMicrophoneAudioTrack()
449-
]);
450-
currentAudioDevice = wrapper.getMicrophoneDeviceIdFromDeviceName(
451-
localTracks.audioTrack._deviceName
452-
);
442+
await this.setupLocalAudioTrack();
453443
}
444+
454445
event_manager.raiseGetCurrentVideoDevice();
455446
event_manager.raiseGetCurrentAudioDevice();
456447
event_manager.raiseGetCurrentPlayBackDevice();
457448

458-
// videoTrack exists implies videoEnabled
459-
if (localTracks.videoTrack) {
460-
localTracks.videoTrack.play("local-player", {
461-
fit: "cover",
462-
mirror: mlocal,
463-
});
464-
}
465-
466449
$("#local-player-name").text(`localVideo(${this.options.uid})`);
467450
if (this.isHosting() && this._inChannel) {
468451
for (var trackName in localTracks) {
@@ -474,6 +457,32 @@ class ClientManager {
474457
}
475458
}
476459

460+
async setupLocalVideoTrack(){
461+
[localTracks.videoTrack] = await Promise.all([
462+
AgoraRTC.createCameraVideoTrack(this._customVideoConfiguration)
463+
]);
464+
currentVideoDevice = wrapper.getCameraDeviceIdFromDeviceName(
465+
localTracks.videoTrack._deviceName
466+
);
467+
468+
// videoTrack exists implies videoEnabled
469+
if (localTracks.videoTrack) {
470+
localTracks.videoTrack.play("local-player", {
471+
fit: "cover",
472+
mirror: mlocal,
473+
});
474+
}
475+
}
476+
477+
async setupLocalAudioTrack(){
478+
[localTracks.audioTrack] = await Promise.all([
479+
AgoraRTC.createMicrophoneAudioTrack()
480+
]);
481+
currentAudioDevice = wrapper.getMicrophoneDeviceIdFromDeviceName(
482+
localTracks.audioTrack._deviceName
483+
);
484+
}
485+
477486
async setClientRole(role, optionLevel) {
478487
if (this.client) {
479488
var wasAudience = (this.client_role == 2);
@@ -515,12 +524,22 @@ class ClientManager {
515524
// can still be on
516525
// if wanting both off, call disableLocalVideo
517526
async muteLocalVideoStream(mute) {
518-
if (localTracks.videoTrack) {
527+
if (this.client && !this.is_screensharing) {
519528
if (mute) {
520-
await this.client.unpublish(localTracks.videoTrack);
529+
if (localTracks.videoTrack) {
530+
localTracks.videoTrack.stop();
531+
localTracks.videoTrack.close();
532+
await this.client.unpublish(localTracks.videoTrack);
533+
}
521534
} else {
522-
await this.client.publish(localTracks.videoTrack);
535+
if (localTracks.videoTrack) {
536+
await this.client.publish(localTracks.videoTrack);
537+
} else {
538+
await this.setupLocalVideoTrack();
539+
await this.client.publish(localTracks.videoTrack);
540+
}
523541
}
542+
this.videoEnabled = !mute;
524543
}
525544
}
526545

@@ -532,8 +551,12 @@ class ClientManager {
532551
} else {
533552
if (localTracks.audioTrack) {
534553
await this.client.publish(localTracks.audioTrack);
554+
} else {
555+
await this.setupLocalAudioTrack();
556+
await this.client.publish(localTracks.audioTrack);
535557
}
536558
}
559+
this.audioEnabled = !mute;
537560
}
538561

539562
async enableLocalVideo(enabled) {
@@ -1003,4 +1026,4 @@ class ClientManager {
10031026
event_manager.raiseOnClientVideoSizeChanged(uid, width, height);
10041027
});
10051028
}
1006-
}
1029+
}

0 commit comments

Comments
 (0)