MediaStream dans Safari ne parvient pas à libérer correctement les ressources
P粉106715703
P粉106715703 2023-08-30 17:23:15
0
1
528
<p>J'utilise la méthode AudioWorkletNode pour enregistrer et tous les navigateurs semblent enregistrer correctement. </p> <p>Lorsque j'enregistre, l'icône d'enregistrement apparaît sur l'onglet et disparaît à la fin de l'enregistrement. </p> <p> Cependant, dans Safari, une petite icône de haut-parleur (indiquant généralement que l'onglet émet du son) apparaîtra sur l'onglet à la place de l'icône du microphone. </p> <p>Je pense donc que je n’ai peut-être pas fermé quelque chose. </p> <p>Une fois l'enregistrement terminé, je ferai ce qui suit :</p> <pre class="brush:php;toolbar:false;">// le flux est un type MediaStream si (flux) stream.getTracks().forEach(track => track.stop()); flux = null</pre> <p>Le flux est créé via : </p> <pre class="brush:php;toolbar:false;">stream = wait navigator.mediaDevices.getUserMedia({ audio : options });</pré> <p>Y a-t-il autre chose à faire pour libérer toutes les ressources ? </p>
P粉106715703
P粉106715703

répondre à tous(1)
P粉536909186

Pour tout désactiver, la méthode ci-dessous semble fonctionner. Je viens de trouver ceci par essais et erreurs parce que je n'arrivais pas à comprendre comment faire en sorte que Safari me dise ce qu'il contient encore :

// 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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal