sgcWebRTC Llamadas y datos, de par a par. Sin navegador dentro.

sgcWebRTC es el motor de medios WebRTC para Delphi y C++ Builder. Añade a tus aplicaciones llamadas de audio y vídeo en tiempo real, uso compartido de pantalla y canales de datos SCTP, cifrados con DTLS-SRTP e interoperables con el RTCPeerConnection de cualquier navegador. Es Object Pascal compilado que llama a las propias API de medios del sistema operativo, sin WebView y sin puente de JavaScript en tu proceso.

  • Delphi
  • C++ Builder
  • Windows, Linux, macOS
  • iOS y Android
  • STUN / TURN / ICE
  • Sin WebView
TU CANAL DE SEÑALIZACIÓN WebSocket, HTTP, lo que quieras oferta SDP respuesta SDP + candidatos ICE trickle App Delphi TsgcRTCPeerConnection audio · Opus video · H.264 canal de datos 'chat' sin WebView en el proceso Navegador o Delphi RTCPeerConnection OnAudio OnVideoFrame OnMessage JSEP, RFC 8829 DTLS-SRTP medios RTP + datos SCTP STUN dirección pública TURN relay si hay bloqueo ICE La señalización pasa por tu servidor. Los medios van directos entre los pares.
  • 1Componente para toda la conexión entre pares
  • 5Plataformas: Windows, Linux, macOS, iOS y Android
  • 5Códecs: Opus, G.711, VP8, H.264 y Motion JPEG
  • 100%De los paquetes RTP, RTCP y SCTP, cifrados
  • 0Navegadores o WebViews en tu proceso
Míralo funcionar

Conoce sgcWebRTC en dos minutos.

Medios y canales de datos entre pares desde Delphi: STUN, TURN, ICE y RTCPeerConnection, del navegador al código nativo. Con narración y subtítulos. No se descarga nada hasta que pulses reproducir.

Un componente

Toda la conexión entre pares en un solo objeto.

sgcWebRTC no añade nuevos componentes a la paleta. Desbloquea el resto de la superficie con forma W3C en el mismo TsgcRTCPeerConnection que se incluye en sgcWebSockets Enterprise: señalización, conectividad, cifrado, canales de datos y medios.

Señalización compatible con navegadores

CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription y AddIceCandidate construyen y consumen SDP real. La renegociación, el reinicio de ICE y la regla de colisión de la negociación perfecta del W3C ya vienen integradas.

Ver el componente →

STUN, TURN e ICE

Recopilación ICE trickle o no trickle contra RTCOptions.ICEServers, con candidatos server-reflexive de STUN y candidatos retransmitidos de TURN cuando una ruta directa está bloqueada.

Cifrado DTLS-SRTP

Un handshake DTLS sobre el par ICE nominado deriva las claves SRTP, y cada paquete RTP, RTCP y SCTP va cifrado desde el primero. No se puede desactivar para los medios, el mismo modelo que impone un navegador.

Pistas de audio y vídeo

AddTrack adjunta una pista de audio Opus o G.711, o una pista de vídeo VP8, H.264 o Motion JPEG. H.264 usa el codificador por hardware de la plataforma: Media Foundation, VideoToolbox o MediaCodec.

Matriz de códecs y plataformas →

Canales de datos SCTP

CreateDataChannel abre un canal ordenado o desordenado, fiable o parcialmente fiable (RFC 8831/8832). Send, SendBytes, OnMessage y OnMessageBinary mueven cargas de texto y binarias.

Tasa de bits adaptativa

Un estimador basado en el retardo, al estilo de Google Congestion Control, fija la tasa de bits objetivo del codificador de vídeo, con el respaldo de RTCP NACK y PLI, RTX de la RFC 4588 y RED/ULPFEC.

Primeros pasos

Una oferta y un canal de datos.

Configura un servidor ICE, enlaza los eventos SDP e ICE, abre un canal de datos y crea la oferta. La misma API en Delphi y C++ Builder.

uses
  sgcP2P;
var
  oRTC: TsgcRTCPeerConnection;
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.OnDataChannel := OnDataChannelHandler;
  oRTC.CreateDataChannel('chat'); // forces RTCOptions.DTLS on
  oRTC.CreateOffer; // gathers ICE candidates, builds the SDP offer
end;

procedure TForm1.OnLocalDescriptionHandler(Sender: TObject;
  const aType, aSDP: string);
begin
  // send aType + aSDP to the remote peer over your own signaling channel
end;

procedure TForm1.OnDataChannelHandler(Sender: TObject;
  aChannel: TsgcRTCDataChannel);
begin
  aChannel.OnMessage := OnChannelMessageHandler;
  aChannel.Send('hello');
end;
// 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->OnDataChannel = OnDataChannelHandler;
oRTC->CreateDataChannel("chat"); // forces RTCOptions->DTLS on
oRTC->CreateOffer(); // gathers ICE candidates, builds the SDP offer

void __fastcall TForm1::OnLocalDescriptionHandler(TObject *Sender,
  const String aType, const String aSDP)
{
  // send aType + aSDP to the remote peer over your own signaling channel
}

void __fastcall TForm1::OnDataChannelHandler(TObject *Sender,
  TsgcRTCDataChannel *aChannel)
{
  aChannel->OnMessage = OnChannelMessageHandler;
  aChannel->Send("hello");
}
  1. Apúntalo a un servidor STUN o TURNAñade los servidores ICE a RTCOptions.ICEServers. Los candidatos se recopilan contra ellos, de forma trickle o todos a la vez.
  2. Transporta el SDP por tu propio canalOnLocalDescription te entrega la oferta o la respuesta, y OnICECandidate cada candidato. Envíalos por cualquier servidor de señalización, igual que hace una aplicación de navegador.
  3. Habla de par a parCuando termina el handshake DTLS, los canales de datos se abren y las pistas de audio y vídeo fluyen directamente entre los pares, cifradas.

Este es un lado del intercambio. El otro lado, el relay de señalización y las pistas de medios por encima están en la guía de tareas.

Dos apps Delphi, de par a par

Dónde encaja

WebRTC sin incrustar un navegador.

Otros enfoques de WebRTC en Delphi incrustan un motor de navegador completo y manejan su pila de JavaScript desde Pascal. sgcWebRTC llama directamente a las API de medios del sistema operativo, lo que mantiene el binario pequeño y permite que el mismo componente funcione donde no hay ningún navegador instalado.

De app Delphi a navegador

El SDP estándar y la máquina de estados JSEP (RFC 8829) permiten que un cliente nativo de Delphi o C++ Builder llame al RTCPeerConnection de una página web, y al revés.

De app Delphi a app Delphi

Dos aplicaciones nativas intercambian audio, vídeo y canales de datos directamente, y solo la señalización pasa por tu servidor.

Leer la guía de tareas →

Móvil, sin interfaz y quioscos

Sin un binario de Chromium incrustado, el mismo componente funciona en Android e iOS, y en servicios sin interfaz o dispositivos de quiosco sin navegador instalado.

Pantalla compartida y soporte remoto

Captura el escritorio, un monitor, una ventana o una región en Windows, cursor incluido, y transmítelo como pista de vídeo con un canal de datos al lado.

Llamadas de voz y vídeo

Los backends nativos de captura de cámara y micrófono en Windows, Linux, plataformas Apple y Android alimentan las pistas directamente, y los backends de renderizado muestran el vídeo remoto.

Enlaces de datos de baja latencia

Usa los canales de datos por sí solos para chat, telemetría, transferencia de archivos o estado de juego, con la fiabilidad y el orden elegidos por canal.

Licencias

Un add-on de sgcWebSockets Enterprise.

sgcWebRTC desbloquea el motor de medios en el TsgcRTCPeerConnection que sgcWebSockets Enterprise ya incluye con conectividad ICE y TURN. No está disponible para Standard ni Professional. Cada licencia incluye el código fuente completo y un año de actualizaciones.

sgcWebSockets Enterprise

La base sobre la que se construye: clientes STUN, TURN e ICE, el TsgcRTCPeerConnection base, además de WebSocket, HTTP/2, MQTT y el resto de la librería.

€699 / desarrollador

sgcWebRTC

Señalización SDP, DTLS-SRTP, canales de datos SCTP, pistas de audio y vídeo, captura de pantalla y estimación de ancho de banda. Licencias Single, Team y Site.

€299 / desarrollador

Paquete All-Access

Todos los productos de eSeGeCe durante un año, Delphi y .NET, con sgcWebSockets Enterprise y sgcWebRTC incluidos, y con soporte Premium.

€1,059 / desarrollador

El instalador de prueba es por versión de IDE y ya contiene los componentes WebRTC, así que no hay una descarga aparte.

Ver los precios de sgcWebRTC

Pon una conexión real entre pares detrás de tu app Delphi.

Audio, vídeo y canales de datos, cifrados de extremo a extremo, desde el lenguaje que ya usas.

Lo último del blog

Ver todas las publicaciones →

Estás viendo la vista sgcWebRTC de eSeGeCe.

Mostrar otro enfoque →
Garantía de devolución de 30 días¿No estás satisfecho? Solicita un reembolso completo en los 30 días posteriores a la compra. Ver política de reembolso