prevent SoundMeter from being initialized if stream has no audio tracks available

This commit is contained in:
Hanusiak Piotr
2022-02-03 12:58:31 +01:00
parent e0f5529fa7
commit 4424c7cce1
3 changed files with 63 additions and 69 deletions
+19 -22
View File
@@ -62,6 +62,7 @@ export class VideoPeer extends Peer {
this.uniqueId = "video_" + this.userId;
this.streamStore = readable<MediaStream | null>(null, (set) => {
console.log('STREAM STORE INITIALIZE');
const onStream = (stream: MediaStream | null) => {
set(stream);
};
@@ -73,36 +74,32 @@ export class VideoPeer extends Peer {
};
});
console.log('CREATE VOLUME STORE');
this.volumeStore = readable<number | null>(null, (set) => {
let timeout: ReturnType<typeof setTimeout>;
console.log('VOLUME STORE INITIALIZE');
const unsubscribe = this.streamStore.subscribe((mediaStream) => {
if (mediaStream === null) {
set(null);
return;
}
const soundMeter = new SoundMeter();
let error = false;
try {
if (mediaStream !== null && mediaStream.getAudioTracks().length > 0) {
const soundMeter = new SoundMeter();
soundMeter.connectToSource(mediaStream, new AudioContext());
} catch (errMsg) {
console.warn(errMsg);
set(null);
return;
}
timeout = setInterval(() => {
try {
set(soundMeter.getVolume());
} catch (err) {
if (!error) {
console.error(err);
error = true;
let error = false;
timeout = setInterval(() => {
try {
set(soundMeter.getVolume());
} catch (err) {
if (!error) {
console.error(err);
error = true;
}
}
}
}, 100);
}, 100);
}
});
return () => {
console.log('UNSUBSCRIBE');
unsubscribe();
clearInterval(timeout);
}