WebRTC एक ओपन तकनीक है जो उपकरणों के बीच सीधे, बिना मध्यवर्ती सर्वर के, ऑडियो, वीडियो और डेटा को रियल टाइम में ट्रांसमिट करती है। WebRTC Project (2026) के अनुसार, यह मानक सभी आधुनिक ब्राउज़रों और मोबाइल प्लेटफ़ॉर्म द्वारा समर्थित है, जो 500 ms से कम विलंबता प्रदान करता है। WebRTC NAT और फ़ायरवॉल के पीछे भी कनेक्शन स्थापित करने के लिए ICE, STUN, TURN प्रोटोकॉल का उपयोग करता है।
मुख्य बिंदु
WebRTC (Web Real-Time Communication) एक ओपन सोर्स प्रोजेक्ट है जिसे Google ने 2011 में शुरू किया और W3C (JavaScript API) और IETF (प्रोटोकॉल) द्वारा मानकीकृत किया गया। इसका मुख्य उद्देश्य प्लगइन या तृतीय-पक्ष सॉफ़्टवेयर स्थापित किए बिना ब्राउज़रों और एप्लिकेशन के बीच कम विलंबता संचार प्रदान करना है।
पारंपरिक समाधानों (RTMP, HLS) के विपरीत जहां वीडियो सर्वर से होकर गुज़रता है, WebRTC पीयर-टू-पीयर आर्किटेक्चर का उपयोग करता है: डेटा सीधे प्रतिभागियों के बीच ट्रांसमिट होता है। यह HLS के 3-10 सेकंड की तुलना में 200-500 ms विलंबता प्रदान करता है — वॉइस और वीडियो कॉल, गेम स्ट्रीमिंग और रिमोट सर्जरी के लिए एक महत्वपूर्ण अंतर।
Google WebRTC टीम (2025) के अनुसार, इस तकनीक का उपयोग 5 बिलियन से अधिक इंस्टॉलेशन वाले एप्लिकेशन में किया जाता है: Google Meet, WhatsApp, Discord, Telegram, Zoom (आंशिक रूप से)। telehealth और edtech क्षेत्र के 85% से अधिक वेंचर स्टार्टअप WebRTC को अपने बेस रियल-टाइम ट्रांसपोर्ट के रूप में चुनते हैं।
मोबाइल डेवलपमेंट को 2013 में libjingle_peerconnection के रिलीज़ के साथ पूर्ण WebRTC समर्थन मिला — Android और iOS के लिए एक नेटिव इम्प्लीमेंटेशन। आज दोनों प्लेटफ़ॉर्म के पास H.264 और VP8 के हार्डवेयर एन्कोडिंग, कैमरा, माइक्रोफ़ोन और डिवाइस स्पीकर के समर्थन के साथ स्थिर SDK हैं।
WebRTC आर्किटेक्चर तीन परतों से बना है। शीर्ष परत JavaScript API (या मोबाइल प्लेटफ़ॉर्म के लिए नेटिव API), मध्य परत ट्रांसपोर्ट प्रोटोकॉल, निचली परत कोडेक और सुरक्षा है। प्रत्येक परत अपना कार्य हल करती है, लेकिन कनेक्शन स्थापना के लिए सभी आवश्यक हैं।
MediaStream (getUserMedia) — डिवाइस के माइक्रोफ़ोन और कैमरे से ऑडियो और वीडियो कैप्चर करता है। RTCPeerConnection — P2P कनेक्शन प्रबंधित करता है: एन्कोडिंग, ट्रांसपोर्ट, बिटरेट अनुकूलन। RTCDataChannel — उसी चैनल पर मनमाना डेटा (टेक्स्ट, फ़ाइलें, बाइनरी संदेश) ट्रांसमिट करता है।
// WebRTC JavaScript API (ब्राउज़र उदाहरण)
const pc = new RTCPeerConnection({
iceServers: [
{ urls: "stun:stun.l.google.com:19302" }
]
});
pc.onicecandidate = (event) => {
if (event.candidate) {
sendToPeer(JSON.stringify(event.candidate));
}
};
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
WebRTC ऑडियो और वीडियो के लिए SRTP (Secure Real-Time Transport Protocol) का उपयोग करता है — AES-128 एन्क्रिप्शन के साथ RTP का एक सुरक्षित संस्करण। सत्र प्रबंधन DTLS के ऊपर SCTP (Stream Control Transmission Protocol) के माध्यम से होता है। प्रत्येक डेटा स्ट्रीम अनिवार्य रूप से एन्क्रिप्ट की जाती है: WebRTC में कोई असुरक्षित मोड नहीं है।
WebRTC की मुख्य तकनीकी चुनौती उन उपकरणों के बीच P2P कनेक्शन स्थापित करना है जो NAT (Network Address Translation) के पीछे हैं। विशेष तंत्र के बिना, उपकरण सीधे एक-दूसरे तक नहीं पहुंच सकते क्योंकि उनके स्थानीय IP पते इंटरनेट से दिखाई नहीं देते।
STUN (Session Traversal Utilities for NAT) — एक सर्वर जो इस प्रश्न का उत्तर देता है “मेरा सार्वजनिक IP और पोर्ट क्या है?”। क्लाइंट STUN सर्वर को एक अनुरोध भेजता है, सर्वर उसका सार्वजनिक पता देखता है और क्लाइंट को वापस भेजता है। Google सार्वजनिक रूप से STUN सर्वर stun:stun.l.google.com:19302 का रखरखाव करता है।
// iOS पर WebRTC — ICE सर्वर कॉन्फ़िगरेशन
import WebRTC
let config = RTCConfiguration()
config.iceServers = [
RTCIceServer(
urlStrings: ["stun:stun.l.google.com:19302"]
),
RTCIceServer(
urlStrings: ["turn:turn.example.com:3478"],
username: "user",
credential: "password"
)
]
let pc = RTCPeerConnection(configuration: config)
TURN (Traversal Using Relays around NAT) — उन मामलों के लिए एक रिले सर्वर जब STUN मदद नहीं करता (सममित NAT या कॉर्पोरेट फ़ायरवॉल)। इस मोड में सभी डेटा TURN सर्वर से होकर गुज़रता है — इससे गति कम होती है और विलंबता बढ़ती है, लेकिन 99% मामलों में कनेक्शन की गारंटी देता है।
TURN WebRTC बुनियादी ढांचे का सबसे महंगा घटक है, क्योंकि सर्वर सभी मीडिया ट्रैफ़िक को अपने माध्यम से पास करता है। Coturn Project (2025) के अनुसार, 8 vCPU और 16 GB RAM वाला एक विशिष्ट TURN सर्वर लगभग 200 समवर्ती ऑडियो कॉल या 40 HD वीडियो कॉल को संभालता है।
ICE सभी संभावित उम्मीदवारों (स्थानीय IP, STUN के माध्यम से सार्वजनिक IP, TURN के माध्यम से रिले) को इकट्ठा करता है और प्राथमिकता क्रम में कनेक्शन स्थापित करने का प्रयास करता है। जैसे ही उम्मीदवारों की कम से कम एक जोड़ी (स्थानीय-दूरस्थ) कनेक्टिविटी जांच पास करती है, कनेक्शन स्थापित माना जाता है।
मोबाइल डेवलपमेंट के लिए, Google libWebRTC बनाए रखता है — Android (AAR) और iOS (XCFramework) के लिए एक नेटिव लाइब्रेरी। लाइब्रेरी में पूरा प्रोटोकॉल स्टैक, कोडेक (VP8, VP9, H.264, AV1) और एन्कोडिंग/डिकोडिंग के लिए हार्डवेयर त्वरण शामिल है।
Android SDK PeerConnectionFactory, PeerConnection, MediaStream क्लास प्रदान करता है। ऐप एक फ़ैक्टरी बनाता है, वीडियो कोडेक कॉन्फ़िगर करता है, VideoCapturer के माध्यम से कैमरा स्ट्रीम कैप्चर करता है और SDP offer/answer के माध्यम से पीयर कनेक्शन स्थापित करता है।
// Android WebRTC — प्रारंभिकरण
import org.webrtc.*;
PeerConnectionFactory.Initialize(PeerConnectionFactory.InitializationOptions
.builder(context)
.setFieldTrials("WebRTC-H264-HighProfile/Enabled/")
.createInitializationOptions());
PeerConnectionFactory factory =
PeerConnectionFactory.builder()
.setVideoDecoderFactory(new DefaultVideoDecoderFactory(eglBase))
.setVideoEncoderFactory(new DefaultVideoEncoderFactory(eglBase, true, true))
.createPeerConnectionFactory();
iOS SDK RTCPeerConnectionFactory, RTCCameraVideoCapturer, RTCVideoTrack रैपर के साथ Objective-C API का उपयोग करता है। हार्डवेयर H.264 एन्कोडिंग VideoToolbox के माध्यम से उपलब्ध है। वीडियो प्रदर्शन के लिए RTCMTLVideoView (Metal) या RTCVideoRenderer का उपयोग किया जाता है।
// iOS WebRTC — कैमरे से वीडियो कैप्चर
let factory = RTCPeerConnectionFactory()
let capturer = RTCCameraVideoCapturer(delegate: factory)
// कैमरा चयन (सामने/पीछे)
guard let device = RTCCameraVideoCapturer
.captureDevices().first(where: {
$0.position == .front
}) else { return }
// अधिकतम FPS के साथ कैप्चर प्रारंभ करें
capturer.startCapture(
with: device,
format: RTCCameraVideoCapturer
.supportedFormats(for: device).last!,
fps: 30
)
प्रोडक्शन वीडियो कॉल के लिए, मोबाइल ऐप्स आमतौर पर libWebRTC के ऊपर SDK रैपर का उपयोग करते हैं: Twilio Video, Agora, Daily.co। ये SDK सिग्नलिंग, रूम प्रबंधन को सरल बनाते हैं और प्रतिभागियों की वीडियो ग्रिड प्रदर्शित करने के लिए तैयार UI घटक प्रदान करते हैं।
WebRTC सिग्नलिंग प्रोटोकॉल निर्दिष्ट नहीं करता — पीयर्स के बीच SDP (Session Description Protocol) संदेशों का आदान-प्रदान। डेवलपर सिग्नलिंग के लिए ट्रांसपोर्ट चुनता है: WebSocket, MQTT, SIP, XMPP या REST API। सिग्नलिंग एक पीयर से दूसरे तक offer, answer और ICE उम्मीदवार पहुंचाती है।
प्रक्रिया offer बनाने से शुरू होती है (आरंभकर्ता अपनी मीडिया क्षमताओं का वर्णन करता है), सिग्नलिंग के माध्यम से दूसरे पीयर को प्रेषित किया जाता है, जो answer के साथ जवाब देता है। SDP आदान-प्रदान के बाद प्रत्येक पीयर ICE शुरू करता है और स्ट्रीम एन्क्रिप्शन के लिए DTLS-SRTP लॉन्च करता है।
// Android — offer बनाना और भेजना
private fun startCall(peerConnection: PeerConnection) {
val constraints = MediaConstraints().apply {
mandatory["OfferToReceiveAudio"] = "true"
mandatory["OfferToReceiveVideo"] = "true"
}
peerConnection.createOffer(object : SdpObserver {
override fun onCreateSuccess(sdp: SessionDescription) {
peerConnection.setLocalDescription(this, sdp)
// सिग्नलिंग सर्वर को sdp.description भेजें
sendSdpOffer(sdp.description)
}
}, constraints)
}
मोबाइल ऐप्स के लिए, सबसे लोकप्रिय सिग्नलिंग WebSocket के माध्यम से है — TCP पर एक द्विदिश चैनल जो सर्वर के साथ स्थायी कनेक्शन बनाए रखता है। सिग्नलिंग सर्वर अक्सर एक अलग माइक्रोसर्विस (Node.js, Golang, Elixir) होता है जो रूम प्रतिभागियों के बीच संदेशों को रूट करता है।
ICE और DTLS-SRTP पूरा होने के बाद, सिग्नलिंग डेटा ट्रांसमिशन में भाग नहीं लेती — सभी मीडिया ट्रैफ़िक सीधे P2P (या TURN रिले के माध्यम से) प्रवाहित होता है। सिग्नलिंग सर्वर को सक्रिय कॉल को बाधित किए बिना बंद किया जा सकता है। यह WebRTC के विकेंद्रीकृत आर्किटेक्चर का मुख्य लाभ है।
अक्सर पूछे जाने वाले प्रश्न
RTMP और HLS सर्वर-आधारित प्रोटोकॉल हैं जिनमें 3-10 सेकंड की विलंबता होती है, जहां सभी डेटा सर्वर से होकर गुज़रता है। WebRTC पीयर-टू-पीयर है जिसमें 200-500 ms विलंबता है। RTMP बड़े दर्शकों के लिए स्ट्रीमिंग के लिए उपयुक्त है, WebRTC इंटरैक्टिव कॉल और गेम के लिए।
नहीं, TURN केवल तब आवश्यक है जब P2P काम नहीं करता (सममित NAT, कॉर्पोरेट फ़ायरवॉल)। Google के आंकड़ों के अनुसार, लगभग 15% कनेक्शनों को TURN की आवश्यकता होती है। प्रोडक्शन के लिए 100% विश्वसनीयता के लिए फ़ॉलबैक के रूप में TURN सर्वर रखने की अनुशंसा की जाती है।
अनिवार्य कोडेक: VP8 (सभी प्लेटफ़ॉर्म) और H.264 (iOS/Android पर हार्डवेयर त्वरण के साथ)। वैकल्पिक: VP9 (बेहतर संपीड़न, कम बिटरेट) और AV1 (अति कुशल लेकिन CPU गहन)। ऑडियो: Opus (प्राथमिक) और G.711 (PCMU/PCMA)।
हाँ, RTCDataChannel के माध्यम से। यह मनमाना डेटा: टेक्स्ट, फ़ाइलें, बाइनरी संदेश ट्रांसमिट करने के लिए एक पूर्ण चैनल है। DataChannel कॉन्फ़िगर करने योग्य विश्वसनीयता के साथ SCTP पर काम करता है (गेम के लिए आंशिक रूप से विश्वसनीय डिलीवरी, फ़ाइलों के लिए विश्वसनीय)।
क्लाइंट पर MediaRecorder API के माध्यम से या SFU (Selective Forwarding Unit) के माध्यम से — एक सर्वर जो सभी प्रतिभागियों की स्ट्रीम प्राप्त करता है और उन्हें रिकॉर्ड कर सकता है। दूसरा विकल्प अधिक विश्वसनीय है क्योंकि रिकॉर्डिंग प्रतिभागी के डिवाइस पर निर्भर नहीं करती और डिस्कनेक्ट होने पर बाधित नहीं होती।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।