Heim  >  Fragen und Antworten  >  Hauptteil

MediaStream in Safari gibt Ressourcen nicht korrekt frei

<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粉106715703P粉106715703386 Tage vor459

Antworte allen(1)Ich werde antworten

  • P粉536909186

    P粉5369091862023-08-31 10:10:19

    要关闭所有东西,下面的方法似乎有效。我只是通过试错找到了这个方法,因为我无法弄清楚如何让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

    Antwort
    0
  • StornierenAntwort