WebRTC: এটি কী, আর্কিটেকচার এবং কার্যনীতি

লেখক: IT Sectr প্রকাশিত: 2026-06-01 পড়ার সময়: 9 মিনিট

WebRTC হল একটি মুক্ত প্রযুক্তি যা ডিভাইসগুলির মধ্যে সরাসরি, মধ্যস্থতাকারী সার্ভার ছাড়াই, রিয়েল টাইমে অডিও, ভিডিও এবং ডেটা ট্রান্সমিট করে। WebRTC Project (2026)-এর মতে, মানটি সমস্ত আধুনিক ব্রাউজার এবং মোবাইল প্ল্যাটফর্ম দ্বারা সমর্থিত, যা 500 ms-এর কম লেটেন্সি প্রদান করে। WebRTC NAT এবং ফায়ারওয়ালের পিছনেও সংযোগ স্থাপনের জন্য ICE, STUN, TURN প্রোটোকল ব্যবহার করে।

মূল বিষয়

  • WebRTC — প্লাগইন ছাড়াই রিয়েল টাইমে অডিও, ভিডিও এবং ডেটার পিয়ার-টু-পিয়ার ট্রান্সমিশনের জন্য একটি মুক্ত মান।
  • আর্কিটেকচার তিনটি স্তর অন্তর্ভুক্ত করে: অ্যাপ্লিকেশন API (getUserMedia, RTCPeerConnection), ট্রান্সপোর্ট (ICE, STUN, TURN) এবং নিরাপত্তা (DTLS, SRTP)।
  • NAT ট্রাভার্সাল STUN সার্ভার (পাবলিক IP) এবং TURN রিলে (সিমেট্রিক NAT বাইপাস) সহ ICE ফ্রেমওয়ার্কের মাধ্যমে সমাধান করা হয়।
  • মোবাইল SDK — Android এবং iOS-এর জন্য Google WebRTC ভয়েস এবং ভিডিও কলের জন্য নেটিভ API প্রদান করে।
  • সিগন্যালিং (SDP বিনিময়) WebRTC-এর অংশ নয় এবং WebSocket, SIP বা কাস্টম প্রোটোকলের মাধ্যমে বাস্তবায়িত হয়।

WebRTC কী

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 আর্কিটেকচার এবং প্রোটোকল

WebRTC আর্কিটেকচার তিনটি স্তর নিয়ে গঠিত। উপরের স্তরটি হল JavaScript API (বা মোবাইল প্ল্যাটফর্মের জন্য নেটিভ API), মধ্যম স্তরটি ট্রান্সপোর্ট প্রোটোকল, নীচের স্তরটি কোডেক এবং নিরাপত্তা। প্রতিটি স্তর নিজস্ব কাজ সমাধান করে, তবে সংযোগ স্থাপনের জন্য সবগুলি প্রয়োজনীয়।

মূল WebRTC API

MediaStream (getUserMedia) — ডিভাইসের মাইক্রোফোন এবং ক্যামেরা থেকে অডিও এবং ভিডিও ক্যাপচার করে। RTCPeerConnection — P2P সংযোগ পরিচালনা করে: এনকোডিং, ট্রান্সপোর্ট, বিটরেট অভিযোজন। RTCDataChannel — একই চ্যানেলে নির্বিচার ডেটা (টেক্সট, ফাইল, বাইনারি বার্তা) ট্রান্সমিট করে।

js
// 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-তে কোনও অসুরক্ষিত মোড নেই।

  • SRTP/SRTCP — রিপ্লে অ্যাটাক সুরক্ষা সহ মিডিয়া স্ট্রিমের এনক্রিপ্টেড ট্রান্সমিশন
  • DTLS-SRTP — UDP-র ওপর Datagram TLS-এর মাধ্যমে এনক্রিপশন কী স্থাপন
  • SCTP — DataChannel-এর জন্য নির্ভরযোগ্য বা আংশিকভাবে নির্ভরযোগ্য ডেটা ডেলিভারি
  • ICE (Interactive Connectivity Establishment) — পিয়ারদের মধ্যে নেটওয়ার্ক পথ খোঁজার জন্য ফ্রেমওয়ার্ক
  • Trickle ICE — ICE-এর বৃদ্ধিমূলক সংস্করণ যেখানে প্রার্থীরা আবিষ্কৃত হওয়ার সাথে সাথে পাঠানো হয়, সংযোগ স্থাপন ত্বরান্বিত করে

NAT ট্রাভার্সাল: ICE, STUN এবং TURN

WebRTC-এর প্রধান প্রযুক্তিগত চ্যালেঞ্জ হল NAT (Network Address Translation)-এর পিছনে থাকা ডিভাইসগুলির মধ্যে P2P সংযোগ স্থাপন করা। বিশেষ প্রক্রিয়া ছাড়া, ডিভাইসগুলি সরাসরি একে অপরের কাছে পৌঁছাতে পারে না কারণ তাদের স্থানীয় IP ঠিকানা ইন্টারনেট থেকে দৃশ্যমান নয়।

STUN — পাবলিক ঠিকানা নির্ধারণ

STUN (Session Traversal Utilities for NAT) — একটি সার্ভার যা “আমার পাবলিক IP এবং পোর্ট কি?” প্রশ্নের উত্তর দেয়। ক্লায়েন্ট STUN সার্ভারে একটি অনুরোধ পাঠায়, সার্ভার তার পাবলিক ঠিকানা দেখে এবং ক্লায়েন্টকে ফেরত দেয়। Google প্রকাশ্যে STUN সার্ভার stun:stun.l.google.com:19302 রক্ষণাবেক্ষণ করে।

swift
// 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 — রিলে সংযোগ

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 প্রক্রিয়া

ICE সমস্ত সম্ভাব্য প্রার্থী (স্থানীয় IP, STUN-এর মাধ্যমে পাবলিক IP, TURN-এর মাধ্যমে রিলে) সংগ্রহ করে এবং অগ্রাধিকার ক্রমে সংযোগ স্থাপনের চেষ্টা করে। যতক্ষণ না প্রার্থীদের অন্তত একটি জোড়া (স্থানীয়-দূরবর্তী) সংযোগ পরীক্ষা পাস করে, সংযোগ স্থাপিত বলে বিবেচিত হয়।

  • Host candidates — সাবনেটে ডিভাইসের স্থানীয় IP ঠিকানা (দ্রুততম, কিন্তু NAT-এর পিছনে কাজ করে না)
  • Server Reflexive candidates — STUN সার্ভারের মাধ্যমে প্রাপ্ত পাবলিক IP
  • Relay candidates — TURN সার্ভার ঠিকানা যার মাধ্যমে রিলে হয় (ধীরগতির, সবচেয়ে নির্ভরযোগ্য)

মোবাইল অ্যাপে WebRTC

মোবাইল ডেভেলপমেন্টের জন্য, Google libWebRTC রক্ষণাবেক্ষণ করে — Android (AAR) এবং iOS (XCFramework)-এর জন্য একটি নেটিভ লাইব্রেরি। লাইব্রেরিতে সম্পূর্ণ প্রোটোকল স্ট্যাক, কোডেক (VP8, VP9, H.264, AV1) এবং এনকোডিং/ডিকোডিংয়ের জন্য হার্ডওয়্যার ত্বরণ অন্তর্ভুক্ত।

Android-এ WebRTC

Android SDK PeerConnectionFactory, PeerConnection, MediaStream ক্লাস প্রদান করে। অ্যাপ একটি ফ্যাক্টরি তৈরি করে, ভিডিও কোডেক কনফিগার করে, VideoCapturer-এর মাধ্যমে ক্যামেরা স্ট্রিম ক্যাপচার করে এবং SDP offer/answer-এর মাধ্যমে পিয়ার সংযোগ স্থাপন করে।

java
// 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-এ WebRTC

iOS SDK RTCPeerConnectionFactory, RTCCameraVideoCapturer, RTCVideoTrack র‍্যাপার সহ Objective-C API ব্যবহার করে। হার্ডওয়্যার H.264 এনকোডিং VideoToolbox-এর মাধ্যমে উপলব্ধ। ভিডিও প্রদর্শনের জন্য RTCMTLVideoView (Metal) বা RTCVideoRenderer ব্যবহার করা হয়।

swift
// 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 প্রার্থী পৌঁছে দেয়।

SDP Offer/Answer বিনিময়

প্রক্রিয়াটি একটি offer তৈরি করার মাধ্যমে শুরু হয় (আরম্ভকারী তার মিডিয়া ক্ষমতা বর্ণনা করে), সিগন্যালিংয়ের মাধ্যমে দ্বিতীয় পিয়ারে প্রেরিত হয়, যা একটি answer দিয়ে উত্তর দেয়। SDP বিনিময়ের পরে প্রতিটি পিয়ার ICE শুরু করে এবং স্ট্রিম এনক্রিপশনের জন্য DTLS-SRTP চালু করে।

kotlin
// 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) যা রুমের অংশগ্রহণকারীদের মধ্যে বার্তা রুট করে।

  • WebSocket — স্থায়ী দ্বিমুখী সংযোগ, ন্যূনতম ওভারহেড, সিগন্যালিংয়ের জন্য মানক পছন্দ
  • WebSocket-এর ওপর SIP — মানক VoIP প্রোটোকল, বিদ্যমান টেলিফোনি পরিকাঠামোর সাথে সংহত হয়
  • MQTT — IoT এবং দুর্বল নেটওয়ার্কের জন্য লাইটওয়েট pub/sub প্রোটোকল, কিন্তু উচ্চতর লেটেন্সি সহ
  • Matrix / XMPP — গোপনীয়তা-কেন্দ্রিক অ্যাপ্লিকেশনের জন্য বিকেন্দ্রীভূত প্রোটোকল

