Matrice delle funzionalità sgcWebRTC — Audio, video, canali dati | eSeGeCe

sgcWebRTC Matrice delle funzionalità

Tutto ciò che sgcWebRTC aggiunge a TsgcRTCPeerConnection, raggruppato per capacità. La segnalazione e la connettività provengono dal componente base in sgcWebSockets Enterprise, questo pacchetto sblocca sopra di esso il motore media: audio, video, cattura schermo, canali dati, crittografia e stima della banda. Ogni capacità funziona allo stesso modo in Delphi e C++ Builder, e ogni licenza include il codice sorgente completo.

Segnalazione

Base Enterprise e SDP

Audio

Opus / G.711

Video

VP8 / H.264 / MJPEG

Canali dati

RFC 8831 / 8832

Condivisione schermo

Cattura e rendering

SRTP / DTLS

Media crittografati

Stima della banda

Controllo della congestione

Cosa include Enterprise, cosa aggiunge sgcWebRTC

La connettività di base è già in sgcWebSockets. sgcWebRTC sblocca la superficie SDP, dei canali dati e dei media sullo stesso componente.

CapacitàIncluso inNote
Client STUN (TsgcSTUNClient)sgcWebSockets StandardScoperta di candidati server-reflexive, disponibile anche sotto Enterprise.
Client e server TURN, client ICE (TsgcTURNClient, TsgcICEClient)sgcWebSockets EnterpriseCandidati relayed e raccolta/nomina completa dei candidati ICE.
TsgcRTCPeerConnection base, segnalazione legacy con relay WebSocketsgcWebSockets EnterpriseGatherCandidates, WriteData e gli eventi OnRTCWebSocket… / OnRTCCandidatePairNominated / OnRTCConnect guidano la connettività ICE e un trasporto DTLS attraverso il server di protocollo RTCPeerConnection integrato, senza SDP, canali dati o media.
Segnalazione SDP offer/answer manualesgcWebRTCCreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, RestartIce: la macchina a stati JSEP (RFC 8829) che un browser si aspetta.
Rinegoziazione e risoluzione del glaresgcWebRTCNuove offerte dopo AddTrack / RemoveTrack, OnNegotiationNeeded, rollback, e la regola W3C di perfect-negotiation tramite Polite.
Trickle ICEsgcWebRTCTrickleICE e RTCOptions.TrickleICEAuto trasmettono i candidati man mano che vengono trovati invece di attendere il timeout completo della raccolta.
Stato di connessione e segnalazionesgcWebRTCConnectionState (sottoinsieme di RTCPeerConnectionState del W3C) e SignalingState (sottoinsieme di RTCSignalingState), più OnConnectionStateChange e OnError.
Canali dati SCTP, audio/video RTP, crittografia SRTPsgcWebRTCVedi le sezioni seguenti: tutte e tre richiedono questo pacchetto sopra la base Enterprise.

Tracce audio Opus e G.711

Una sola chiamata ad AddTrack collega una traccia audio alla connessione peer; il PCM entra, l'RTP esce, e lo stesso percorso funziona al contrario per la traccia remota.

CapacitàMembroNote
Collega una traccia audioAddTrack(rtctkAudio, aCodec)Restituisce un TsgcRTCTrack; RemoveTrack ne interrompe l'invio.
Codec OpuscctAudioOpus48 kHz / stereo tramite un binding libopus caricato dinamicamente.
Codec G.711cctAudioPCMU / cctAudioPCMA8 kHz / mono μ-law e A-law, sempre disponibile, nessuna libreria esterna.
Invia l'audio catturatoTsgcRTCTrack.SendPCM(aPCM, aSamplesPerChannel)PCM interleaved con segno a 16 bit, alla frequenza di campionamento e al numero di canali dell'encoder.
Ricevi l'audio decodificatoOnAudio(aPCM, aSampleRate, aChannels, aSamplesPerChannel)Si attiva sulla traccia remota quando l'RTP arriva e viene decodificato.
Accesso a encoder / decoderAudioEncoder / AudioDecoderL'oggetto TsgcAudioEncoderBase / TsgcAudioDecoderBase sottostante, sostituibile per ogni traccia.
Ciclo di vita della tracciaEnabled, Ended, OnEndedEnabled := False disattiva l'audio senza rinegoziare; Ended riflette una traccia interrotta dal lato remoto o da una nuova offerta.
Cattura del microfonodiscendenti di TsgcMediaCaptureSourceCattura nativa per piattaforma (waveIn su Windows, più i backend Linux, Apple e Android) alimenta direttamente SendPCM.

Tracce video VP8, H.264 e Motion JPEG

Il video funziona con la stessa forma dell'audio: i frame entrano, l'RTP esce, con il codec scelto per ogni traccia e, per H.264, l'encoder hardware nativo della piattaforma sotto.

CapacitàMembroNote
Collega una traccia videoAddTrack(rtctkVideo, aCodec)Stessa chiamata dell'audio, con un TsgcCodecType video.
Codec VP8cctVideoVP8Binding libvpx, caricato dinamicamente, disponibile su Windows e Linux.
Codec H.264cctVideoH264Encoder hardware nativo per piattaforma: Media Foundation (Windows), VideoToolbox (iOS/macOS), MediaCodec (Android). Stream Annex-B, payload RFC 6184, SPS/PPS trasportati in banda su ogni keyframe.
Codec Motion JPEGcctVideoJPEGBasato su GDI+, Windows e Delphi XE o successivo.
Invia un frame grezzoTsgcRTCTrack.SendVideoFrame(aFrame, aForceKeyFrame)Codifica e invia un TsgcVideoFrame (famiglia I420/NV12/RGB/BGR).
Invia un frame già codificatoSendEncodedFrame(aData, aIsKeyFrame)Salta l'encoder della traccia per un frame codificato esternamente.
Ricevi frame decodificati / grezziOnVideoFrame / OnEncodedFrameTsgcVideoFrame decodificato, oppure il bitstream codificato grezzo con il suo flag di keyframe.
Richiedi un keyframeRequestKeyFrameInvia un RTCP PLI al mittente remoto.
Accesso a encoder / decoderVideoEncoder / VideoDecoderL'oggetto TsgcVideoEncoderBase / TsgcVideoDecoderBase sottostante.
Cattura della fotocameradiscendenti di TsgcMediaCaptureSourceI backend di cattura per piattaforma (Windows, Linux, Apple, Android) alimentano direttamente SendVideoFrame.
Renderingdiscendenti di TsgcMediaRendererBackend di rendering per piattaforma (Windows, Linux, Apple, Android) per il video remoto decodificato.

Canali dati SCTP (RFC 8831 / 8832)

Ordinati o non ordinati, completamente affidabili oppure limitati da un numero di ritrasmissioni o da una durata, su SCTP-over-DTLS.

CapacitàMembroNote
Apri un canaleCreateDataChannel(aLabel, aOrdered, aMaxRetransmits, aMaxPacketLifeTime, aProtocol)Restituisce un TsgcRTCDataChannel; forza l'attivazione di RTCOptions.DTLS.
Canale aperto dal remotoOnDataChannel(aChannel)Si attiva quando il peer apre un canale su questa connessione.
Invia testo / binarioSend(aText) / SendBytes(aBytes)Restituisce False se il canale non è ancora aperto.
RiceviOnMessage(aText) / OnMessageBinary(aBytes)Si attiva sul thread che gestisce SCTP.
Eventi del ciclo di vitaOnOpen, OnClose, OnError(aError)Corrisponde al ciclo di vita RTCDataChannel del W3C.
Stato del canaleState, HasId, IdLo stream id SCTP diventa definitivo solo quando il ruolo DTLS si risolve (parità RFC 8832).
Controllo di flussoBufferedAmount, MaxMessageSizeMaxMessageSize tiene traccia dell'a=max-message-size del peer e rifiuta localmente un invio troppo grande.
Introspezione dell'affidabilitàReliability, ReliabilityParam, Ordered, MaxRetransmits, MaxPacketLifeTimeRilegge esattamente ciò che il canale ha negoziato.
ChiusuraCloseChiusura basata su RE-CONFIG; State passa a closing, poi a closed con OnClose.
Livello della connessione peerDataChannelCount, DataChannels[i]Enumera ogni canale aperto sulla connessione.

Cattura di desktop, monitor, finestra e regione

Una sorgente di cattura alimenta lo stesso percorso SendVideoFrame di una fotocamera: il contenuto dello schermo è semplicemente un'altra traccia video.

