sgcWebRTC-functiematrix — audio, video, datakanalen | eSeGeCe

sgcWebRTC functiematrix

Alles wat sgcWebRTC toevoegt aan TsgcRTCPeerConnection, gegroepeerd per mogelijkheid. Signalering en connectiviteit komen van de basiscomponent in sgcWebSockets Enterprise; dit pakket ontgrendelt de media-engine erbovenop — audio, video, schermopname, datakanalen, versleuteling en bandbreedteschatting. Elke mogelijkheid werkt hetzelfde in Delphi en C++ Builder, en elke licentie bevat volledige broncode.

Signalering

Enterprise-basis & SDP

Audio

Opus / G.711

Video

VP8 / H.264 / MJPEG

Datakanalen

RFC 8831 / 8832

Schermdelen

Opname & weergave

SRTP / DTLS

Versleutelde media

Bandbreedteschatting

Congestiecontrole

Wat Enterprise levert, wat sgcWebRTC toevoegt

De basisconnectiviteit zit al in sgcWebSockets. sgcWebRTC ontgrendelt het SDP-, datakanaal- en media-oppervlak op dezelfde component.

MogelijkheidZit inOpmerkingen
STUN-client (TsgcSTUNClient)sgcWebSockets StandardServer-reflexive candidate-detectie, beschikbaar vanaf onder Enterprise.
TURN-client & -server, ICE-client (TsgcTURNClient, TsgcICEClient)sgcWebSockets EnterpriseRelayed candidates en volledige ICE-candidate-gathering / -nominatie.
Basis-TsgcRTCPeerConnection, legacy WebSocket-relay-signaleringsgcWebSockets EnterpriseGatherCandidates, WriteData en de events OnRTCWebSocket… / OnRTCCandidatePairNominated / OnRTCConnect sturen ICE-connectiviteit en een DTLS-transport aan via de ingebouwde RTCPeerConnection-protocolserver, zonder SDP, datakanalen of media.
Handmatige SDP-offer/answer-signaleringsgcWebRTCCreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, RestartIce — de JSEP-toestandsmachine (RFC 8829) die een browser verwacht.
Renegotiatie & glare-resolutiesgcWebRTCNieuwe offers na AddTrack / RemoveTrack, OnNegotiationNeeded, rollback, en de W3C-perfect-negotiation-regel via Polite.
Trickle ICEsgcWebRTCTrickleICE en RTCOptions.TrickleICEAuto streamen candidates zodra ze gevonden worden in plaats van te wachten op de volledige gathering-timeout.
Verbindings- en signaleringsstatussgcWebRTCConnectionState (subset van W3C RTCPeerConnectionState) en SignalingState (subset van RTCSignalingState), plus OnConnectionStateChange en OnError.
SCTP-datakanalen, RTP-audio/video, SRTP-versleutelingsgcWebRTCZie de secties hieronder — alle drie vereisen dit pakket bovenop de Enterprise-basis.

Opus- & G.711-audiotracks

Eén aanroep van AddTrack koppelt een audiotrack aan de peer-connectie; PCM gaat erin, RTP komt eruit, en hetzelfde pad loopt omgekeerd voor de remote track.

MogelijkheidMemberOpmerkingen
Audiotrack koppelenAddTrack(rtctkAudio, aCodec)Geeft een TsgcRTCTrack terug; RemoveTrack stopt het versturen ervan.
Opus-codeccctAudioOpus48 kHz / stereo via een dynamisch geladen libopus-binding.
G.711-codeccctAudioPCMU / cctAudioPCMA8 kHz / mono μ-law en A-law, altijd beschikbaar, geen externe bibliotheek.
Opgenomen audio versturenTsgcRTCTrack.SendPCM(aPCM, aSamplesPerChannel)16-bit signed interleaved PCM op de samplerate en het kanaalaantal van de encoder.
Gedecodeerde audio ontvangenOnAudio(aPCM, aSampleRate, aChannels, aSamplesPerChannel)Wordt geactiveerd op de remote track zodra RTP binnenkomt en wordt gedecodeerd.
Toegang tot encoder / decoderAudioEncoder / AudioDecoderHet onderliggende object TsgcAudioEncoderBase / TsgcAudioDecoderBase, per track vervangbaar.
Levenscyclus van de trackEnabled, Ended, OnEndedEnabled := False dempt zonder renegotiatie; Ended weerspiegelt een track die door de remote kant of een nieuw offer is verwijderd.
Microfoonopnameafgeleiden van TsgcMediaCaptureSourceNative opname per platform (waveIn op Windows, plus backends voor Linux, Apple en Android) voedt SendPCM rechtstreeks.

