MediaStream का बंद होना

अगर getUserMedia() या WebRTC के साथ काम किया जा रहा है, तो आपको अपने कोड में बदलाव करना पड़ सकता है Chrome 45 और उसके बाद वाले वर्शन के लिए.

MediaStream API, मीडिया की सिंक की गईं स्ट्रीम. उदाहरण के लिए, कैमरे से ली गई स्ट्रीम और माइक्रोफ़ोन इनपुट में वीडियो और ऑडियो ट्रैक सिंक किए गए हैं. हर ट्रैक जिसे दिखाने के लिए MediaStreamTrack. (<track> तत्व के साथ भ्रमित न हों!)

Chrome 45 में, MediaStream के इस्तेमाल को तीन तरह से बंद किया गया है:

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

साथ-साथ इसमें दो जोड़ दिए जाते हैं:

  • MediaStream.active
  • MediaStreamTrack.stop()

इनके लिए, इन बदलावों की ज़रूरत है:

  • MediaStream.active का इस्तेमाल करके देखें कि MediaStream.ended के बजाय MediaStream से स्ट्रीम हो रही है या नहीं.
  • स्ट्रीमिंग रोकने के लिए MediaStreamTrack.stop() का इस्तेमाल करें, न कि MediaStream.stop() का.
  • अगर आपको MediaStream के लिए यूनीक आइडेंटिफ़ायर की ज़रूरत है, तो MediaStream.label के बजाय MediaStream.id का इस्तेमाल करें. MediaStreamTrack.label, किसी स्ट्रीम के सोर्स डिवाइस को ऐसा नाम देता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है, जैसे कि FaceTime एचडी कैमरा (बिल्ट-इन) (05ac:8510).

इन्हें काम करते हुए देखा जा सकता है: यहां simpl.info/gum खोलें Chrome (कैमरे वाले डिवाइस पर) और Chrome DevTools कंसोल देखें. कॉन्टेंट बनाने इसमें MediaStream ऑब्जेक्ट stream को getUserMedia() कॉलबैक में भेजा गया डेमो वैश्विक स्तर पर उपलब्ध है, इसलिए आप इसे कंसोल से निरीक्षण कर सकते हैं. कॉल करें इस स्ट्रीम की MediaStreamTrack देखने के लिए stream.getTracks()[0].

Chrome DevTools कंसोल में MediaStream और MediaStreamTrack का स्क्रीनशॉट

स्टॉप(), खत्म हो गया और चालू है

जब मीडिया कैप्चर और स्ट्रीम W3C वर्किंग ग्रुप ने इस समस्या को देखा कि MediaStream में नए ट्रैक जोड़ने पर क्या होता है, और अगर खाली MediaStream खत्म हो जाता है, तो उन्हें पता चला कि MediaStream पर ended को लागू करने का कोई सही तरीका नहीं है (जैसे कि 'फिर से शुरू नहीं होगा'). HTML5 के अन्य भागों में 'End' इसका मतलब है 'यह खत्म हो गया है और अब कभी फिर से शुरू न करें'. 'चालू' इसका कोई मतलब नहीं है: इस्तेमाल न होने वाली स्ट्रीम फिर से चालू हो जाना चाहिए, उदाहरण के लिए, इसमें कोई नया ट्रैक जोड़े जाने पर. भ्रम की स्थिति पैदा करने वाले एट्रिब्यूट और फ़ंक्शन को बनाए रखने के बजाय, वर्किंग ग्रुप ने उसे हटाओ.

यहां 'MediaStream.active' को इस्तेमाल करने का उदाहरण दिया गया है समस्या की स्थिति स्ट्रीम:

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
}

MediaStream से stop() को हटाने से, कोई असल सुविधा नहीं हटी: सोर्स डिवाइसों को डिटैच करने की प्रोसेस वगैरह को पूरा करना ज़रूरी है MediaStreamTrack फिर भी पाएं. इसके बजाय, MediaStreamTrack पर stop() का इस्तेमाल करें:

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

लेबल

यह पता चला कि इस प्रॉपर्टी का इस्तेमाल कोई भी नहीं कर पाया!

MediaStream.label को स्पेसिफ़िकेशन के पहले वर्शन में जोड़ा गया, लेकिन किसी को नहीं पता था label किस काम के लिए था. यह भी नहीं पता था कि स्ट्रीम करने के दौरान label का क्या हुआ RTCPeerConnection के ज़रिए भेजा गया.

W3C वर्किंग ग्रुप ने आस-पास पूछा, लेकिन कोई नहीं चाहता था कि उन्होंने उसे हटा दिया.

यह फिर से दोहराने के लिए: MediaStream.id MediaStream और MediaStreamTrack.label, सोर्स का नाम देते हैं जैसे किसी स्ट्रीम के लिए इस्तेमाल हो सकता है. जैसे, कैमरे या माइक्रोफ़ोन का टाइप.

MediaStream और MediaStreamTrack के बारे में ज़्यादा जानकारी उपलब्ध है Mozilla Developer Network से और HTML5 रॉक्स, getUserMedia() का अपना बेहतरीन परिचय देता है: ऑडियो कैप्चर करना और वीडियो.

हमेशा की तरह, Chrome में किए गए बदलावों पर आपके फ़ीडबैक की हम सराहना करते हैं. इन सुविधाओं को बंद करने से जुड़ी गड़बड़ियों के बारे में जानने के लिए, यहां और यहां जाएं. साथ ही, लागू करने के इंटेंट में जाकर, इस बारे में ज़्यादा जानकारी पाएं और ज़्यादा जानकारी पाएं.