Otworzyłem kamerę internetową, używając następującego kodu JavaScript: navigator.getUserMedia
Czy istnieje kod JavaScript, aby zatrzymać lub zamknąć kamerę internetową? Dziękuję wszystkim.
źródło
Otworzyłem kamerę internetową, używając następującego kodu JavaScript: navigator.getUserMedia
Czy istnieje kod JavaScript, aby zatrzymać lub zamknąć kamerę internetową? Dziękuję wszystkim.
EDYTOWAĆ
Od czasu opublikowania tej odpowiedzi interfejs API przeglądarki uległ zmianie.
.stop()
nie jest już dostępny w strumieniu, który jest przekazywany do wywołania zwrotnego. Deweloper będzie musiał uzyskać dostęp do ścieżek tworzących strumień (audio lub wideo) i zatrzymać każdą z nich indywidualnie.
Więcej informacji tutaj: https://developers.google.com/web/updates/2015/07/mediastream-deprecations?hl=en#stop-ended-and-active
Przykład (z linku powyżej):
stream.getTracks().forEach(function(track) {
track.stop();
});
Obsługa przeglądarek może się różnić.
Oryginalna odpowiedź
navigator.getUserMedia
zapewnia strumień w wywołaniu zwrotnym sukcesu, możesz wywołać .stop()
ten strumień, aby zatrzymać nagrywanie (przynajmniej w Chrome wydaje się, że FF tego nie lubi)
stream.stop()
nie działa na chrome,mediaRecorder.stop()
zatrzymuje nagrywanie, podczas gdy nie zatrzymuje strumienia dostarczanego przez przeglądarkę. Czy możesz spojrzeć na ten stackoverflow.com/questions/34715357/ ...Użyj dowolnej z tych funkcji:
Uwaga: odpowiedź została zaktualizowana w dniu: 09.06.2020
źródło
stream.getTracks().forEach(track => { track.stop() })
? Lub jeśli naprawdę robisz to wystarczająco często, aby uzasadnić skrót, zawsze możesz zdefiniować funkcję pomocniczą, taką jakstopAllTracks(stream)
.Nie używaj
stream.stop()
, jest przestarzałyWycofania MediaStream
Posługiwać się
stream.getTracks().forEach(track => track.stop())
źródło
FF, Chrome i Opera rozpoczął wystawiając
getUserMedia
poprzeznavigator.mediaDevices
standardowo teraz (może się zmienić :)demo online
źródło
Uruchamianie wideo z kamery internetowej w różnych przeglądarkach
W przypadku Opery 12
W przypadku przeglądarki Firefox Nightly 18.0
Chrome 22
Zatrzymywanie wideo z kamery internetowej w różnych przeglądarkach
W przypadku Opery 12
W przypadku przeglądarki Firefox Nightly 18.0
Chrome 22
Dzięki temu lampka kamery internetowej gaśnie za każdym razem ...
źródło
Załóżmy, że mamy przesyłanie strumieniowe w tagu wideo, a id to wideo -
<video id="video"></video>
wtedy powinniśmy mieć następujący kod -źródło
Strumień można zakończyć bezpośrednio za pomocą obiektu stream zwróconego w procedurze obsługi sukcesu do getUserMedia. na przykład
video.src=""
lubnull
po prostu usunie źródło z tagu wideo. Nie zwolni sprzętu.źródło
Wypróbuj poniższą metodę:
źródło
Jeśli
.stop()
jest przestarzały, nie sądzę, abyśmy ponownie dodawali go, jak dawka @MuazKhan. To powód, dla którego rzeczy stają się przestarzałe i nie powinny być już używane. Zamiast tego po prostu utwórz funkcję pomocniczą ... Oto bardziej wersja es6źródło
for (let track of stream.getTracks()) { track.stop() }
stream.getTracks().forEach(function (track) { track.stop() })
w ES5 pozwala to uniknąć długich transformacji babelfor of
Ponieważ potrzebujesz ścieżek, aby zamknąć strumieniowanie, i potrzebujesz
stream
boject, aby dostać się do ścieżek, kod, którego użyłem z pomocą odpowiedzi Muaz Khana powyżej, jest następujący:Oczywiście spowoduje to zamknięcie wszystkich aktywnych ścieżek wideo. Jeśli masz wiele, wybierz odpowiednio.
źródło
Musisz zatrzymać wszystkie ścieżki (z kamery internetowej, mikrofonu):
źródło
Użycie .stop () w strumieniu działa w przeglądarce Chrome po połączeniu przez http. Nie działa przy korzystaniu z protokołu SSL (https).
źródło
Sprawdź to: https://jsfiddle.net/wazb1jks/3/
Zatrzymaj nagrywanie
źródło
Poniższy kod zadziałał dla mnie:
źródło
Uruchom i zatrzymaj kamerę internetową (aktualizacja 2020 React es6)
Uruchom kamerę internetową
Ogólne zatrzymanie odtwarzania kamery internetowej lub wideo
Funkcja zatrzymania kamery internetowej działa nawet w przypadku strumieni wideo:
źródło
Miej odniesienie do strumienia SuccessHandle
źródło