ICE এবং DTLS-SRTP সম্পূর্ণ হওয়ার পরে, সিগন্যালিং আর ডেটা ট্রান্সমিশনে অংশ নেয় না — সমস্ত মিডিয়া ট্রাফিক সরাসরি P2P (বা TURN রিলের মাধ্যমে) প্রবাহিত হয়। সিগন্যালিং সার্ভার সক্রিয় কল ব্যাহত না করে বন্ধ করা যেতে পারে। এটি WebRTC-র বিকেন্দ্রীভূত আর্কিটেকচার-এর মূল সুবিধা।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

WebRTC কীভাবে RTMP বা HLS থেকে আলাদা?

RTMP এবং HLS হল সার্ভার-ভিত্তিক প্রোটোকল যার লেটেন্সি 3-10 সেকেন্ড, যেখানে সমস্ত ডেটা সার্ভারের মাধ্যমে যায়। WebRTC হল পিয়ার-টু-পিয়ার যার লেটেন্সি 200-500 ms। RTMP বড় দর্শকদের জন্য স্ট্রিমিংয়ের উপযোগী, WebRTC ইন্টারঅ্যাকটিভ কল এবং গেমের জন্য।

TURN সার্ভার ব্যবহার করা কি বাধ্যতামূলক?

না, TURN কেবল তখনই প্রয়োজন যখন P2P কাজ করে না (সিমেট্রিক NAT, কর্পোরেট ফায়ারওয়াল)। Google-এর পরিসংখ্যান অনুসারে, প্রায় 15% সংযোগে TURN প্রয়োজন। প্রোডাকশনের জন্য 100% নির্ভরযোগ্যতার জন্য ফলব্যাক হিসাবে TURN সার্ভার রাখার পরামর্শ দেওয়া হয়।

মোবাইল অ্যাপে WebRTC কোন কোডেক সমর্থন করে?

বাধ্যতামূলক কোডেক: VP8 (সব প্ল্যাটফর্ম) এবং H.264 (iOS/Android-এ হার্ডওয়্যার ত্বরণ সহ)। ঐচ্ছিক: VP9 (ভাল কম্প্রেশন, কম বিটরেট) এবং AV1 (অত্যন্ত কার্যকর কিন্তু CPU-ঘন)। অডিও: Opus (প্রাথমিক) এবং G.711 (PCMU/PCMA)।

WebRTC কি ভিডিও ছাড়া শুধুমাত্র ডেটা ট্রান্সফারের জন্য ব্যবহার করা যেতে পারে?

হ্যাঁ, RTCDataChannel-এর মাধ্যমে। এটি নির্বিচার ডেটা: টেক্সট, ফাইল, বাইনারি বার্তা ট্রান্সমিট করার জন্য একটি সম্পূর্ণ চ্যানেল। DataChannel কনফিগারযোগ্য নির্ভরযোগ্যতা সহ SCTP-র ওপর কাজ করে (গেমের জন্য আংশিকভাবে নির্ভরযোগ্য ডেলিভারি, ফাইলের জন্য নির্ভরযোগ্য)।

WebRTC-তে কল রেকর্ডিং কীভাবে নিশ্চিত করবেন?

ক্লায়েন্টে MediaRecorder API-র মাধ্যমে বা SFU (Selective Forwarding Unit)-এর মাধ্যমে — একটি সার্ভার যা সমস্ত অংশগ্রহণকারীর স্ট্রিম গ্রহণ করে এবং সেগুলি রেকর্ড করতে পারে। দ্বিতীয় বিকল্পটি বেশি নির্ভরযোগ্য কারণ রেকর্ডিং অংশগ্রহণকারীর ডিভাইসের উপর নির্ভর করে না এবং সংযোগ বিচ্ছিন্ন হলে বাধাগ্রস্ত হয় না।

সারাংশ

  • WebRTC — 200-500 ms লেটেন্সি সহ ওপেন P2P রিয়েল-টাইম মান, সমস্ত ব্রাউজার এবং মোবাইল প্ল্যাটফর্ম দ্বারা সমর্থিত।
  • আর্কিটেকচার তিনটি স্তরের উপর ভিত্তি করে: মিডিয়া API (getUserMedia, RTCPeerConnection), ICE ট্রান্সপোর্ট (STUN/TURN) এবং নিরাপত্তা (DTLS-SRTP)।
  • NAT ট্রাভার্সাল ICE ফ্রেমওয়ার্ক দ্বারা সমাধান করা হয় — সরাসরি P2P (host) থেকে রিলে TURN (relay) পর্যন্ত যেকোনো ফায়ারওয়াল বাইপাস করতে।
  • মোবাইল SDK Google থেকে Android এবং iOS-এ H.264 এবং VP8-এর হার্ডওয়্যার এনকোডিং, ক্যামেরা এবং মাইক্রোফোন ক্যাপচার প্রদান করে।
  • সিগন্যালিং (SDP বিনিময়) WebRTC-এর অংশ নয় এবং WebSocket, SIP বা ডেভেলপারের জন্য উপলব্ধ যেকোনো প্রোটোকলের মাধ্যমে বাস্তবায়িত হয়।
  • প্রোডাকশন SDK (Twilio, Agora, Daily.co) libWebRTC-র ওপর রুম ব্যবস্থাপনা, সিগন্যালিং এবং UI উপাদান সহজ করে।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন