mirror of https://github.com/OpenVidu/openvidu.git
openvidu-browser: fix echo when calling Publisher#replaceTrack
parent
6269db8978
commit
17ff9105aa
File diff suppressed because it is too large
Load Diff
|
@ -6,7 +6,7 @@
|
|||
"jsnlog": "2.30.0",
|
||||
"mime": "3.0.0",
|
||||
"platform": "1.3.6",
|
||||
"semver": "7.3.5",
|
||||
"semver": "7.3.7",
|
||||
"uuid": "8.3.2",
|
||||
"wolfy87-eventemitter": "5.2.9",
|
||||
"events": "3.3.0",
|
||||
|
@ -14,22 +14,22 @@
|
|||
},
|
||||
"description": "OpenVidu Browser",
|
||||
"devDependencies": {
|
||||
"@types/node": "17.0.8",
|
||||
"@types/node": "18.0.0",
|
||||
"@types/platform": "1.3.4",
|
||||
"browserify": "17.0.0",
|
||||
"grunt": "1.4.1",
|
||||
"grunt": "1.5.3",
|
||||
"grunt-cli": "1.4.3",
|
||||
"grunt-contrib-copy": "1.0.0",
|
||||
"grunt-contrib-sass": "2.0.0",
|
||||
"grunt-contrib-uglify": "5.0.1",
|
||||
"grunt-contrib-uglify": "5.2.2",
|
||||
"grunt-contrib-watch": "1.1.0",
|
||||
"grunt-postcss": "0.9.0",
|
||||
"grunt-string-replace": "1.3.1",
|
||||
"grunt-string-replace": "1.3.3",
|
||||
"grunt-ts": "6.0.0-beta.22",
|
||||
"terser": "5.10.0",
|
||||
"terser": "5.14.1",
|
||||
"tsify": "5.0.4",
|
||||
"tslint": "6.1.3",
|
||||
"typedoc": "0.22.10",
|
||||
"typedoc": "0.22.17",
|
||||
"typescript": "4.5.4"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
|
|
|
@ -741,8 +741,10 @@ export class Publisher extends StreamManager {
|
|||
*/
|
||||
initializeVideoReference(mediaStream: MediaStream) {
|
||||
this.videoReference = document.createElement('video');
|
||||
this.videoReference.setAttribute('muted', 'true');
|
||||
this.videoReference.style.display = 'none';
|
||||
this.videoReference.muted = true;
|
||||
this.videoReference.autoplay = true;
|
||||
this.videoReference.controls = false;
|
||||
if (platform.isSafariBrowser() || (platform.isIPhoneOrIPad() && (platform.isChromeMobileBrowser() || platform.isEdgeMobileBrowser() || platform.isOperaMobileBrowser() || platform.isFirefoxMobileBrowser()))) {
|
||||
this.videoReference.setAttribute('playsinline', 'true');
|
||||
}
|
||||
|
@ -750,13 +752,13 @@ export class Publisher extends StreamManager {
|
|||
if (!!this.firstVideoElement) {
|
||||
this.createVideoElement(this.firstVideoElement.targetElement, <VideoInsertMode>this.properties.insertMode);
|
||||
}
|
||||
this.videoReference.srcObject = mediaStream;
|
||||
this.videoReference.srcObject = this.stream.getMediaStream();
|
||||
}
|
||||
|
||||
/**
|
||||
* @hidden
|
||||
*/
|
||||
async replaceTrackInMediaStream(track: MediaStreamTrack, updateLastConstraints: boolean): Promise<void> {
|
||||
replaceTrackInMediaStream(track: MediaStreamTrack, updateLastConstraints: boolean): void {
|
||||
const mediaStream: MediaStream = this.stream.displayMyRemote() ? this.stream.localMediaStreamWhenSubscribedToRemote! : this.stream.getMediaStream();
|
||||
let removedTrack: MediaStreamTrack;
|
||||
if (track.kind === 'video') {
|
||||
|
@ -767,8 +769,9 @@ export class Publisher extends StreamManager {
|
|||
} else {
|
||||
removedTrack = mediaStream.getAudioTracks()[0];
|
||||
}
|
||||
mediaStream.removeTrack(removedTrack);
|
||||
removedTrack.enabled = false;
|
||||
removedTrack.stop();
|
||||
mediaStream.removeTrack(removedTrack);
|
||||
mediaStream.addTrack(track);
|
||||
if (track.kind === 'video' && this.stream.isLocalStreamPublished && updateLastConstraints) {
|
||||
this.openvidu.sendNewVideoDimensionsIfRequired(this, 'trackReplaced', 50, 30);
|
||||
|
|
|
@ -557,7 +557,7 @@ export class Stream {
|
|||
const mediaStreamClone = this.virtualBackgroundSourceElements!.mediaStreamClone;
|
||||
if (!isDisposing) {
|
||||
if (this.streamManager.remote) {
|
||||
await this.streamManager.replaceTrackInMediaStream(mediaStreamClone.getVideoTracks()[0], false);
|
||||
this.streamManager.replaceTrackInMediaStream(mediaStreamClone.getVideoTracks()[0], false);
|
||||
} else {
|
||||
await (this.streamManager as Publisher).replaceTrackAux(mediaStreamClone.getVideoTracks()[0], false);
|
||||
}
|
||||
|
|
|
@ -529,7 +529,7 @@ export abstract class StreamManager extends EventDispatcher {
|
|||
/**
|
||||
* @hidden
|
||||
*/
|
||||
abstract replaceTrackInMediaStream(track: MediaStreamTrack, updateLastConstraints: boolean): Promise<void>;
|
||||
abstract replaceTrackInMediaStream(track: MediaStreamTrack, updateLastConstraints: boolean): void;
|
||||
|
||||
/* Private methods */
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ export class Subscriber extends StreamManager {
|
|||
/**
|
||||
* @hidden
|
||||
*/
|
||||
async replaceTrackInMediaStream(track: MediaStreamTrack, updateLastConstraints: boolean): Promise<void> {
|
||||
replaceTrackInMediaStream(track: MediaStreamTrack, updateLastConstraints: boolean): void {
|
||||
const mediaStream: MediaStream = this.stream.getMediaStream();
|
||||
let removedTrack: MediaStreamTrack;
|
||||
if (track.kind === 'video') {
|
||||
|
|
Loading…
Reference in New Issue