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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 →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");
}
Um mecanismo de mídia baseado em padrões, não um transporte proprietário.
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.
Candidatos retransmitidos através de um servidor TURN quando um caminho direto ou server-reflexive não é alcançável, via TsgcTURNClient.
O handshake DTLS que autentica a peer connection e deriva o material de chaveamento SRTP para a mídia criptografada.
SCTP sobre DTLS com o handshake de abertura DCEP, paridade de stream id por papel DTLS, e entrega ordenada / parcialmente confiável.
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.
A máquina de estados de oferta/resposta por trás de CreateOffer / CreateAnswer / SetLocalDescription / SetRemoteDescription, incluindo renegociação e resolução de glare.
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%.
€299
Licenças Single, Team e Site disponíveis. Código-fonte completo incluído.
★ Requer sgcWebSockets Enterprise
Não disponível para Standard ou Professional. Também incluído no pacote All-Access.
Ver Preços e ComprarAs 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.
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.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.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.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.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.Combine o sgcWebRTC com nossas outras bibliotecas de componentes para Delphi, C++ Builder e .NET.
Componentes empresariais de WebSocket, HTTP/2, MQTT, AMQP e IA/LLM. O sgcWebRTC é um complemento do sgcWebSockets Enterprise.
Saiba mais →Componentes cliente e servidor QUIC (RFC 9000) e HTTP/3 (RFC 9114) sobre o mecanismo QUIC nativo do OpenSSL 3.5.
Saiba mais →89 componentes HTML/UI server-side data-aware para Delphi, C++ Builder e .NET, com Bootstrap 5 e htmx.
Saiba mais →Assinaturas digitais empresariais — XAdES, PAdES, CAdES e ASiC com 10 provedores de chaves e 21 perfis de países da UE.
Saiba mais →Parser de OpenAPI 3.0 e gerador de SDK. Transforme qualquer especificação OpenAPI em um cliente Delphi fortemente tipado em segundos.
Saiba mais →Componentes nativos de Windows Hello, impressão digital e Windows Biometric Framework para Delphi e C++ Builder.
Saiba mais →Componentes Indy TCP/IP atualizados com TLS moderno, suporte a IPv6 e HTTP/2 para Delphi 7 a 13.
Saiba mais →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 →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 →