WebRTC, Firefox, Android, और iOS पर भी काम करता है

पिछले कुछ हफ़्तों में, WebRTC के साथ काफ़ी बदलाव हुए हैं. ऐप्लिकेशन अपडेट करें!

खास तौर पर, हमें यह देखकर खुशी हो रही है कि WebRTC को कई ब्राउज़र और प्लैटफ़ॉर्म पर उपलब्ध कराया जा रहा है.

getUserMedia अब Chrome, Opera, और Firefox Nightly/Aurora में बिना किसी फ़्लैग के उपलब्ध है. हालांकि, Firefox के लिए आपको प्राथमिकताएं सेट करनी होंगी. getUserMedia के क्रॉस-ब्राउज़र डेमो को देखने के लिए, simpl.info/gum पर जाएं. साथ ही, वेब ऑडियो के लिए इनपुट के तौर पर getUserMedia का इस्तेमाल करने के बारे में, क्रिस विल्सन के शानदार उदाहरण देखें.

webkitRTCPeerConnection अब Chrome के स्टैबल वर्शन में उपलब्ध है और इसमें कोई फ़्लैग नहीं है. TURN सर्वर की सुविधा, Chrome 24 और उसके बाद के वर्शन में उपलब्ध है. simpl.info/pc पर, Chrome के RTCPeerConnection को लागू करने का एक बहुत आसान डेमो मौजूद है. साथ ही, apprtc.appspot.com पर एक बेहतरीन वीडियो चैट ऐप्लिकेशन मौजूद है. (नाम के बारे में जानकारी: कई बार बदलाव करने के बाद, इसे फ़िलहाल webkitRTCPeerConnection के तौर पर जाना जाता है. अन्य नामों और लागू करने के तरीकों का इस्तेमाल बंद कर दिया गया है. जब स्टैंडर्ड की प्रोसेस पूरी हो जाएगी, तो webkit प्रीफ़िक्स हटा दिया जाएगा.)

WebRTC को अब Firefox Nightly और Aurora में डेस्कटॉप के लिए भी लागू कर दिया गया है. साथ ही, Ericsson के Bowser ब्राउज़र के ज़रिए iOS और Android के लिए भी लागू कर दिया गया है.

DataChannel

DataChannel, WebRTC API है. इसका इस्तेमाल, किसी भी डेटा के लिए बेहतर परफ़ॉर्मेंस, कम इंतज़ार, और पीयर-टू-पीयर कम्यूनिकेशन के लिए किया जाता है. यह एपीआई, WebSocket की तरह ही आसान है. हालांकि, इसमें कम्यूनिकेशन सीधे ब्राउज़र के बीच होता है. इसलिए, DataChannel, WebSocket से काफ़ी तेज़ हो सकता है. भले ही, इसके लिए किसी रिले (TURN) सर्वर की ज़रूरत हो. ऐसा तब होता है, जब फ़ायरवॉल और NAT से निपटने के लिए 'होल पंचिंग' की सुविधा काम न करे.

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

Firefox Nightly/Aurora में mozGetUserMedia, mozRTCPeerConnection, और DataChannel का इस्तेमाल किया जा सकता है. हालांकि, about:config की सेटिंग सेट करना न भूलें!

यहां Firefox में चल रहे DataChannel का स्क्रीनशॉट दिया गया है:

Firefox DataChannel का स्क्रीनशॉट

यह डेमो http://mozilla.github.com/webrtc-landing/data_test.html पर उपलब्ध है. यहां एक कोड स्निपेट दिया गया है:

pc1.onconnection = function() {
    log("pc1 onConnection ");
    dc1 = pc1.createDataChannel("This is pc1",{}); // reliable (TCP-like)
    dc1 = pc1.createDataChannel("This is pc1",{outOfOrderAllowed: true, maxRetransmitNum: 0}); // unreliable (UDP-like)
    log("pc1 created channel " + dc1 + " binarytype = " + dc1.binaryType);
    channel = dc1;
    channel.binaryType = "blob";
    log("pc1 new binarytype = " + dc1.binaryType);

    // Since we create the datachannel, don't wait for onDataChannel!
    channel.onmessage = function(evt) {
    if (evt.data instanceof Blob) {
        fancy_log("*** pc2 sent Blob: " + evt.data + ", length=" + evt.data.size,"blue");
    } else {
        fancy_log('pc2 said: ' + evt.data, "blue");
    }
    }
    channel.onopen = function() {
    log("pc1 onopen fired for " + channel);
    channel.send("pc1 says Hello...");
    log("pc1 state: " + channel.state);
    }
    channel.onclose = function() {
    log("pc1 onclose fired");
    };
    log("pc1 state:" + channel.readyState);
        }

Firefox में इस सुविधा को लागू करने के बारे में ज़्यादा जानकारी और डेमो देखने के लिए, hacks.mozilla.org ब्लॉग पर जाएं. WebRTC की बुनियादी सुविधाएं, 2013 की शुरुआत में Firefox 18 में रिलीज़ होंगी. साथ ही, getUserMedia और createOffer/Answer की पाबंदियों के साथ-साथ, TURN (फ़ायरवॉल के पीछे ब्राउज़र के बीच कम्यूनिकेशन की अनुमति देने के लिए) जैसी अन्य सुविधाओं के लिए भी सहायता उपलब्ध कराई जाएगी.

WebRTC के बारे में ज़्यादा जानकारी के लिए, WebRTC का इस्तेमाल शुरू करना लेख पढ़ें. यहां WebRTC की किताब भी उपलब्ध है. यह किताब, प्रिंट और कई ई-बुक फ़ॉर्मैट में उपलब्ध है.

रिज़ॉल्यूशन से जुड़ी पाबंदियां

Chrome 24 और उसके बाद के वर्शन में, यह पाबंदी लागू की गई है. इनका इस्तेमाल, getUserMedia() और RTCPeerConnection addStream() कॉल के लिए वीडियो रिज़ॉल्यूशन की वैल्यू सेट करने के लिए किया जा सकता है.

simpl.info/getusermedia/constraints पर इसका एक उदाहरण दिया गया है. ब्रेकपॉइंट सेट करके और वैल्यू में बदलाव करके, अलग-अलग सीमाओं को आज़माएं.

कुछ बातें ध्यान में रखें... getUserMedia किसी एक ब्राउज़र टैब में सेट की गई पाबंदियां, बाद में खोले गए सभी टैब पर लागू होती हैं. पाबंदियों के लिए, इस्तेमाल न की जा सकने वाली वैल्यू सेट करने पर, गड़बड़ी का एक ऐसा मैसेज दिखता है जिसे समझना मुश्किल होता है:

navigator.getUserMedia error:  NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}

इसी तरह, अगर getUserMedia का इस्तेमाल सर्वर के बजाय लोकल फ़ाइल सिस्टम से किया जाता है, तो भी गड़बड़ी दिखती है!

स्ट्रीमिंग की स्क्रीन कैप्चर

टैब कैप्चर करने की सुविधा, अब Chrome के डेवलपर चैनल में उपलब्ध है. इससे टैब के दिखने वाले हिस्से को स्ट्रीम के तौर पर कैप्चर किया जा सकता है. इसके बाद, इसका इस्तेमाल स्थानीय तौर पर या RTCPeerConnection के addStream() के साथ किया जा सकता है. स्क्रीनकास्ट करने और वेब पेज शेयर करने के लिए बहुत काम का है. ज़्यादा जानकारी के लिए, WebRTC टैब कॉन्टेंट कैप्चर करने का प्रस्ताव देखें.

इस अपडेट के बारे में टिप्पणी करके हमें बताएं: हमें यह जानने में खुशी होगी कि इन एपीआई का इस्तेमाल किस तरह किया जा रहा है.

...और chromiumbugs.appspot.com पर, आपको जो भी गड़बड़ियां मिलें उन्हें दर्ज करना न भूलें!