VP8-, H.264- & Motion JPEG-videotracks

Video werkt naar dezelfde vorm als audio — frames erin, RTP eruit — met de codec gekozen per track en, voor H.264, de eigen hardware-encoder van het platform eronder.

MogelijkheidMemberOpmerkingen
Videotrack koppelenAddTrack(rtctkVideo, aCodec)Dezelfde aanroep als audio, met een video-TsgcCodecType.
VP8-codeccctVideoVP8libvpx-binding, dynamisch geladen, beschikbaar op Windows en Linux.
H.264-codeccctVideoH264Native hardware-encoder per platform: Media Foundation (Windows), VideoToolbox (iOS/macOS), MediaCodec (Android). Annex-B-stream, RFC 6184-payloading, SPS/PPS in-band bij elke keyframe.
Motion JPEG-codeccctVideoJPEGGebaseerd op GDI+, Windows en Delphi XE of later.
Ruwe frame versturenTsgcRTCTrack.SendVideoFrame(aFrame, aForceKeyFrame)Codeert en verstuurt een TsgcVideoFrame (familie I420/NV12/RGB/BGR).
Voorgecodeerde frame versturenSendEncodedFrame(aData, aIsKeyFrame)Omzeilt de eigen encoder van de track voor een extern gecodeerde frame.
Gedecodeerde / ruwe frames ontvangenOnVideoFrame / OnEncodedFrameGedecodeerde TsgcVideoFrame, of de ruwe gecodeerde bitstream met de keyframe-vlag.
Keyframe aanvragenRequestKeyFrameVerstuurt een RTCP PLI naar de remote sender.
Toegang tot encoder / decoderVideoEncoder / VideoDecoderHet onderliggende object TsgcVideoEncoderBase / TsgcVideoDecoderBase.
Camera-opnameafgeleiden van TsgcMediaCaptureSourceOpnamebackends per platform (Windows, Linux, Apple, Android) voeden SendVideoFrame rechtstreeks.
Weergaveafgeleiden van TsgcMediaRendererRenderer-backends per platform (Windows, Linux, Apple, Android) voor de gedecodeerde remote video.

SCTP-datakanalen (RFC 8831 / 8832)

Geordend of ongeordend, volledig betrouwbaar of begrensd door een hertransmissieaantal of een levensduur, over SCTP-over-DTLS.

MogelijkheidMemberOpmerkingen
Kanaal openenCreateDataChannel(aLabel, aOrdered, aMaxRetransmits, aMaxPacketLifeTime, aProtocol)Geeft een TsgcRTCDataChannel terug; forceert RTCOptions.DTLS aan.
Door remote geopend kanaalOnDataChannel(aChannel)Wordt geactiveerd wanneer de peer een kanaal opent op deze verbinding.
Tekst / binair versturenSend(aText) / SendBytes(aBytes)Geeft False terug als het kanaal nog niet open is.
OntvangenOnMessage(aText) / OnMessageBinary(aBytes)Wordt geactiveerd op de SCTP-aansturende thread.
LevenscycluseventsOnOpen, OnClose, OnError(aError)Komt overeen met de W3C RTCDataChannel-levenscyclus.
KanaalstatusState, HasId, IdHet SCTP-stream-id is pas definitief zodra de DTLS-rol is opgelost (RFC 8832-pariteit).
FlowcontroleBufferedAmount, MaxMessageSizeMaxMessageSize volgt de eigen a=max-message-size van de peer en weigert lokaal een te grote verzending.
BetrouwbaarheidsintrospectieReliability, ReliabilityParam, Ordered, MaxRetransmits, MaxPacketLifeTimeLees precies terug wat het kanaal onderhandelde.
SluitenCloseGebaseerd op RE-CONFIG; State gaat naar closing, dan closed met OnClose.
Niveau van de peer-connectieDataChannelCount, DataChannels[i]Somt elk open kanaal op de verbinding op.

Desktop-, monitor-, venster- en regio-opname

Een opnamebron voedt hetzelfde pad SendVideoFrame als een camera — scherminhoud is gewoon een andere videotrack.

MogelijkheidMemberOpmerkingen
OpnamebackendTsgcScreenCapture_WinOp GDI gebaseerde desktop-, monitor-, venster- en regio-opname. Momenteel alleen Windows.
Monitoren opsommenGetMonitors / MonitorIndexEén regel per monitor (resolutie, positie, primair-vlag); -1 neemt het hele virtuele bureaublad op.
Regio-opnameRegionRechthoek in schermcoördinaten; een lege rect schakelt regiomodus uit.
Gelaagde / transparante venstersCaptureLayeredGebruikt CAPTUREBLT zodat gelaagde en transparante vensters worden meegenomen.
CursorIncludeCursorTekent de muiscursor in de opgenomen frame.
DownscalingMaxWidth0 schakelt downscale uit; anders worden bredere frames verkleind vóór codering.
FramerateOpnamebron FrameRateStandaard 5 fps, tot 30 fps voor scherminhoud.
Coderen & versturenTsgcRTCTrack.SendVideoFrameOpgenomen BGRA32-frames voeden de video-encoder van de track als elke andere bron.

Verplichte mediaversleuteling

Elk RTP-, RTCP- en SCTP-pakket op de verbinding is versleuteld vanaf de DTLS-handshake — er is geen plaintext-modus.

MogelijkheidDetail
SleuteluitwisselingDTLS-handshake over het genomineerde ICE-candidate-paar (RFC 5764 DTLS-SRTP), die het SRTP-sleutelmateriaal afleidt.
DTLS-rolBij handmatige signalering komt de rol van a=setup (offerer passief, answerer actief); IsDTLSClient meldt dit zodra bekend.
SRTP-beveiligingsprofielenSRTP_AES128_CM_SHA1_80, SRTP_AES128_CM_SHA1_32, SRTP_AEAD_AES_128_GCM, SRTP_AEAD_AES_256_GCM, onderhandeld tijdens de DTLS-handshake.
Crypto-status per SSRCEén cryptografische context (rollover-teller, replay-venster) per SSRC, zoals RFC 3711 sectie 3.2.3 vereist, ook wanneer BUNDLE elke m-line op één DTLS-SRTP-transport plaatst.
BereikDekt RTP/RTCP-media en de SCTP-associatie met de datakanalen — de hele verbinding, niet alleen één m-line.
BackendOp OpenSSL gebaseerde SRTP-implementatie.

Congestiecontrole & verliesrobuustheid

Een delay-based estimator in de stijl van Google Congestion Control volgt de verbinding en stuurt de doelbitrate van de video-encoder aan.

MogelijkheidMemberOpmerkingen
Delay-based estimatorTsgcBWE_EstimatorGroepeert pakketten in bursts van 5 ms, draait een trendlinefilter over de vertraging tussen groepen, en classificeert de verbinding als normaal, overuse of underuse.
RatecontroleAIMD-controllerOveruse verlaagt naar 85% van het bevestigde tempo, underuse houdt vast, normaal verhoogt (multiplicatief ver van het laatst bekende plafond, additief dichtbij).
VerliesplafondVerliespercentagevolgingBoven 10% verlies daalt het plafond; onder 2% herstelt het 8% per seconde tot MaxBitrate.
Transport-brede feedbackTWCC (RTCP)BuildRTCP_TWCC / ParseRTCP_TWCC transport-brede congestiecontrolefeedback, met REMB als terugvalplafond voor peers die alleen dat ondersteunen.
InschakelenRTCOptions.Media.CongestionControlHeeft alleen effect wanneer de remote description ook de bijbehorende header-extensie / feedback onderhandelt.
VerliesherstelRTCOptions.Media.RTXRFC 4588-hertransmissie van de videostream bij RTCP NACK.
Voorwaartse foutcorrectieRTCOptions.Media.FECRED / ULPFEC-bescherming op de uitgaande videostream.
PacingRTCOptions.Media.PacingVerdeelt uitgaande videopakketten over de geschatte bitrate in plaats van ze in bursts te versturen.
Keyframe-herstelRTCP PLIRequestKeyFrame op de ontvangende track vraagt de sender om een verse keyframe na verlies.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Bouw met sgcWebRTC

Download de gratis proefversie en open een echte peer-connectie vanuit Delphi of C++ Builder.