Mecanismo de Mídia WebRTC para Delphi & C++ Builder | sgcWebRTC

sgcWebRTC — o Mecanismo de Mídia WebRTC para Delphi & C++ Builder

Adicione áudio, vídeo, compartilhamento de tela e canais de dados em tempo real aos seus aplicativos Delphi e C++ Builder, sem tocar em um navegador.

Sem Necessidade de Navegador / WebView
Windows, Linux, macOS, iOS e Android
Chamadas de Áudio e Vídeo
Compartilhamento de Tela
Canais de Dados SCTP
Criptografado com DTLS-SRTP
STUN / TURN / ICE Integrados
Taxa de Bits Adaptativa
Codificação H.264 por Hardware
Interoperável com Navegadores
Código-Fonte Completo
Delphi & C++ Builder

Um Único Componente, toda a Peer Connection

O sgcWebRTC não adiciona novos componentes de paleta sobre o sgcWebSockets — ele desbloqueia o restante da superfície no formato W3C sobre a mesma classe TsgcRTCPeerConnection: sinalização, conectividade, criptografia, canais de dados e mídia, tudo reunido em um único objeto.

Sinalização manual e compatível com navegadores

CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription e AddIceCandidate constroem e consomem SDP real, de modo que o par do outro lado pode ser um navegador. Você transporta o SDP pelo canal de sinalização que já possui.

Conectividade ICE, STUN e TURN

Coleta de candidatos ICE trickle ou não-trickle contra RTCOptions.ICEServers, com candidatos server-reflexive vindos do STUN e candidatos retransmitidos vindos do TURN quando um caminho direto está bloqueado. OnICECandidate e OnConnectionStateChange acompanham o transporte.

Transporte criptografado com DTLS-SRTP

Toda sessão é protegida do jeito que o WebRTC exige: um handshake DTLS sobre o par ICE nomeado deriva as chaves SRTP, e todo pacote RTP, RTCP e SCTP na conexão é criptografado desde o primeiro pacote.

Canais de dados SCTP

CreateDataChannel abre um canal ordenado ou não ordenado, confiável ou parcialmente confiável (RFC 8831/8832) sobre SCTP-over-DTLS. Send, SendBytes e os eventos OnMessage / OnMessageBinary movimentam payloads de texto e binários.

Faixas de áudio, vídeo e tela

AddTrack anexa uma faixa de áudio Opus ou G.711, ou uma faixa de vídeo VP8, H.264 ou Motion JPEG; SendPCM e SendVideoFrame enviam a mídia capturada, OnAudio e OnVideoFrame entregam a faixa remota decodificada.

Estimativa de largura de banda & resiliência

Um estimador baseado em atraso, no estilo do Google Congestion Control, acompanha o enlace e controla a taxa de bits alvo do codificador de vídeo, apoiado por retransmissão RTCP NACK/PLI, RTX (RFC 4588) e RED/ULPFEC, o mesmo conjunto de ferramentas que um navegador usa em uma rede com perdas.

TsgcRTCPeerConnection

O sgcWebRTC não adiciona uma nova classe à paleta. É o mesmo componente TsgcRTCPeerConnection que acompanha o sgcWebSockets Enterprise, com a superfície de SDP, SCTP, RTP e SRTP desbloqueada sobre a conectividade ICE/TURN que o Enterprise já oferece.

TsgcRTCPeerConnection

Sinalização SDP manual, conectividade ICE/TURN, criptografia DTLS-SRTP, canais de dados SCTP e faixas de áudio/vídeo RTP em um único componente. Renegociação, reinício de ICE e a regra de perfect-negotiation do W3C já estão incluídos.

Ver componente →

Veja a matriz completa de recursos →

Uma Oferta, e um Canal de Dados

Defina um servidor ICE, conecte os eventos de SDP e ICE, abra um canal de dados e então crie a oferta. A mesma API em Delphi e 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");
}

Os RFCs que o sgcWebRTC Implementa

