Jeśli używasz getUserMedia()
lub WebRTC, być może trzeba będzie dostosować kod
w Chrome 45 i nowszych wersjach.
Interfejs MediaStream API reprezentuje zsynchronizowanych strumieni multimediów. Na przykład strumień nagrany z kamery lub film wejście do mikrofonu ma zsynchronizowane ścieżki wideo i audio. Każda ścieżka dźwiękowa reprezentowana przez MediaStreamTrack: (Nie mylić z elementem <track>!)
W Chrome 45 wprowadzono 3 wycofane funkcje MediaStream
:
MediaStream.ended
MediaStream.label
MediaStream.stop()
Równolegle pojawiają się 2 dodania:
MediaStream.active
MediaStreamTrack.stop()
Wymagają one tych zmian:
- Użyj
MediaStream.active
, by sprawdzić, czyMediaStream
jest strumieniowanym, a nieMediaStream.ended
. - Aby zatrzymać transmisję, użyj
MediaStreamTrack.stop()
, a nieMediaStream.stop()
. - Jeśli potrzebujesz unikalnego identyfikatora
MediaStream
, użyjMediaStream.id
zamiastMediaStream.label
.MediaStreamTrack.label
udostępnia czytelną dla człowieka nazwę urządzenia źródłowego, w którym dostępna jest strumień, np. Kamera FaceTime HD (wbudowana) (05ac:8510).
Jak to działa: otwórz stronę simpl.info/gum w
Chrome (na urządzeniu z kamerą) i wyświetlenie konsoli Narzędzi deweloperskich w Chrome;
Obiekt MediaStream stream
przekazany do wywołania zwrotnego getUserMedia()
w tym
wersji demonstracyjnej jest w zakresie globalnym, więc możesz je sprawdzać z poziomu konsoli. Zadzwoń do nas
stream.getTracks()[0]
, aby wyświetlić MediaStreamTrack
dla tej transmisji.
Stop(), zakończenie i aktywność
Gdy grupa robocza W3C Media Capture and Streams zastanawiała się, co się dzieje, gdy dodajesz nowe ścieżki do pliku MediaStream
,
i po zamknięciu pustego MediaStream
zdali sobie sprawę,
nie ma rozsądnego sposobu implementacji kodu ended
w obiekcie MediaStream
(np. „Nigdy nie zacznie się od nowa”). w innych częściach kodu HTML5 „ended” (zakończony). oznacza „to już się skończyło i zostanie
nigdy nie wznawiaj”. 'Aktywny' nie powoduje takich konsekwencji: nieaktywny strumień może
ponownie staną się aktywne, np. jeśli dodasz do niej nową ścieżkę. Zamiast utrzymywać mylący atrybut i funkcję, Grupa robocza postanowiła
i usunąć.
Oto przykład użycia obiektu „MediaStream.active” aby sprawdzić stan strumień:
var gumStream;
navigator.getUserMedia({audio: false, video: true},
function(stream) {
gumStream = stream;
// ...
},
function(error) {
console.log('getUserMedia() error', error);
});
// …
if (gumStream.active) {
// do something with the stream
}
Usunięcie elementu stop()
z elementu MediaStream
nie spowodowało usunięcia żadnych rzeczywistych funkcji:
procesu odłączania urządzeń źródłowych itd.
MediaStreamTrack
. Zamiast tego użyj formy płatności stop()
w systemie MediaStreamTrack
:
navigator.getUserMedia({audio: false, video: true},
function(stream) {
// can also use getAudioTracks() or getVideoTracks()
var track = stream.getTracks()[0]; // if only one media track
// ...
track.stop();
},
function(error){
console.log('getUserMedia() error', error);
});
etykieta
Okazuje się, że nikomu nie udało się w pełni określić, jak można wykorzystać tę posiadłość.
Tabela MediaStream.label
została dodana do pierwszej wersji specyfikacji, ale nikt tak naprawdę nie mógł o tym wiedzieć
do czego służy label
. Nie było też jasne, co się stało z kanałem label
, gdy pojawiała się transmisja
wysłano za pośrednictwem: RTCPeerConnection
.
Grupa robocza W3C zadała pytanie, ale nikt nie chciał tej informacji, więc ją usunęła.
Powtórzę: MediaStream.id
udostępnia unikalny identyfikator
MediaStream
i MediaStreamTrack.label
zawierają nazwę źródła.
takie jak rodzaj kamery lub mikrofonu.
Więcej informacji na ten temat (MediaStream
i MediaStreamTrack
) jest dostępnych
z Mozilla Developer Network oraz
HTML5 Rocks zawiera doskonałe wprowadzenie do tematu getUserMedia()
Rejestrowanie dźwięku i Film.
Jesteśmy bardzo wdzięczni za opinie na temat zmian w Chrome. Błędy związane z wycofanymi funkcjami możesz śledzić (tutaj i tutaj), a więcej informacji o ich wycofywaniu znajdziesz w filmie Intent to Implement (intencje wdrożenia).