Componente RTC Peer Connection — sgcWebRTC | eSeGeCe

RTC Peer Connection

TsgcRTCPeerConnection — o único componente por trás do sgcWebRTC: conectividade ICE/TURN, sinalização manual de oferta/resposta SDP (RFC 8829 JSEP), transporte criptografado DTLS-SRTP, canais de dados SCTP (RFC 8831/8832) e faixas de áudio/vídeo RTP, em Delphi e C++ Builder.

TsgcRTCPeerConnection

Defina RTCOptions, conecte os eventos de SDP e ICE, e então conduza a troca de oferta/resposta você mesmo ou abra um canal de dados e deixe o CreateOffer fazer isso. Construído sobre o mesmo transporte ICE/DTLS do componente base no sgcWebSockets Enterprise.

Classe do componente

TsgcRTCPeerConnection

Unit

sgcP2P (reexporta sgcP2P_RTCPeerConnection)

Padrões

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

Linguagens

Delphi, C++ Builder

Adicione uma Faixa de Vídeo e Ofereça-a

Anexe uma faixa com AddTrack, conecte os eventos de SDP, e então chame CreateOffer. Envie aSDP ao par remoto pelo seu próprio canal de sinalização e alimente a resposta dele de volta através de SetRemoteDescription.

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);

Principais propriedades, métodos & eventos

Os membros que você usa com mais frequência. Veja a matriz de recursos para o detalhamento completo por capacidade.

Configuração

RTCOptions reúne ICE, ICEServers, DTLS / DTLSOptions, Media (controle de congestionamento, FEC, pacing, RTX) e as configurações legadas de sinalização WebSocket.

Sinalização

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

Estado

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

Canais de dados

CreateDataChannel, DataChannelCount, DataChannels[i], OnDataChannel.

Faixas de mídia

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

Eventos

OnLocalDescription, OnICECandidate, OnConnectionStateChange, OnNegotiationNeeded, OnError, além da família legada OnRTCConnect / OnRTCCandidatePairNominated / OnRTCException.

Continue explorando

Ajuda onlineReferência completa da API e guia de uso do TsgcRTCPeerConnection.
Matriz de Recursos CompletaÁudio, vídeo, canais de dados, compartilhamento de tela, SRTP e estimativa de largura de banda.
Baixar Versão de Avaliação GratuitaExecute a peer connection contra um navegador ou outro par nativo.
PreçosLicenças Single, Team e Site com código-fonte completo.
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Pronto para Começar?

Baixe a versão de avaliação gratuita e abra uma peer connection a partir do Delphi ou C++ Builder.