MediaStream in Safari gibt Ressourcen nicht korrekt frei
P粉106715703
P粉106715703 2023-08-30 17:23:15
0
1
510
<p>Ich verwende die AudioWorkletNode-Methode zum Aufzeichnen und alle Browser scheinen einwandfrei aufzuzeichnen. </p> <p>Wenn ich aufzeichne, erscheint das Aufnahmesymbol auf der Registerkarte und verschwindet, wenn die Aufnahme endet. </p> <p> In Safari wird jedoch anstelle des Mikrofonsymbols ein kleines Lautsprechersymbol (das normalerweise anzeigt, dass der Tab Ton ausgibt) angezeigt. </p> <p>Ich glaube also, dass ich etwas nicht abgeschlossen habe. </p> <p>Nach Abschluss der Aufnahme werde ich Folgendes tun:</p> <pre class="brush:php;toolbar:false;">// stream ist ein MediaStream-Typ if(stream) stream.getTracks().forEach(track => track.stop()); stream = null</pre> <p>Der Stream wird erstellt über: </p> <pre class="brush:php;toolbar:false;">stream = waiting navigator.mediaDevices.getUserMedia({ Audio: Optionen });</pre> <p>Ist noch etwas erforderlich, um alle Ressourcen freizugeben? </p>
P粉106715703
P粉106715703

Antworte allen(1)
P粉536909186

要关闭所有东西,下面的方法似乎有效。我只是通过试错找到了这个方法,因为我无法弄清楚如何让Safari告诉我它仍然持有什么:

// stream : MediaStream
// sourceNode : MediaStreamAudioSourceNode
// recorderNode : AudioWorkletNode

const tracks = stream.getTracks();
tracks.forEach((track) => {
  track.stop();
  stream.removeTrack(track)
});
stream = null

sourceNode.disconnect();
sourceNode = undefined

recorderNode.disconnect();
recorderNode = undefined
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage