Motor de Medios WebRTC para Delphi y C++ Builder | sgcWebRTC

sgcWebRTC — el Motor de Medios WebRTC para Delphi y C++ Builder

Añade audio, vídeo, uso compartido de pantalla y canales de datos en tiempo real a tus aplicaciones Delphi y C++ Builder, sin tocar un navegador.

Sin navegador ni WebView
Windows, Linux, macOS, iOS y Android
Llamadas de audio y vídeo
Uso compartido de pantalla
Canales de datos SCTP
Cifrado DTLS-SRTP
STUN / TURN / ICE integrados
Tasa de bits adaptativa
Codificación H.264 por hardware
Interoperable con navegadores
Código fuente completo
Delphi y C++ Builder

Un componente, toda la conexión de pares

sgcWebRTC no añade nuevos componentes de paleta sobre sgcWebSockets — desbloquea el resto de la superficie con forma W3C en la misma clase TsgcRTCPeerConnection: señalización, conectividad, cifrado, canales de datos y medios, todo vive en un mismo objeto.

Señalización manual compatible con el navegador

CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription y AddIceCandidate construyen y consumen SDP real, de modo que el par al otro lado puede ser un navegador. Tú transportas el SDP por el canal de señalización que ya tengas.

Conectividad ICE, STUN y TURN

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. OnICECandidate y OnConnectionStateChange siguen el transporte.

Transporte cifrado DTLS-SRTP

Cada sesión se protege como exige WebRTC: un handshake DTLS sobre el par ICE nominado deriva las claves SRTP, y cada paquete RTP, RTCP y SCTP de la conexión va cifrado desde el primer paquete.

Canales de datos SCTP

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

Pistas de audio, vídeo y pantalla

AddTrack adjunta una pista de audio Opus o G.711, o una pista de vídeo VP8, H.264 o Motion JPEG; SendPCM y SendVideoFrame envían los medios capturados, y OnAudio y OnVideoFrame entregan la pista remota decodificada.

Estimación de ancho de banda y resiliencia

Un estimador basado en retardo al estilo de Google Congestion Control monitoriza el enlace y ajusta la tasa de bits objetivo del codificador de vídeo, respaldado por retransmisión RTCP NACK/PLI, RTX de RFC 4588 y RED/ULPFEC, el mismo conjunto de herramientas que usa un navegador en una red con pérdidas.

TsgcRTCPeerConnection

sgcWebRTC no añade una nueva clase a la paleta. Es el mismo componente TsgcRTCPeerConnection que se incluye en sgcWebSockets Enterprise, con la superficie de SDP, SCTP, RTP y SRTP desbloqueada sobre la conectividad ICE/TURN que Enterprise ya te ofrece.

TsgcRTCPeerConnection

Señalización SDP manual, conectividad ICE/TURN, cifrado DTLS-SRTP, canales de datos SCTP y pistas de audio/vídeo RTP en un solo componente. Renegociación, reinicio de ICE y la regla de glare de perfect-negotiation de W3C vienen integrados.

Ver componente →

Ver el desglose completo de características →

Una oferta y un canal de datos

Configura un servidor ICE, engancha los eventos de SDP e ICE, abre un canal de datos y luego 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");
}

Los RFC que implementa sgcWebRTC

Un motor de medios basado en estándares, no un transporte propietario.

RFC 8445 & 8489 — ICE / STUN

Recopilación y nominación de candidatos de Interactive Connectivity Establishment, y las solicitudes de binding STUN que hay detrás. Expuesto a través de TsgcICEClient y consumido automáticamente por TsgcRTCPeerConnection.

RFC 8656 — TURN

Candidatos retransmitidos a través de un servidor TURN cuando no es alcanzable una ruta directa o server-reflexive, mediante TsgcTURNClient.

RFC 8827 & 5764 — DTLS / DTLS-SRTP

El handshake DTLS que autentica la conexión de pares y deriva el material de claves SRTP para el cifrado de los medios.

RFC 8831 & 8832 — Canales de datos SCTP

SCTP sobre DTLS con el handshake de apertura DCEP, paridad de id de stream según el rol DTLS, y entrega ordenada / parcialmente fiable.

RFC 3550 & 3711 — RTP / SRTP

Transporte en tiempo real para audio y vídeo y su perfil cifrado, con informes RTCP de emisor/receptor y retroalimentación NACK, PLI y REMB.

RFC 8829 — JSEP

La máquina de estados de oferta/respuesta detrás de CreateOffer / CreateAnswer / SetLocalDescription / SetRemoteDescription, incluyendo la renegociación y la resolución de glare.

Un complemento de sgcWebSockets Enterprise

sgcWebRTC se licencia como complemento. Todas las licencias incluyen código fuente completo, 1 año de actualizaciones y un 70% de descuento en la renovación.

sgcWebRTC

€299

Licencias Single, Team y Site disponibles. Código fuente completo incluido.

  • Motor de medios TsgcRTCPeerConnection
  • Señalización SDP, canales de datos SCTP, medios RTP
  • Delphi y C++ Builder
  • Código fuente completo
  • 1 año de actualizaciones

★ Requiere sgcWebSockets Enterprise

No disponible para Standard ni Professional. También incluido en el paquete All-Access.

Ver precios y comprar

WebRTC en Delphi, preguntas frecuentes

Las preguntas que hacen los desarrolladores antes de añadir audio, vídeo o canales de datos en tiempo real a una aplicación Delphi o C++ Builder.

No de serie, y la mayoría de las bibliotecas de terceros se quedan en la señalización. sgcWebSockets Enterprise incluye el componente base TsgcRTCPeerConnection para la conectividad ICE/TURN; sgcWebRTC añade el motor de medios sobre él — oferta/respuesta SDP manual, transporte cifrado DTLS-SRTP, canales de datos SCTP, y audio Opus/G.711 con vídeo VP8/H.264 — de modo que el componente puede realmente abrir una conexión de pares con un navegador e intercambiar medios, no solo retransmitir mensajes de señalización.
Sí. CreateOffer / CreateAnswer construyen SDP estándar y SetLocalDescription / SetRemoteDescription / AddIceCandidate lo consumen, siguiendo la máquina de estados JSEP (RFC 8829) que espera un navegador. Tú transportas el SDP y los candidatos por tu propio canal de señalización, igual que hace una aplicación de navegador a través de su servidor de señalización.
Sí. CreateDataChannel abre un RTCDataChannel sobre SCTP-sobre-DTLS (RFC 8831/8832), ordenado o desordenado, fiable o con un límite de retransmisiones o de vida. OnDataChannel se dispara para un canal que el par remoto ha abierto, y Send / SendBytes mueven cargas de texto o binarias una vez que el canal está abierto.
Audio: Opus y G.711 (PCMU/PCMA). Vídeo: VP8 mediante un binding a libvpx, y H.264 a través del propio codificador por hardware del sistema operativo — Media Foundation en Windows, VideoToolbox en iOS/macOS, MediaCodec en Android — además de una vía Motion JPEG en Windows. Consulta el desglose de características para la matriz de plataformas.
Sí, y no se puede desactivar para los medios: un handshake DTLS-SRTP se ejecuta sobre el par ICE nominado y todos los paquetes RTP, RTCP y SCTP de la conexión van cifrados, el mismo modelo de cifrado obligatorio que impone un navegador.
No. Varios otros enfoques de WebRTC en Delphi funcionan incrustando un motor de navegador completo (un wrapper de Chromium Embedded Framework o un control TWebBrowser/TEdgeBrowser) y manejando su pila JavaScript de WebRTC desde Pascal. sgcWebRTC no: TsgcRTCPeerConnection es Object Pascal compilado que llama directamente a las propias API de medios del sistema operativo (Media Foundation en Windows, VideoToolbox en iOS/macOS, MediaCodec en Android), sin runtime de navegador, sin binario de Chromium incrustado y sin puente JavaScript en el proceso. Eso mantiene el binario pequeño y permite que el mismo componente funcione en Android e iOS, y en servicios headless o dispositivos kiosco sin ningún navegador instalado.
sgcWebRTC sigue la matriz de soporte de sgcWebSockets, de Delphi 7 a Delphi 13 Florence y las versiones equivalentes de C++ Builder. El instalador de prueba es por versión de IDE y ya contiene los componentes de WebRTC, así que no hay una descarga aparte.
No para el motor de medios. El port de sgcWebSockets para .NET incluye un relé de señalización WebRTC (TsgcWSProtocol_WebRTC_Server) para el demo clásico de navegador a navegador al estilo AppRTC, pero no un equivalente .NET de TsgcRTCPeerConnection. sgcWebRTC en sí es solo para Delphi y C++ Builder.
sgcWebRTC es un complemento de sgcWebSockets Enterprise — no está disponible para Standard ni Professional — y también se incluye en el paquete All-Access. Hay licencias Single, Team y Site disponibles, cada una con código fuente completo y un año de actualizaciones. Descarga la prueba para evaluarlo en tu propio proyecto antes de comprar.
3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
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

Pon una conexión de pares real detrás de tu aplicación Delphi

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

Otros productos de eSeGeCe

Combina sgcWebRTC con nuestras otras bibliotecas de componentes para Delphi, C++ Builder y .NET.

sgcWebSockets

Componentes empresariales de WebSocket, HTTP/2, MQTT, AMQP e IA/LLM. sgcWebRTC es un complemento de sgcWebSockets Enterprise.

Más información →

sgcQUIC

Componentes cliente y servidor de QUIC (RFC 9000) y HTTP/3 (RFC 9114) sobre el motor QUIC nativo de OpenSSL 3.5.

Más información →

sgcHTML

89 componentes HTML/UI del lado del servidor con vinculación a datos para Delphi, C++ Builder y .NET, con Bootstrap 5 y htmx.

Más información →

sgcSign

Firmas digitales empresariales — XAdES, PAdES, CAdES y ASiC con 10 proveedores de claves y 21 perfiles por país de la UE.

Más información →

sgcOpenAPI

Parser de OpenAPI 3.0 y generador de SDK. Convierte cualquier especificación OpenAPI en un cliente Delphi fuertemente tipado en segundos.

Más información →

sgcBiometrics

Componentes nativos de Windows Hello, huella dactilar y Windows Biometric Framework para Delphi y C++ Builder.

Más información →

sgcIndy

Componentes Indy TCP/IP actualizados con TLS moderno, IPv6 y compatibilidad con HTTP/2 para Delphi 7 a 13.

Más información →

sgcAI

15 componentes de IA, LLM y MCP para Delphi y C++ Builder. Un solo componente de chat llega a OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok y Mistral.

Más información →

sgcMQ

Componentes cliente de MQTT 3.1.1 y 5.0, AMQP 0.9.1, AMQP 1.0, Apache Kafka y STOMP para Delphi y C++ Builder.

Más información →