Elementy wycofane z MediaStream

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ć, czy MediaStream jest strumieniowanym, a nie MediaStream.ended.
  • Aby zatrzymać transmisję, użyj MediaStreamTrack.stop(), a nie MediaStream.stop().
  • Jeśli potrzebujesz unikalnego identyfikatora MediaStream, użyj MediaStream.id zamiast MediaStream.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.

Zrzut ekranu przedstawiający MediaStream i MediaStreamTrack w konsoli Narzędzi deweloperskich w Chrome

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).