目录
问题
解决
一、属性法
二、事件法
彩蛋
问题
大家知道通过getUserMedia接口可以拿到浏览器对应本地的音视频媒体流,那么我们有什么方法可以监听这路媒体流被释放了或者不可用了呢?
解决
其实,如果我们想直接在MediaStream类上下手是不可能,因为MediaStream没有专门的监听事件。找遍了文档,好不容易发现一个和end相关的还是一个属性值,而且马上就要废弃了。具体内容可以如下参考链接:
https://developer.mozilla.org/en-US/docs/Web/API/MediaStream
因此,想实现这个功能我们需要转换一下思路。我们知道MediaStream本身会包含若干个MediaStreamTrack,可能是视频track,也可能是音频track,或者二者都有,而这些MediaStreamTrack实例就有类似的停止监听事件了。我们可以通过MediaStreamTrack的end事件来实现这个功能。
目前有两种方法可以监听MediaStreamTrack结束不可用了。
一、属性法
通过MediaStreamTrack实例的onended属性来实现。
二、事件法
通过MediaStreamTrack实例的ended监听事件来实现。
基于上述内容,我们就可以知道MediaStream有没有被释放,只需要判断其对应的track是不是都被释放了就可以了。是不是很巧妙?!
彩蛋
为了方便大家交流,本人新建了一个微信群,欢迎扫码入群。当然也欢迎大家拉相关的小伙伴入群。群中不乏大佬存在,就职头条、快手等一线大厂。
本文分享自微信公众号 - 玩转音视频(gh_5da216074f34)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。