Safari中的MediaStream未能正确释放资源
P粉106715703
P粉106715703 2023-08-30 17:23:15
[JavaScript讨论组]

我正在使用AudioWorkletNode方法进行录音,所有浏览器似乎都可以正常录音。

当我录音时,录音图标会出现在标签页上,录音结束后会消失。

然而,在Safari浏览器中,标签页上会出现一个小喇叭图标(通常表示标签页正在发出声音),取代了麦克风图标。

所以我认为我可能没有关闭某些东西。

录音完成后我会执行以下操作:

// stream是MediaStream类型
if (stream)
  stream.getTracks().forEach(track => track.stop());
stream = null

流是通过以下方式创建的:

stream = await navigator.mediaDevices.getUserMedia({
  audio: options
});

是否还需要做其他操作以释放所有资源?

P粉106715703
P粉106715703

全部回复(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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号