我正在测试 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);
}
分离媒体流(Chrome):
webRTCAdapter.detachMediaStream = function(element) {
console.log("Detaching media stream");
element.pause();
element.src = '';
element.parentNode.removeChild(element);
};
html:
<video id="localVideo" width="100%" autoplay="autoplay" user-media="user-media"></video>
detachMediaStream
被执行(我看到了必要的日志console.log
),但相机没有关闭。
知道如何解决这个问题吗?我应该以某种方式卸载元素吗?