अगर 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]
.
स्टॉप(), खत्म हो गया और चालू है
जब मीडिया कैप्चर और स्ट्रीम 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 में किए गए बदलावों पर आपके फ़ीडबैक की हम सराहना करते हैं. इन सुविधाओं को बंद करने से जुड़ी गड़बड़ियों के बारे में जानने के लिए, यहां और यहां जाएं. साथ ही, लागू करने के इंटेंट में जाकर, इस बारे में ज़्यादा जानकारी पाएं और ज़्यादा जानकारी पाएं.