CapacitàMembroNote
Backend di catturaTsgcScreenCapture_WinCattura di desktop, monitor, finestra e regione basata su GDI. Attualmente solo Windows.
Enumera i monitorGetMonitors / MonitorIndexUna riga per monitor (risoluzione, posizione, flag primario); -1 cattura l'intero desktop virtuale.
Cattura di una regioneRegionRettangolo in coordinate schermo; un rettangolo vuoto disattiva la modalità regione.
Finestre layered / trasparentiCaptureLayeredUsa CAPTUREBLT così le finestre layered e trasparenti sono incluse.
CursoreIncludeCursorDisegna il cursore del mouse nel frame catturato.
DownscalingMaxWidth0 disattiva il downscale; altrimenti i frame più larghi vengono ridotti prima della codifica.
Frame rateproprietà FrameRate della sorgente di catturaPredefinito 5 fps, fino a 30 fps per il contenuto dello schermo.
Codifica e inviaTsgcRTCTrack.SendVideoFrameI frame BGRA32 catturati alimentano l'encoder video della traccia come qualsiasi altra sorgente.

Crittografia obbligatoria dei media

Ogni pacchetto RTP, RTCP e SCTP sulla connessione è crittografato a partire dall'handshake DTLS, non esiste una modalità in chiaro.

CapacitàDettaglio
Scambio di chiaviHandshake DTLS sulla coppia di candidati ICE nominata (RFC 5764 DTLS-SRTP), che deriva il materiale di chiavi SRTP.
Ruolo DTLSNella segnalazione manuale il ruolo deriva da a=setup (offerente passivo, risponditore attivo); IsDTLSClient lo riporta una volta risolto.
Profili di protezione SRTPSRTP_AES128_CM_SHA1_80, SRTP_AES128_CM_SHA1_32, SRTP_AEAD_AES_128_GCM, SRTP_AEAD_AES_256_GCM, negoziati durante l'handshake DTLS.
Stato crittografico per SSRCUn contesto crittografico (contatore di rollover, finestra di replay) per SSRC, come richiesto dalla sezione 3.2.3 di RFC 3711, anche quando BUNDLE mette ogni m-line su un solo trasporto DTLS-SRTP.
AmbitoCopre i media RTP/RTCP e l'associazione SCTP che trasporta i canali dati: l'intera connessione, non solo una m-line.
BackendImplementazione SRTP basata su OpenSSL.

Controllo della congestione e resilienza alla perdita

Uno stimatore basato sul ritardo, in stile Google Congestion Control, monitora il collegamento e guida il bitrate target dell'encoder video.

CapacitàMembroNote
Stimatore basato sul ritardoTsgcBWE_EstimatorRaggruppa i pacchetti in burst di invio da 5 ms, esegue un filtro trendline sul ritardo tra gruppi, e classifica il collegamento come normale, overuse o underuse.
Controllo della velocitàController AIMDL'overuse riduce all'85% della velocità confermata, l'underuse mantiene, il normale aumenta (moltiplicativo quando lontano dall'ultimo tetto noto, additivo quando vicino).
Tetto di perditaTracciamento del tasso di perditaSopra il 10% di perdita il tetto scende; sotto il 2% recupera dell'8% al secondo fino a MaxBitrate.
Feedback transport-wideTWCC (RTCP)BuildRTCP_TWCC / ParseRTCP_TWCC forniscono feedback di controllo della congestione transport-wide, con REMB come tetto di fallback per i peer che supportano solo quello.
AttivaloRTCOptions.Media.CongestionControlHa effetto solo quando anche la descrizione remota negozia l'estensione di intestazione / il feedback corrispondente.
Recupero delle perditeRTCOptions.Media.RTXRitrasmissione RFC 4588 dello stream video su RTCP NACK.
Correzione d'errore in avantiRTCOptions.Media.FECProtezione RED / ULPFEC sullo stream video in uscita.
PacingRTCOptions.Media.PacingScandisce i pacchetti video in uscita al bitrate stimato invece di inviarli in burst.
Recupero del keyframeRTCP PLIRequestKeyFrame sulla traccia ricevente chiede al mittente un nuovo keyframe dopo una perdita.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Sviluppa con sgcWebRTC

Scarica la versione di prova gratuita e apri una vera connessione peer da Delphi o C++ Builder.