MediaStream'in kullanımdan kaldırılması

getUserMedia() veya WebRTC ile çalışıyorsanız kodunuzu ayarlamanız gerekebilir .

MediaStream API, şunları temsil eder: senkronize edilir. Örneğin, kameradan çekilmiş ve Mikrofon girişi senkronize video ve ses parçalarına sahip. Her parça bir MediaStreamTrack gidin. (<track> öğesiyle karıştırılmamalıdır!)

Chrome 45'te MediaStream desteğinin sonlandırılmasıyla ilgili üç değişiklik yapıldı:

  • MediaStream.ended
  • MediaStream.label
  • MediaStream.stop()

Buna paralel olarak iki ekleme yapılabilir:

  • MediaStream.active
  • MediaStreamTrack.stop()

Bu durumlar için aşağıdaki değişikliklerin yapılması gerekir:

  • MediaStream yayını olup olmadığını kontrol etmek için MediaStream.ended yerine MediaStream.active kullanın.
  • Akışı durdurmak için MediaStream.stop() yerine MediaStreamTrack.stop() kullanın.
  • MediaStream için benzersiz bir tanımlayıcıya ihtiyacınız varsa MediaStream.label yerine MediaStream.id kullanın. MediaStreamTrack.label, akış için kaynak cihaz için kullanıcılar tarafından okunabilen bir ad sağlar (ör. FaceTime HD Kamera (Yerleşik) (05ac:8510).

Bu öğelerin nasıl kullanıldığını görebilirsiniz: Şu sayfada simpl.info/gum'u açın: Chrome'a (kamera bulunan bir cihazda) gidin ve Chrome Geliştirici Araçları konsolunu görüntüleyin. İlgili içeriği oluşturmak için kullanılan Bu öğede getUserMedia() geri çağırmasına stream MediaStream nesnesi iletildi demo global kapsamındadır; bu nedenle demoyu konsoldan inceleyebilirsiniz. Telefonla arama Bu akışın MediaStreamTrack bilgisini görüntülemek için stream.getTracks()[0].

Chrome Geliştirici Araçları konsolundaki MediaStream ve MediaStreamTrack işlemlerini gösteren ekran görüntüsü

Stop(), sona erdi ve etkin

Medya Yakalama ve Akışlar W3C Çalışma Grubu, bir MediaStream öğesine yeni parçalar eklediğinizde ne olacağı sorununu ele aldığında, Sonunda boş bir MediaStream olduğunda, ended öğesini bir MediaStream üzerinde uygulamanın mantıklı bir yolu yoktur ("bir daha asla başlamayacak" gibi). HTML5'in diğer bölümlerinde "sona erdi" "bu artık sona erdi ve asla devam ettirme'. "Etkin" böyle bir çıkarım yoktur: Etkin olmayan bir akış, yeniden etkin hale gelir (örneğin, yeni bir parça eklendiğinde). Çalışma Grubu, kafa karıştırıcı bir niteliğe ve işleve sahip olmak yerine kaldırın.

"MediaStream.active"in nasıl kullanılacağına dair bir örnek bir anahtar kelimenin durumunu kontrol etmek için akış:

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
}

stop(), MediaStream klasöründen kaldırıldığında gerçek bir işlev kaldırmadı: kaynak cihazları ayırma gibi işlemler ve bu işlemlerin Yine de MediaStreamTrack. Bunun yerine MediaStreamTrack üzerinde stop() kullanın:

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);
    });

etiket

Anlaşılan kimse bu mülkün nasıl kullanılacağını tam olarak belirleyememiş!

Spesifikasyonun ilk sürümüne MediaStream.label eklenmişti ama kimse bunun farkında değildi. label ne içindi. Canlı yayın sırasında label cihazına ne olduğu da anlaşılamadı. RTCPeerConnection üzerinden gönderildi.

W3C Çalışma Grubu soru sordu ve kimse bunu istemedi, bu yüzden grubu kaldırdılar.

Tekrarlamak gerekirse: MediaStream.id, MediaStream ve MediaStreamTrack.label, kaynağın adını belirtir kamera veya mikrofon türü gibi diğer seçeneklerle de alakalıdır.

MediaStream ve MediaStreamTrack hakkında daha fazla bilgi mevcut Mozilla Geliştirici Ağı ve HTML5 Rocks, oyun dili için getUserMedia() için mükemmel bir giriş Ses Yakalama ve Video.

Her zamanki gibi, Chrome'da yapılan değişikliklerle ilgili geri bildiriminiz bizim için değerlidir. Kullanımdan kaldırma işlemleriyle ilgili hataları (buradan ve buradan) takip edebilir, daha fazla tartışmayı ve ayrıntıyı Uygulama Amacı sayfasında bulabilirsiniz.