sgcWebRTC Özellik Matrisi — Ses, Görüntü, Veri Kanalları | eSeGeCe

sgcWebRTC Özellik Matrisi

sgcWebRTC'nin TsgcRTCPeerConnection'a eklediği her şey, yeteneğe göre gruplanmış. Sinyalleşme ve bağlanabilirlik, sgcWebSockets Enterprise'daki temel bileşenden gelir; bu paket bunun üzerine medya motorunun kilidini açar — ses, görüntü, ekran yakalama, veri kanalları, şifreleme ve bant genişliği tahmini. Her yetenek Delphi ve C++ Builder'da aynı şekilde çalışır ve her lisans tam kaynak koduyla gelir.

Sinyalleşme

Enterprise temeli ve SDP

Ses

Opus / G.711

Görüntü

VP8 / H.264 / MJPEG

Veri Kanalları

RFC 8831 / 8832

Ekran Paylaşımı

Yakalama ve gösterim

SRTP / DTLS

Şifreli medya

Bant Genişliği Tahmini

Tıkanıklık kontrolü

Enterprise Neyi Sağlıyor, sgcWebRTC Neyi Ekliyor

Temel bağlanabilirlik zaten sgcWebSockets içindedir. sgcWebRTC, aynı bileşen üzerinde SDP, veri kanalı ve medya yüzeyinin kilidini açar.

YetenekŞununla gelirNotlar
STUN istemcisi (TsgcSTUNClient)sgcWebSockets StandardSunucu-yansımalı aday keşfi, Enterprise altında da mevcuttur.
TURN istemcisi ve sunucusu, ICE istemcisi (TsgcTURNClient, TsgcICEClient)sgcWebSockets EnterpriseAktarılan adaylar ve tam ICE aday toplama / adaylandırma.
Temel TsgcRTCPeerConnection, eski WebSocket üzerinden aktarımlı sinyalleşmesgcWebSockets EnterpriseGatherCandidates, WriteData ve OnRTCWebSocket… / OnRTCCandidatePairNominated / OnRTCConnect olayları, yerleşik RTCPeerConnection protokol sunucusu üzerinden ICE bağlanabilirliğini ve bir DTLS taşımasını yönetir; SDP, veri kanalları veya medya yoktur.
Manuel SDP teklif/yanıt sinyalleşmesisgcWebRTCCreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, RestartIce — bir tarayıcının beklediği JSEP (RFC 8829) durum makinesi.
Yeniden müzakere ve glare çözümüsgcWebRTCAddTrack / RemoveTrack sonrası yeniden teklifler, OnNegotiationNeeded, geri alma ve Polite üzerinden W3C perfect-negotiation kuralı.
Trickle ICEsgcWebRTCTrickleICE ve RTCOptions.TrickleICEAuto, tüm toplama zaman aşımını beklemek yerine adayları bulundukça akışa verir.
Bağlantı ve sinyalleşme durumusgcWebRTCConnectionState (W3C RTCPeerConnectionState alt kümesi) ve SignalingState (RTCSignalingState alt kümesi), ayrıca OnConnectionStateChange ve OnError.
SCTP veri kanalları, RTP ses/görüntü, SRTP şifrelemesgcWebRTCAşağıdaki bölümlere bakın — üçü de Enterprise temeli üzerinde bu paketi gerektirir.

Opus ve G.711 Ses İzleri

Tek bir AddTrack çağrısı, eş bağlantısına bir ses izi ekler; PCM içeri girer, RTP dışarı çıkar; aynı yol, uzak iz için tersine çalışır.

