Kamera HTML5 nie wyłącza się po zmianie trasy w AngularJs
Testuję możliwości wideo HTML5. Z dyrektywąuserMedia
, Mogę włączyć aparat na moim MacBooku przeznavigator.getUserMedia()
(w rzeczywistości za pośrednictwem adaptera, aby sprawić, by był on przeglądarką - przynajmniej dla tych, którzy go obsługują).
Ale kiedy zmieniam moje$route
, Już nie widzę siebie (hurra), ale aparat się nie wyłącza (zielone światło pozostaje włączone). Tylko odświeżenie strony powoduje zresetowanie wszystkiego (co jest normalne).
Miałem nadzieję, że obserwuję zmianę$location.path()
zrobiłby to:
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);
}
detachMediaStream (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
zostaje wykonany (widzę niezbędne dzienniki)console.log
), ale aparat się nie wyłącza.
Masz jakiś pomysł, jak to rozwiązać? Czy powinienem jakoś rozładować element?