WebRTC nədir
WebRTC brauzerlər arasında video, səs və ixtiyari məlumatı birbaşa (peer-to-peer) ötürməyə imkan verir. Video zəng, ekran paylaşımı, onlayn oyun və fayl göndərmə bunun üzərində qurulur. Üç əsas API var.
getUserMedia- kamera və mikrofon axını (MediaStream).RTCPeerConnection- iki brauzer arasında şifrələnmiş əlaqə.RTCDataChannel- mətn və ya ikili məlumat üçün kanal.
Vacib məqam: iki peer bir-birini avtomatik tapmır. Qoşulmaq üçün onlar kiçik mesajlar (offer, answer, ICE namizədləri) dəyişməlidir. Bu mərhələyə signaling deyilir və standartın daxilində deyil: onu özünüz qurursunuz, adətən WebSocket ilə. Mediya isə həmişə şifrələnir (DTLS-SRTP).
getUserMedia: kamera və mikrofon
navigator.mediaDevices.getUserMedia() istifadəçidən icazə istəyir və MediaStream qaytarır. Axın bir və ya bir neçə trekdən ibarətdir (video, audio). Onu <video> elementinin srcObject xassəsinə veririk.
const localVideo = document.querySelector('#local');
let stream;
try {
stream = await navigator.mediaDevices.getUserMedia({
video: { width: { ideal: 1280 }, height: { ideal: 720 } },
audio: { echoCancellation: true },
});
localVideo.srcObject = stream;
localVideo.muted = true;
await localVideo.play();
} catch (err) {
if (err.name === 'NotAllowedError') console.log('Permission denied');
else if (err.name === 'NotFoundError') console.log('No camera found');
else throw err;
}
// later: release the camera
stream.getTracks().forEach((track) => track.stop());- İcazə rədd olunsa
NotAllowedError, cihaz tapılmasaNotFoundErroratılır. - İşiniz bitəndə hər trekə
stop()çağırın, yoxsa kamera işıq yanmağa davam edəcək. - Cihaz siyahısı üçün
navigator.mediaDevices.enumerateDevices()istifadə olunur.
⚠️
getUserMediayalnız təhlükəsiz kontekstdə (https://və yalocalhost) işləyir.
💡 Yerli önizləməni
mutededin, yoxsa əks-səda yaranacaq.
RTCPeerConnection, offer və answer
Əlaqə SDP (Session Description Protocol) mətnləri ilə qurulur. SDP hansı mediya axınlarının, kodeklərin və şifrələmə açarlarının olduğunu təsvir edir. Ardıcıllıq belədir: