相关疑难解决方法(0)

停止/关闭由navigator.getUserMedia打开的网络摄像头

我使用以下JavaScript代码打开了一个网络摄像头: navigator.getUserMedia

是否有任何JavaScript代码可以停止或关闭网络摄像头?感谢大家.

javascript html5 html5-video webrtc

107
推荐指数
8
解决办法
10万
查看次数

如何正确卸载/销毁VIDEO元素

我正在开发一个实时媒体浏览/回放应用程序,它使用<video>浏览器中的对象进行回放(如果可用).

我正在使用直接javascript和jQuery的混合,

我关心的是记忆.应用程序永远不会在窗口中重新加载,并且用户可以观看许多视频,因此随着时间的推移,内存管理成为一个大问题.在今天的测试中,我看到内存配置文件按照每个后续加载流式传输的视频大小跳跃,并且永远不会回落到基线.

我尝试了以下相同的结果:

1 - 清空包含已创建元素的父容器,例如:

$(container_selector).empty();
Run Code Online (Sandbox Code Playgroud)

2 - 暂停并删除匹配"视频"的子项,然后清空父容器:

$(container_selector).children().filter("video").each(function(){
    this.pause();
    $(this).remove();
});
$(container_selector).empty();
Run Code Online (Sandbox Code Playgroud)

有没有其他人遇到这个问题,有没有更好的方法来做到这一点?

javascript jquery html5 dom memory-management

46
推荐指数
4
解决办法
6万
查看次数

在AngularJs中路由更改后,HTML5相机不会关闭

我正在测试HTML5的视频功能.通过指令userMedia,我可以通过我的MacBook上的相机开启navigator.getUserMedia()(实际上通过适配器使其跨浏览器 - 至少是那些支持它的人).

但是当我改变我的时候$route,我不再看到自己了(欢呼),但是相机没有关闭(绿灯保持亮起).只刷新页面会重置所有内容(这是正常的).

我希望看到改变$location.path()就能解决问题:

        link: function(scope, elm, attrs, ctrl) {
            ...
            var path = $location.path();
            scope.$watch(function() {
                return $location.path();
            }, function(value) {
                if (value && value !== path) {
                    $log.info('Location changed, switching off camera');
                    webRTCAdapter.detachMediaStream(elm[0]);
                }
            }, true);
        }
Run Code Online (Sandbox Code Playgroud)

detachMediaStream(Chrome):

    webRTCAdapter.detachMediaStream = function(element) {
        console.log("Detaching media stream");
        element.pause();
        element.src = '';
        element.parentNode.removeChild(element);
    };
Run Code Online (Sandbox Code Playgroud)

HTML:

<video id="localVideo" width="100%" autoplay="autoplay" user-media="user-media"></video>
Run Code Online (Sandbox Code Playgroud)

detachMediaStream执行(我看到必要的登录console.log),但相机没有关闭.

不知道怎么解决这个问题?我应该以某种方式卸载元素吗?

javascript video html5 camera angularjs

6
推荐指数
1
解决办法
5841
查看次数