RTC-Peer-Connection-Komponente — sgcWebRTC | eSeGeCe

RTC Peer Connection

TsgcRTCPeerConnection — die eine Komponente hinter sgcWebRTC: ICE/TURN-Konnektivität, manuelles SDP-Offer/Answer-Signaling (RFC 8829 JSEP), DTLS-SRTP-verschlüsselter Transport, SCTP-Datenkanäle (RFC 8831/8832) und RTP-Audio-/Video-Tracks, in Delphi und C++ Builder.

TsgcRTCPeerConnection

Setze RTCOptions, hänge die SDP- und ICE-Ereignisse ein, und steuere dann entweder den Offer/Answer-Austausch selbst oder öffne einen Datenkanal und lass CreateOffer das erledigen. Aufgebaut auf demselben ICE/DTLS-Transport wie die Basiskomponente in sgcWebSockets Enterprise.

Komponentenklasse

TsgcRTCPeerConnection

Unit

sgcP2P (re-exportiert sgcP2P_RTCPeerConnection)

Standards

RFC 8445, 8489, 8656, 8827, 5764, 8831, 8832, 3550, 3711, 8829

Sprachen

Delphi, C++ Builder

Einen Video-Track hinzufügen und anbieten

Hänge einen Track mit AddTrack an, hänge die SDP-Ereignisse ein und rufe dann CreateOffer auf. Sende aSDP über deinen eigenen Signaling-Kanal an den Remote-Peer und speise dessen Antwort über SetRemoteDescription zurück.

uses
  sgcP2P;

var
  oRTC: TsgcRTCPeerConnection;
  oTrack: TsgcRTCTrack;
begin
  oRTC := TsgcRTCPeerConnection.Create(nil);
  oRTC.RTCOptions.ICEServers.AddURL('stun:stun.l.google.com:19302');
  oRTC.OnLocalDescription      := OnLocalDescriptionHandler;
  oRTC.OnICECandidate          := OnICECandidateHandler;
  oRTC.OnConnectionStateChange := OnConnectionStateChangeHandler;
  oRTC.OnTrack                 := OnTrackHandler;

  oTrack := oRTC.AddTrack(rtctkVideo, cctVideoH264);
  oTrack.OnEncodedFrame := OnEncodedFrameHandler;   // remote frames, once negotiated

  oRTC.CreateOffer;   // gathers ICE candidates, builds the SDP offer, fires OnLocalDescription
end;

procedure TForm1.OnLocalDescriptionHandler(Sender: TObject;
  const aType, aSDP: string);
begin
  // send { type: aType, sdp: aSDP } to the remote peer
end;

// once the remote answer arrives over your signaling channel:
oRTC.SetRemoteDescription('answer', vRemoteSDP);

// and for every remote ICE candidate it sends:
oRTC.AddIceCandidate(vCandidate, vSdpMid, vSdpMLineIndex);
// includes: sgcP2P.hpp

TsgcRTCPeerConnection *oRTC = new TsgcRTCPeerConnection(NULL);
oRTC->RTCOptions->ICEServers->AddURL("stun:stun.l.google.com:19302");
oRTC->OnLocalDescription      = OnLocalDescriptionHandler;
oRTC->OnICECandidate          = OnICECandidateHandler;
oRTC->OnConnectionStateChange = OnConnectionStateChangeHandler;
oRTC->OnTrack                 = OnTrackHandler;

TsgcRTCTrack *oTrack = oRTC->AddTrack(rtctkVideo, cctVideoH264);
oTrack->OnEncodedFrame = OnEncodedFrameHandler;    // remote frames, once negotiated

oRTC->CreateOffer();   // gathers ICE candidates, builds the SDP offer, fires OnLocalDescription

void __fastcall TForm1::OnLocalDescriptionHandler(TObject *Sender,
  const String aType, const String aSDP)
{
  // send { type: aType, sdp: aSDP } to the remote peer
}

// once the remote answer arrives over your signaling channel:
oRTC->SetRemoteDescription("answer", vRemoteSDP);

// and for every remote ICE candidate it sends:
oRTC->AddIceCandidate(vCandidate, vSdpMid, vSdpMLineIndex);

Wichtige Eigenschaften, Methoden & Ereignisse

Die Member, die du am häufigsten brauchst. Die vollständige Aufschlüsselung nach Fähigkeit findest du in der Funktionsübersicht.

Konfiguration

RTCOptions hält ICE, ICEServers, DTLS / DTLSOptions, Media (Congestion Control, FEC, Pacing, RTX) und die klassischen WebSocket-Signaling-Einstellungen.

Signaling

CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription, AddIceCandidate, RestartIce, Close.

Status

ConnectionState, SignalingState, LocalDescription, RemoteDescription, Renegotiating, NegotiationNeeded, Polite, TrickleICE.

Datenkanäle

CreateDataChannel, DataChannelCount, DataChannels[i], OnDataChannel.

Media-Tracks

AddTrack, RemoveTrack, TrackCount, Tracks[i], OnTrack.

Ereignisse

OnLocalDescription, OnICECandidate, OnConnectionStateChange, OnNegotiationNeeded, OnError, dazu die klassische Familie OnRTCConnect / OnRTCCandidatePairNominated / OnRTCException.

Weiter erkunden

Online-HilfeVollständige API-Referenz und Anleitung für TsgcRTCPeerConnection.
Vollständige FunktionsübersichtAudio, Video, Datenkanäle, Bildschirmfreigabe, SRTP und Bandbreitenschätzung.
Kostenlose Testversion herunterladenFühre die Peer-Verbindung gegen einen Browser oder einen anderen nativen Peer aus.
PreiseSingle-, Team- und Site-Lizenzen mit vollständigem Quellcode.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Bereit loszulegen?

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