MediaStream引用存储在哪里?

时间:2016-11-07 22:12:56

标签: getusermedia navigator mediastream

背景/问题

使用navigator.mediaDevices.getUserMedia(constraints)我可以为各种设备获取MediaStream对象,其中包括网络摄像头和麦克风,允许您根据需要对所需数据执行任何操作。

方法getUserMedia返回Promise解析为媒体流,如果没有可用于给定约束的流(视频,音频等)则拒绝。如果我确实获得了流对象但是不要保存对MediaStream的任何引用 - 我知道垃圾收集器应该删除它。

我观察到的是没有删除流 - 例如,如果我为网络摄像头获取了一个流,即使我没有留在流中的引用,它也会一直很忙。

问题

  1. 如果我不保存对它的引用,那么MediaStream对象在哪里存储?
  2. 为什么垃圾收集器没有删除它?
  3. 基本上,为什么我的网络摄像头会一直忙碌?

1 个答案:

答案 0 :(得分:1)

MediaStream API要求您停止您获得的MediaStream实例中包含的每个轨道。在您这样做之前,媒体捕获将继续进行。



toggle := 0

F12::
    toggle := !toggle
    if (toggle){
        SetTimer, DoLoop, -100
    }
    return

DoLoop:
    Loop {
        if (!toggle){
            break
        }
        ; [Do your stuff here]
    }
    return