sgcWebRTC Funktionsübersicht — Audio, Video, Datenkanäle | eSeGeCe

sgcWebRTC Funktionsübersicht

Alles, was sgcWebRTC zu TsgcRTCPeerConnection hinzufügt, gruppiert nach Fähigkeit. Signaling und Konnektivität kommen von der Basiskomponente in sgcWebSockets Enterprise; dieses Paket schaltet die Media-Engine darauf frei — Audio, Video, Bildschirmaufnahme, Datenkanäle, Verschlüsselung und Bandbreitenschätzung. Jede Fähigkeit funktioniert in Delphi und C++ Builder identisch, und jede Lizenz enthält den vollständigen Quellcode.

Signaling

Enterprise-Basis & SDP

Audio

Opus / G.711

Video

VP8 / H.264 / MJPEG

Datenkanäle

RFC 8831 / 8832

Bildschirmfreigabe

Aufnahme & Rendering

SRTP / DTLS

Verschlüsselte Medien

Bandbreitenschätzung

Congestion Control

Was Enterprise liefert, was sgcWebRTC hinzufügt

Die Basis-Konnektivität ist bereits in sgcWebSockets enthalten. sgcWebRTC schaltet die SDP-, Datenkanal- und Media-Oberfläche auf derselben Komponente frei.

FähigkeitEnthalten inHinweise
STUN-Client (TsgcSTUNClient)sgcWebSockets StandardServer-reflexive Kandidatenermittlung, bereits unterhalb von Enterprise verfügbar.
TURN-Client & -Server, ICE-Client (TsgcTURNClient, TsgcICEClient)sgcWebSockets EnterpriseWeitergeleitete Kandidaten und vollständiges ICE-Kandidaten-Gathering / -Nominierung.
Basis-TsgcRTCPeerConnection, klassisches WebSocket-Relay-SignalingsgcWebSockets EnterpriseGatherCandidates, WriteData und die Ereignisse OnRTCWebSocket… / OnRTCCandidatePairNominated / OnRTCConnect steuern die ICE-Konnektivität und einen DTLS-Transport über den eingebauten RTCPeerConnection-Protokollserver, ohne SDP, Datenkanäle oder Medien.
Manuelles SDP-Offer/Answer-SignalingsgcWebRTCCreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, RestartIce — die JSEP-Zustandsmaschine (RFC 8829), die ein Browser erwartet.
Renegotiation & Glare-AuflösungsgcWebRTCErneute Angebote nach AddTrack / RemoveTrack, OnNegotiationNeeded, Rollback und die W3C-Perfect-Negotiation-Regel über Polite.
Trickle ICEsgcWebRTCTrickleICE und RTCOptions.TrickleICEAuto streamen Kandidaten, sobald sie gefunden werden, statt auf das vollständige Gathering-Timeout zu warten.
Verbindungs- & Signaling-StatussgcWebRTCConnectionState (Teilmenge von W3C RTCPeerConnectionState) und SignalingState (Teilmenge von RTCSignalingState), dazu OnConnectionStateChange und OnError.
SCTP-Datenkanäle, RTP-Audio/Video, SRTP-VerschlüsselungsgcWebRTCSiehe die Abschnitte unten — alle drei erfordern dieses Paket zusätzlich zur Enterprise-Basis.

Opus- & G.711-Audio-Tracks

Ein einziger AddTrack-Aufruf hängt einen Audio-Track an die Peer-Verbindung; PCM geht rein, RTP geht raus, und derselbe Pfad läuft umgekehrt für den Remote-Track.

FähigkeitMemberHinweise
Audio-Track anhängenAddTrack(rtctkAudio, aCodec)Gibt einen TsgcRTCTrack zurück; RemoveTrack stoppt das Senden.
Opus-CodeccctAudioOpus48 kHz / Stereo über eine dynamisch geladene libopus-Anbindung.
G.711-CodeccctAudioPCMU / cctAudioPCMA8 kHz / Mono μ-Law und A-Law, immer verfügbar, keine externe Bibliothek.
Aufgenommenes Audio sendenTsgcRTCTrack.SendPCM(aPCM, aSamplesPerChannel)16-Bit-signed interleaved PCM in der Sample-Rate und Kanalzahl des Encoders.
Dekodiertes Audio empfangenOnAudio(aPCM, aSampleRate, aChannels, aSamplesPerChannel)Löst auf dem Remote-Track aus, sobald RTP eintrifft und dekodiert wird.
Encoder-/Decoder-ZugriffAudioEncoder / AudioDecoderDas zugrunde liegende TsgcAudioEncoderBase-/TsgcAudioDecoderBase-Objekt, pro Track ersetzbar.
Track-LebenszyklusEnabled, Ended, OnEndedEnabled := False stummschaltet ohne Renegotiation; Ended spiegelt einen von der Gegenseite entfernten Track oder ein erneutes Angebot wider.
MikrofonaufnahmeNachfahren von TsgcMediaCaptureSourceNative Aufnahme pro Plattform (waveIn unter Windows, dazu Linux-, Apple- und Android-Backends) speist SendPCM direkt.