YetenekÜyeNotlar
Bir ses izi ekleAddTrack(rtctkAudio, aCodec)Bir TsgcRTCTrack döndürür; RemoveTrack gönderimi durdurur.
Opus codec'icctAudioOpusDinamik olarak yüklenen bir libopus bağlaması üzerinden 48 kHz / stereo.
G.711 codec'icctAudioPCMU / cctAudioPCMA8 kHz / mono μ-law ve A-law, her zaman kullanılabilir, harici kütüphane gerekmez.
Yakalanan sesi gönderTsgcRTCTrack.SendPCM(aPCM, aSamplesPerChannel)Kodlayıcının örnekleme hızında ve kanal sayısında 16 bit işaretli iç içe geçmiş (interleaved) PCM.
Çözülen sesi alOnAudio(aPCM, aSampleRate, aChannels, aSamplesPerChannel)RTP geldikçe ve çözüldükçe uzak izde tetiklenir.
Kodlayıcı / kod çözücü erişimiAudioEncoder / AudioDecoderAltta yatan TsgcAudioEncoderBase / TsgcAudioDecoderBase nesnesi, iz başına değiştirilebilir.
İz yaşam döngüsüEnabled, Ended, OnEndedEnabled := False, yeniden müzakere etmeden sesi kapatır; Ended, uzak taraf ya da bir yeniden teklif tarafından düşürülen bir izi yansıtır.
Mikrofon yakalamaTsgcMediaCaptureSource alt sınıflarıPlatform başına yerel yakalama (Windows'ta waveIn, ayrıca Linux, Apple ve Android arka uçları) doğrudan SendPCM'i besler.

VP8, H.264 ve Motion JPEG Görüntü İzleri

Görüntü, ses ile aynı şekilde çalışır — kareler içeri girer, RTP dışarı çıkar — codec iz başına seçilir ve H.264 için altta platformun kendi donanım kodlayıcısı bulunur.

YetenekÜyeNotlar
Bir görüntü izi ekleAddTrack(rtctkVideo, aCodec)Sesle aynı çağrı, bir görüntü TsgcCodecType'ıyla.
VP8 codec'icctVideoVP8libvpx bağlaması, dinamik olarak yüklenir, Windows ve Linux'ta kullanılabilir.
H.264 codec'icctVideoH264Platform başına yerel donanım kodlayıcısı: Media Foundation (Windows), VideoToolbox (iOS/macOS), MediaCodec (Android). Annex-B akışı, RFC 6184 yükleme, her anahtar karede bant içi taşınan SPS/PPS.
Motion JPEG codec'icctVideoJPEGGDI+ tabanlı, Windows ve Delphi XE veya sonrası.
Ham bir kare gönderTsgcRTCTrack.SendVideoFrame(aFrame, aForceKeyFrame)Bir TsgcVideoFrame'i kodlar ve gönderir (I420/NV12/RGB/BGR ailesi).
Önceden kodlanmış bir kare gönderSendEncodedFrame(aData, aIsKeyFrame)Harici olarak kodlanmış bir kare için izin kendi kodlayıcısını atlar.
Çözülen / ham kareleri alOnVideoFrame / OnEncodedFrameÇözülen TsgcVideoFrame, ya da anahtar kare bayrağıyla ham kodlanmış bit akışı.
Bir anahtar kare isteRequestKeyFrameUzak göndericiye bir RTCP PLI gönderir.
Kodlayıcı / kod çözücü erişimiVideoEncoder / VideoDecoderAltta yatan TsgcVideoEncoderBase / TsgcVideoDecoderBase nesnesi.
Kamera yakalamaTsgcMediaCaptureSource alt sınıflarıPlatform başına yakalama arka uçları (Windows, Linux, Apple, Android) doğrudan SendVideoFrame'i besler.
GörüntülemeTsgcMediaRenderer alt sınıflarıÇözülen uzak görüntü için platform başına gösterim arka uçları (Windows, Linux, Apple, Android).

SCTP Veri Kanalları (RFC 8831 / 8832)

SCTP-over-DTLS üzerinden sıralı veya sırasız, tamamen güvenilir veya bir yeniden iletim sayısı ya da ömürle sınırlı.

YetenekÜyeNotlar
Bir kanal açCreateDataChannel(aLabel, aOrdered, aMaxRetransmits, aMaxPacketLifeTime, aProtocol)Bir TsgcRTCDataChannel döndürür; RTCOptions.DTLS'yi zorla açar.
Uzaktan açılan kanalOnDataChannel(aChannel)Eş bu bağlantı üzerinde bir kanal açtığında tetiklenir.
Metin / ikili gönderSend(aText) / SendBytes(aBytes)Kanal henüz açık değilse False döndürür.
AlOnMessage(aText) / OnMessageBinary(aBytes)SCTP'yi yöneten iş parçacığında tetiklenir.
Yaşam döngüsü olaylarıOnOpen, OnClose, OnError(aError)W3C RTCDataChannel yaşam döngüsüyle eşleşir.
Kanal durumuState, HasId, IdSCTP akış kimliği yalnızca DTLS rolü çözüldüğünde kesinleşir (RFC 8832 eşliği).
Akış kontrolüBufferedAmount, MaxMessageSizeMaxMessageSize, eşin kendi a=max-message-size değerini izler ve aşırı boyutlu bir gönderimi yerel olarak reddeder.
Güvenilirlik iç gözlemiReliability, ReliabilityParam, Ordered, MaxRetransmits, MaxPacketLifeTimeKanalın tam olarak neyi müzakere ettiğini geri okuyun.
KapatCloseRE-CONFIG tabanlı kapatma; State önce closing, ardından OnClose ile closed durumuna geçer.
Eş bağlantısı düzeyiDataChannelCount, DataChannels[i]Bağlantı üzerindeki her açık kanalı numaralandırın.

Masaüstü, Monitör, Pencere ve Bölge Yakalama

Bir yakalama kaynağı, bir kameranınkiyle aynı SendVideoFrame yolunu besler — ekran içeriği yalnızca başka bir görüntü izidir.

YetenekÜyeNotlar
Yakalama arka ucuTsgcScreenCapture_WinGDI tabanlı masaüstü, monitör, pencere ve bölge yakalama. Şu anda yalnızca Windows.
Monitörleri numaralandırGetMonitors / MonitorIndexMonitör başına bir satır (çözünürlük, konum, birincil bayrağı); -1 tüm sanal masaüstünü yakalar.
Bölge yakalamaRegionEkran koordinatlı dikdörtgen; boş bir dikdörtgen bölge modunu devre dışı bırakır.
Katmanlı / saydam pencerelerCaptureLayeredKatmanlı ve saydam pencerelerin dahil edilmesi için CAPTUREBLT kullanır.
İmleçIncludeCursorFare imlecini yakalanan karenin içine çizer.
KüçültmeMaxWidth0 küçültmeyi devre dışı bırakır; aksi halde daha geniş kareler kodlamadan önce küçültülür.
Kare hızıYakalama kaynağı FrameRateVarsayılan 5 fps, ekran içeriği için 30 fps'e kadar.
Kodla ve gönderTsgcRTCTrack.SendVideoFrameYakalanan BGRA32 kareleri, izin görüntü kodlayıcısını diğer herhangi bir kaynak gibi besler.

Zorunlu Medya Şifrelemesi

Bağlantı üzerindeki her RTP, RTCP ve SCTP paketi, DTLS el sıkışmasından itibaren şifrelenir — düz metin modu yoktur.

YetenekAyrıntı
Anahtar değişimiAday gösterilen ICE aday çifti üzerinden DTLS el sıkışması (RFC 5764 DTLS-SRTP), SRTP anahtar malzemesini türetir.
DTLS rolüManuel sinyalleşmede rol a=setup'tan gelir (teklif eden pasif, yanıtlayan aktif); IsDTLSClient çözüldüğünde bunu bildirir.
SRTP koruma profilleriSRTP_AES128_CM_SHA1_80, SRTP_AES128_CM_SHA1_32, SRTP_AEAD_AES_128_GCM, SRTP_AEAD_AES_256_GCM; DTLS el sıkışması sırasında müzakere edilir.
SSRC başına kripto durumuRFC 3711 bölüm 3.2.3'ün gerektirdiği gibi, BUNDLE her m-satırını tek bir DTLS-SRTP taşımasına koysa bile SSRC başına bir kriptografik bağlam (rollover sayacı, tekrar penceresi).
KapsamRTP/RTCP medyasını ve veri kanallarını taşıyan SCTP ilişkilendirmesini kapsar — yalnızca bir m-satırı değil, bağlantının tamamı.
Arka uçOpenSSL destekli SRTP uygulaması.

Tıkanıklık Kontrolü ve Kayıp Dayanıklılığı

Google Congestion Control tarzında gecikme tabanlı bir tahminleyici bağlantıyı izler ve görüntü kodlayıcısının hedef bit hızını yönlendirir.

YetenekÜyeNotlar
Gecikme tabanlı tahminleyiciTsgcBWE_EstimatorPaketleri 5 ms'lik gönderim patlamaları halinde gruplar, grup arası gecikme üzerinde bir eğilim çizgisi filtresi çalıştırır ve bağlantıyı normal, aşırı kullanım veya az kullanım olarak sınıflandırır.
Hız kontrolüAIMD denetleyicisiAşırı kullanım, onaylanan hızın %85'ine düşürür; az kullanım sabit tutar; normal artırır (son bilinen tavandan uzaktayken çarpımsal, yakınken toplamsal).
Kayıp tavanıKayıp oranı izleme%10 üzeri kayıpta tavan düşer; %2 altında saniyede %8 MaxBitrate'e kadar toparlanır.
Taşıma genelinde geri bildirimTWCC (RTCP)BuildRTCP_TWCC / ParseRTCP_TWCC taşıma genelinde tıkanıklık kontrolü geri bildirimi; yalnızca REMB'i destekleyen eşler için yedek tavan olarak REMB ile.
EtkinleştirinRTCOptions.Media.CongestionControlYalnızca uzak açıklama da eşleşen başlık uzantısını / geri bildirimi müzakere ettiğinde etkili olur.
Kayıp kurtarmaRTCOptions.Media.RTXRTCP NACK üzerine görüntü akışının RFC 4588 yeniden iletimi.
İleri hata düzeltmesiRTCOptions.Media.FECGiden görüntü akışında RED / ULPFEC koruması.
Hız ayarı (pacing)RTCOptions.Media.PacingGiden görüntü paketlerini patlama yapmak yerine tahmini bit hızında ayarlar.
Anahtar kare kurtarmaRTCP PLIAlan izdeki RequestKeyFrame, kayıptan sonra göndericiden yeni bir anahtar kare ister.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

sgcWebRTC ile Geliştirin

Ücretsiz deneme sürümünü indirin ve Delphi veya C++ Builder'dan gerçek bir eş bağlantısı açın.