Um mecanismo de mídia baseado em padrões, não um transporte proprietário.

RFC 8445 & 8489 — ICE / STUN

Coleta e nomeação de candidatos ICE (Interactive Connectivity Establishment), e as requisições de binding STUN por trás dela. Exposto através de TsgcICEClient e consumido automaticamente por TsgcRTCPeerConnection.

RFC 8656 — TURN

Candidatos retransmitidos através de um servidor TURN quando um caminho direto ou server-reflexive não é alcançável, via TsgcTURNClient.

RFC 8827 & 5764 — DTLS / DTLS-SRTP

O handshake DTLS que autentica a peer connection e deriva o material de chaveamento SRTP para a mídia criptografada.

RFC 8831 & 8832 — Canais de Dados SCTP

SCTP sobre DTLS com o handshake de abertura DCEP, paridade de stream id por papel DTLS, e entrega ordenada / parcialmente confiável.

RFC 3550 & 3711 — RTP / SRTP

Transporte em tempo real para áudio e vídeo e seu perfil criptografado, com relatórios de emissor/receptor RTCP, NACK, PLI e feedback REMB.

RFC 8829 — JSEP

A máquina de estados de oferta/resposta por trás de CreateOffer / CreateAnswer / SetLocalDescription / SetRemoteDescription, incluindo renegociação e resolução de glare.

Um Complemento do sgcWebSockets Enterprise

O sgcWebRTC é licenciado como complemento. Todas as licenças incluem código-fonte completo, 1 ano de atualizações e um desconto de renovação de 70%.

sgcWebRTC

€299

Licenças Single, Team e Site disponíveis. Código-fonte completo incluído.

  • Mecanismo de mídia TsgcRTCPeerConnection
  • Sinalização SDP, canais de dados SCTP, mídia RTP
  • Delphi & C++ Builder
  • Código-Fonte Completo
  • 1 Ano de Atualizações

★ Requer sgcWebSockets Enterprise

Não disponível para Standard ou Professional. Também incluído no pacote All-Access.

Ver Preços e Comprar

WebRTC no Delphi, Perguntas Frequentes

As perguntas que os desenvolvedores fazem antes de adicionar áudio, vídeo ou canais de dados em tempo real a uma aplicação Delphi ou C++ Builder.

Não nativamente, e a maioria das bibliotecas de terceiros para no estágio de sinalização. O sgcWebSockets Enterprise já traz o componente base TsgcRTCPeerConnection para conectividade ICE/TURN; o sgcWebRTC adiciona o mecanismo de mídia sobre ele — oferta/resposta SDP manual, transporte criptografado DTLS-SRTP, canais de dados SCTP e áudio Opus/G.711 com vídeo VP8/H.264 — de modo que o componente consiga de fato abrir uma peer connection com um navegador e trocar mídia, não apenas retransmitir mensagens de sinalização.
Sim. CreateOffer / CreateAnswer constroem SDP padrão e SetLocalDescription / SetRemoteDescription / AddIceCandidate o consomem, seguindo a máquina de estados JSEP (RFC 8829) que um navegador espera. Você transporta o SDP e os candidatos pelo seu próprio canal de sinalização, exatamente como uma aplicação de navegador faz através do seu servidor de sinalização.
Sim. CreateDataChannel abre um RTCDataChannel sobre SCTP-over-DTLS (RFC 8831/8832), ordenado ou não ordenado, confiável ou com um limite de retransmissão ou de tempo de vida. OnDataChannel dispara para um canal que o par remoto abriu, e Send / SendBytes movimentam payloads de texto ou binários assim que o canal está aberto.
Áudio: Opus e G.711 (PCMU/PCMA). Vídeo: VP8 através de um binding para libvpx, e H.264 através do próprio codificador de hardware do sistema operacional — Media Foundation no Windows, VideoToolbox no iOS/macOS, MediaCodec no Android — além de um caminho Motion JPEG no Windows. Veja a matriz de recursos para a tabela de plataformas.
Sim, e não pode ser desligada para a mídia: um handshake DTLS-SRTP roda sobre o par ICE nomeado e todo pacote RTP, RTCP e SCTP na conexão é criptografado, o mesmo modelo de criptografia obrigatória que um navegador impõe.
Não. Várias outras abordagens de WebRTC no Delphi funcionam embutindo um navegador completo (um wrapper do Chromium Embedded Framework ou um controle TWebBrowser/TEdgeBrowser) e controlando sua pilha WebRTC em JavaScript a partir do Pascal. O sgcWebRTC não: TsgcRTCPeerConnection é Object Pascal compilado, chamando diretamente as próprias APIs de mídia do sistema operacional (Media Foundation no Windows, VideoToolbox no iOS/macOS, MediaCodec no Android), sem runtime de navegador, sem binário Chromium embutido e sem ponte JavaScript no processo. Isso mantém o binário pequeno e permite que o mesmo componente rode em Android e iOS, e em serviços headless ou dispositivos kiosk sem nenhum navegador instalado.
O sgcWebRTC segue a matriz de suporte do sgcWebSockets, do Delphi 7 ao Delphi 13 Florence e as versões correspondentes do C++ Builder. O instalador de avaliação é por versão da IDE e já contém os componentes WebRTC, portanto não há download separado.
Não para o mecanismo de mídia. A versão .NET do sgcWebSockets inclui um relay de sinalização WebRTC (TsgcWSProtocol_WebRTC_Server) para o clássico demo navegador-a-navegador ao estilo AppRTC, mas nenhum equivalente .NET de TsgcRTCPeerConnection. O sgcWebRTC em si é exclusivo para Delphi e C++ Builder.
O sgcWebRTC é um complemento do sgcWebSockets Enterprise — não está disponível para Standard ou Professional — e também está incluído no pacote All-Access. Estão disponíveis licenças Single, Team e Site, cada uma com código-fonte completo e um ano de atualizações. Baixe a versão de avaliação para testá-lo no seu próprio projeto antes de comprar.
3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso

Coloque uma Peer Connection Real por Trás da Sua Aplicação Delphi

Áudio, vídeo e canais de dados, criptografados de ponta a ponta, na linguagem que você já usa.

Outros Produtos da eSeGeCe

Combine o sgcWebRTC com nossas outras bibliotecas de componentes para Delphi, C++ Builder e .NET.

sgcWebSockets

Componentes empresariais de WebSocket, HTTP/2, MQTT, AMQP e IA/LLM. O sgcWebRTC é um complemento do sgcWebSockets Enterprise.

Saiba mais →

sgcQUIC

Componentes cliente e servidor QUIC (RFC 9000) e HTTP/3 (RFC 9114) sobre o mecanismo QUIC nativo do OpenSSL 3.5.

Saiba mais →

sgcHTML

89 componentes HTML/UI server-side data-aware para Delphi, C++ Builder e .NET, com Bootstrap 5 e htmx.

Saiba mais →

sgcSign

Assinaturas digitais empresariais — XAdES, PAdES, CAdES e ASiC com 10 provedores de chaves e 21 perfis de países da UE.

Saiba mais →

sgcOpenAPI

Parser de OpenAPI 3.0 e gerador de SDK. Transforme qualquer especificação OpenAPI em um cliente Delphi fortemente tipado em segundos.

Saiba mais →

sgcBiometrics

Componentes nativos de Windows Hello, impressão digital e Windows Biometric Framework para Delphi e C++ Builder.

Saiba mais →

sgcIndy

Componentes Indy TCP/IP atualizados com TLS moderno, suporte a IPv6 e HTTP/2 para Delphi 7 a 13.

Saiba mais →

sgcAI

15 componentes de IA, LLM e MCP para Delphi e C++ Builder. Um único componente de chat alcança OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok e Mistral.

Saiba mais →

sgcMQ

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

Saiba mais →