VP8-, H.264- & Motion-JPEG-Video-Tracks

Video funktioniert nach demselben Muster wie Audio — Frames rein, RTP raus —, mit dem pro Track gewählten Codec und, bei H.264, dem eigenen Hardware-Encoder der Plattform darunter.

FähigkeitMemberHinweise
Video-Track anhängenAddTrack(rtctkVideo, aCodec)Derselbe Aufruf wie bei Audio, mit einem Video-TsgcCodecType.
VP8-CodeccctVideoVP8libvpx-Anbindung, dynamisch geladen, verfügbar unter Windows und Linux.
H.264-CodeccctVideoH264Nativer Hardware-Encoder pro Plattform: Media Foundation (Windows), VideoToolbox (iOS/macOS), MediaCodec (Android). Annex-B-Stream, RFC 6184-Payloading, SPS/PPS bei jedem Keyframe im Stream mitgeführt.
Motion-JPEG-CodeccctVideoJPEGGDI+-basiert, Windows und Delphi XE oder neuer.
Rohes Frame sendenTsgcRTCTrack.SendVideoFrame(aFrame, aForceKeyFrame)Kodiert und sendet ein TsgcVideoFrame (I420/NV12/RGB/BGR-Familie).
Vorkodiertes Frame sendenSendEncodedFrame(aData, aIsKeyFrame)Umgeht den eigenen Encoder des Tracks für ein extern kodiertes Frame.
Dekodierte / rohe Frames empfangenOnVideoFrame / OnEncodedFrameDekodiertes TsgcVideoFrame, oder der rohe kodierte Bitstream mit seinem Keyframe-Flag.
Keyframe anfordernRequestKeyFrameSendet ein RTCP-PLI an den Remote-Sender.
Encoder-/Decoder-ZugriffVideoEncoder / VideoDecoderDas zugrunde liegende TsgcVideoEncoderBase-/TsgcVideoDecoderBase-Objekt.
KameraaufnahmeNachfahren von TsgcMediaCaptureSourcePlattformspezifische Aufnahme-Backends (Windows, Linux, Apple, Android) speisen SendVideoFrame direkt.
RenderingNachfahren von TsgcMediaRendererPlattformspezifische Renderer-Backends (Windows, Linux, Apple, Android) für das dekodierte Remote-Video.

SCTP-Datenkanäle (RFC 8831 / 8832)

Geordnet oder ungeordnet, vollständig zuverlässig oder begrenzt durch eine Neuübertragungszahl oder eine Lebensdauer, über SCTP-over-DTLS.

FähigkeitMemberHinweise
Kanal öffnenCreateDataChannel(aLabel, aOrdered, aMaxRetransmits, aMaxPacketLifeTime, aProtocol)Gibt einen TsgcRTCDataChannel zurück; erzwingt RTCOptions.DTLS.
Von der Gegenseite geöffneter KanalOnDataChannel(aChannel)Löst aus, wenn der Peer einen Kanal auf dieser Verbindung öffnet.
Text / Binär sendenSend(aText) / SendBytes(aBytes)Gibt False zurück, wenn der Kanal noch nicht offen ist.
EmpfangenOnMessage(aText) / OnMessageBinary(aBytes)Löst auf dem SCTP-steuernden Thread aus.
Lebenszyklus-EreignisseOnOpen, OnClose, OnError(aError)Entspricht dem W3C-RTCDataChannel-Lebenszyklus.
KanalstatusState, HasId, IdDie SCTP-Stream-ID steht erst fest, sobald die DTLS-Rolle geklärt ist (RFC 8832-Parität).
FlusskontrolleBufferedAmount, MaxMessageSizeMaxMessageSize verfolgt das eigene a=max-message-size der Gegenseite und verweigert einen zu großen Sendevorgang bereits lokal.
Reliability-IntrospektionReliability, ReliabilityParam, Ordered, MaxRetransmits, MaxPacketLifeTimeLiest exakt aus, was der Kanal ausgehandelt hat.
SchließenCloseRE-CONFIG-basiertes Schließen; State geht zu closing, dann zu closed mit OnClose.
Ebene der Peer-VerbindungDataChannelCount, DataChannels[i]Zählt jeden offenen Kanal auf der Verbindung auf.

Desktop-, Monitor-, Fenster- & Bereichsaufnahme

Eine Aufnahmequelle speist denselben SendVideoFrame-Pfad wie eine Kamera — Bildschirminhalt ist einfach ein weiterer Video-Track.

FähigkeitMemberHinweise
Aufnahme-BackendTsgcScreenCapture_WinGDI-basierte Desktop-, Monitor-, Fenster- und Bereichsaufnahme. Derzeit nur unter Windows.
Monitore auflistenGetMonitors / MonitorIndexEine Zeile pro Monitor (Auflösung, Position, Primär-Flag); -1 nimmt den gesamten virtuellen Desktop auf.
BereichsaufnahmeRegionBildschirmkoordinaten-Rechteck; ein leeres Rechteck deaktiviert den Bereichsmodus.
Geschichtete / transparente FensterCaptureLayeredVerwendet CAPTUREBLT, sodass geschichtete und transparente Fenster einbezogen werden.
CursorIncludeCursorZeichnet den Mauszeiger in das aufgenommene Frame.
HerunterskalierungMaxWidth0 deaktiviert die Herunterskalierung; andernfalls werden breitere Frames vor dem Kodieren verkleinert.
BildrateAufnahmequelle FrameRateStandard 5 fps, bis zu 30 fps für Bildschirminhalt.
Kodieren & sendenTsgcRTCTrack.SendVideoFrameAufgenommene BGRA32-Frames speisen den Video-Encoder des Tracks wie jede andere Quelle.

Verpflichtende Medienverschlüsselung

Jedes RTP-, RTCP- und SCTP-Paket auf der Verbindung ist ab dem DTLS-Handshake verschlüsselt — es gibt keinen Klartext-Modus.

FähigkeitDetail
SchlüsselaustauschDTLS-Handshake über das nominierte ICE-Kandidatenpaar (RFC 5764 DTLS-SRTP), leitet das SRTP-Schlüsselmaterial ab.
DTLS-RolleBeim manuellen Signaling kommt die Rolle aus a=setup (Anbieter passiv, Antwortender aktiv); IsDTLSClient meldet sie, sobald sie geklärt ist.
SRTP-SchutzprofileSRTP_AES128_CM_SHA1_80, SRTP_AES128_CM_SHA1_32, SRTP_AEAD_AES_128_GCM, SRTP_AEAD_AES_256_GCM, ausgehandelt während des DTLS-Handshakes.
Kryptostatus pro SSRCEin kryptografischer Kontext (Rollover-Zähler, Replay-Fenster) pro SSRC, wie es RFC 3711 Abschnitt 3.2.3 verlangt, selbst wenn BUNDLE jede m-Zeile auf einen DTLS-SRTP-Transport legt.
UmfangDeckt RTP/RTCP-Medien und die SCTP-Assoziation der Datenkanäle ab — die gesamte Verbindung, nicht nur eine m-Zeile.
BackendOpenSSL-gestützte SRTP-Implementierung.

Congestion Control & Verlustresilienz

Ein verzögerungsbasierter Schätzer im Stil von Google Congestion Control verfolgt die Leitung und steuert die Ziel-Bitrate des Video-Encoders.

FähigkeitMemberHinweise
Verzögerungsbasierter SchätzerTsgcBWE_EstimatorGruppiert Pakete in 5 ms-Sendeschüben, führt einen Trendline-Filter über die Verzögerung zwischen den Gruppen aus und klassifiziert die Leitung als normal, überlastet oder unterlastet.
RatenregelungAIMD-ReglerÜberlastung senkt auf 85 % der bestätigten Rate, Unterlastung hält, normal erhöht (multiplikativ, solange weit von der letzten bekannten Obergrenze entfernt, additiv in ihrer Nähe).
VerlustobergrenzeVerlustraten-TrackingÜber 10 % Verlust sinkt die Obergrenze; unter 2 % erholt sie sich um 8 % pro Sekunde bis zu MaxBitrate.
Transport-weites FeedbackTWCC (RTCP)BuildRTCP_TWCC / ParseRTCP_TWCC transport-weites Congestion-Control-Feedback, mit REMB als Rückfall-Obergrenze für Peers, die nur das unterstützen.
EinschaltenRTCOptions.Media.CongestionControlWirkt nur, wenn die Remote-Description die passende Header-Erweiterung / das Feedback ebenfalls aushandelt.
VerlustwiederherstellungRTCOptions.Media.RTXRFC 4588-Neuübertragung des Video-Streams bei RTCP-NACK.
VorwärtsfehlerkorrekturRTCOptions.Media.FECRED-/ULPFEC-Schutz auf dem ausgehenden Video-Stream.
PacingRTCOptions.Media.PacingTaktet ausgehende Video-Pakete mit der geschätzten Bitrate, statt sie in Schüben zu senden.
Keyframe-WiederherstellungRTCP PLIRequestKeyFrame auf dem empfangenden Track fordert nach einem Verlust ein frisches Keyframe vom Sender an.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Entwickle mit sgcWebRTC

Lade die kostenlose Testversion herunter und öffne eine echte Peer-Verbindung von Delphi oder C++ Builder aus.