Safari中的MediaStream未能正确释放资源
P粉106715703
2023-08-30 17:23:15
<p>我正在使用AudioWorkletNode方法进行录音,所有浏览器似乎都可以正常录音。</p>
<p>当我录音时,录音图标会出现在标签页上,录音结束后会消失。</p>
<p>然而,在Safari浏览器中,标签页上会出现一个小喇叭图标(通常表示标签页正在发出声音),取代了麦克风图标。</p>
<p>所以我认为我可能没有关闭某些东西。</p>
<p>录音完成后我会执行以下操作:</p>
<pre class="brush:php;toolbar:false;">// stream是MediaStream类型
if (stream)
stream.getTracks().forEach(track => track.stop());
stream = null</pre>
<p>流是通过以下方式创建的:</p>
<pre class="brush:php;toolbar:false;">stream = await navigator.mediaDevices.getUserMedia({
audio: options
});</pre>
<p>是否还需要做其他操作以释放所有资源?</p>
要关闭所有东西,下面的方法似乎有效。我只是通过试错找到了这个方法,因为我无法弄清楚如何让Safari告诉我它仍然持有什么: