sgcWebRTC Chamadas e dados, peer to peer. Sem navegador embutido.

O sgcWebRTC é o mecanismo de mídia WebRTC para Delphi e C++ Builder. Adicione às suas aplicações chamadas de áudio e vídeo em tempo real, compartilhamento de tela e canais de dados SCTP, criptografados com DTLS-SRTP e interoperáveis com o RTCPeerConnection de qualquer navegador. É Object Pascal compilado chamando as APIs de mídia do próprio sistema operacional, sem WebView e sem ponte JavaScript no seu processo.

  • Delphi
  • C++ Builder
  • Windows, Linux, macOS
  • iOS e Android
  • STUN / TURN / ICE
  • Sem WebView
SEU CANAL DE SINALIZAÇÃO WebSocket, HTTP, qualquer um oferta SDP resposta SDP + candidatos ICE em trickle App Delphi TsgcRTCPeerConnection áudio · Opus vídeo · H.264 canal de dados 'chat' sem WebView no processo Navegador ou Delphi RTCPeerConnection OnAudio OnVideoFrame OnMessage JSEP, RFC 8829 DTLS-SRTP mídia RTP + dados SCTP STUN endereço público TURN relay se bloqueado ICE A sinalização passa pelo seu servidor. A mídia vai direto entre os peers.
  • 1Componente para toda a peer connection
  • 5Plataformas: Windows, Linux, macOS, iOS e Android
  • 5Codecs: Opus, G.711, VP8, H.264 e Motion JPEG
  • 100%Dos pacotes RTP, RTCP e SCTP criptografados
  • 0Navegadores ou WebViews no seu processo
Veja funcionando

Veja o sgcWebRTC em dois minutos.

Mídia e canais de dados ponto a ponto a partir do Delphi: STUN, TURN, ICE e RTCPeerConnection, do navegador ao nativo. Narrado, com legendas. Nada é baixado até você apertar o play.

Um componente

A peer connection inteira em um só objeto.

O sgcWebRTC não adiciona novos componentes à paleta. Ele libera o restante da superfície no formato W3C no mesmo TsgcRTCPeerConnection que acompanha o sgcWebSockets Enterprise: sinalização, conectividade, criptografia, canais de dados e mídia.

Sinalização compatível com navegadores

CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription and AddIceCandidate criam e consomem SDP real. Renegociação, reinício de ICE e a regra de glare da perfect negotiation do W3C já vêm incluídos.

Ver o componente →

STUN, TURN e ICE

Coleta de ICE em trickle ou não contra RTCOptions.ICEServers, com candidatos server-reflexive do STUN e candidatos relayed do TURN quando o caminho direto está bloqueado.

Criptografia DTLS-SRTP

Um handshake DTLS sobre o par ICE nomeado deriva as chaves SRTP, e todo pacote RTP, RTCP e SCTP é criptografado desde o primeiro. Não pode ser desligado para a mídia, o mesmo modelo que um navegador impõe.

Faixas de áudio e vídeo

AddTrack anexa uma faixa de áudio Opus ou G.711, ou uma faixa de vídeo VP8, H.264 ou Motion JPEG. O H.264 usa o encoder de hardware da plataforma: Media Foundation, VideoToolbox ou MediaCodec.

Matriz de codecs e plataformas →

Canais de dados SCTP

CreateDataChannel abre um canal ordenado ou não, confiável ou parcialmente confiável (RFC 8831/8832). Send, SendBytes, OnMessage e OnMessageBinary movem cargas de texto e binárias.

Taxa de bits adaptativa

Um estimador baseado em atraso, no estilo do Google Congestion Control, conduz a taxa de bits alvo do encoder de vídeo, com apoio de RTCP NACK e PLI, RTX da RFC 4588 e RED/ULPFEC.

Primeiros Passos

Uma oferta e um canal de dados.

Defina um servidor ICE, ligue 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");
}
  1. Aponte para um servidor STUN ou TURNAdicione os servidores ICE a RTCOptions.ICEServers. Os candidatos são coletados contra eles, em trickle ou todos de uma vez.
  2. Leve o SDP pelo seu próprio canalOnLocalDescription entrega a oferta ou a resposta, OnICECandidate cada candidato. Envie-os por qualquer servidor de sinalização, exatamente como uma aplicação de navegador faz.
  3. Converse peer to peerConcluído o handshake DTLS, os canais de dados se abrem e as faixas de áudio e vídeo fluem direto entre os peers, criptografadas.

Esse é um lado da troca. O outro lado, o relay de sinalização e as faixas de mídia por cima estão no guia de tarefa.

Dois apps Delphi, peer to peer

Onde se encaixa

WebRTC sem embutir um navegador.

Outras abordagens de WebRTC no Delphi embutem um motor de navegador completo e controlam sua pilha JavaScript a partir do Pascal. O sgcWebRTC chama diretamente as APIs de mídia do sistema operacional, o que mantém o binário pequeno e permite que o mesmo componente rode onde não há navegador instalado.

App Delphi para navegador

SDP padrão e a máquina de estados JSEP (RFC 8829) permitem que um cliente nativo Delphi ou C++ Builder chame o RTCPeerConnection de uma página web, e vice-versa.

App Delphi para app Delphi

Duas aplicações nativas trocam áudio, vídeo e canais de dados diretamente, e somente a sinalização passa pelo seu servidor.

Leia o guia de tarefa →

Mobile, headless e quiosque

Sem um binário Chromium embutido, o mesmo componente roda em Android e iOS, e em serviços headless ou dispositivos de quiosque sem navegador instalado.

Compartilhamento de tela e suporte remoto

Capture a área de trabalho, um monitor, uma janela ou uma região no Windows, cursor incluído, e transmita como faixa de vídeo com um canal de dados ao lado.

Chamadas de voz e vídeo

Backends nativos de captura de câmera e microfone no Windows, Linux, plataformas Apple e Android alimentam as faixas diretamente, e backends de renderização exibem o vídeo remoto.

Use os canais de dados sozinhos para chat, telemetria, transferência de arquivos ou estado de jogo, com a confiabilidade e a ordenação escolhidas por canal.

Licenciamento

Um complemento do sgcWebSockets Enterprise.

O sgcWebRTC libera o mecanismo de mídia no TsgcRTCPeerConnection que o sgcWebSockets Enterprise já traz com conectividade ICE e TURN. Não está disponível para Standard nem Professional. Toda licença inclui o código-fonte completo e um ano de atualizações.

sgcWebSockets Enterprise

A base sobre a qual ele é construído: clientes STUN, TURN e ICE, o TsgcRTCPeerConnection básico, além de WebSocket, HTTP/2, MQTT e o restante da biblioteca.

€699 / desenvolvedor

sgcWebRTC

Sinalização SDP, DTLS-SRTP, canais de dados SCTP, faixas de áudio e vídeo, captura de tela e estimativa de largura de banda. Licenças Single, Team e Site.

€299 / desenvolvedor

Pacote All-Access

Todos os produtos da eSeGeCe por um ano, Delphi e .NET, com sgcWebSockets Enterprise e sgcWebRTC incluídos, e Suporte Premium.

€1,059 / desenvolvedor

O instalador de avaliação é por versão da IDE e já contém os componentes WebRTC, então não há download separado.

Veja os preços do sgcWebRTC

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.

Últimas do blog

Ver todas as publicações →

Você está vendo a visão sgcWebRTC da eSeGeCe.

Mostre outro ângulo →
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