sgcWebRTC — le moteur média WebRTC pour Delphi & C++ Builder
Ajoute l'audio, la vidéo, le partage d'écran et les canaux de données en temps réel à tes applications Delphi et C++ Builder, sans toucher à un navigateur.
Ajoute l'audio, la vidéo, le partage d'écran et les canaux de données en temps réel à tes applications Delphi et C++ Builder, sans toucher à un navigateur.
sgcWebRTC n'ajoute pas de nouveaux composants de palette au-dessus de sgcWebSockets : il débloque le reste de la surface conforme au W3C sur la même classe TsgcRTCPeerConnection — signalisation, connectivité, chiffrement, canaux de données et média vivent tous sur un seul objet.
CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription et AddIceCandidate construisent et consomment du vrai SDP, si bien que le pair en face peut être un navigateur. Tu transportes le SDP sur le canal de signalisation que tu as déjà.
Collecte ICE trickle ou non-trickle sur RTCOptions.ICEServers, avec des candidats server-reflexive via STUN et des candidats relayés via TURN quand un chemin direct est bloqué. OnICECandidate et OnConnectionStateChange suivent le transport.
Chaque session est sécurisée comme WebRTC l'impose : un handshake DTLS sur la paire ICE nommée dérive les clés SRTP, et chaque paquet RTP, RTCP et SCTP sur la connexion est chiffré dès le premier paquet.
CreateDataChannel ouvre un canal ordonné ou non, fiable ou partiellement fiable (RFC 8831/8832) sur SCTP-over-DTLS. Send, SendBytes et les événements OnMessage / OnMessageBinary transportent des charges utiles texte et binaires.
AddTrack attache une piste audio Opus ou G.711, ou une piste vidéo VP8, H.264 ou Motion JPEG ; SendPCM et SendVideoFrame poussent le média capturé, OnAudio et OnVideoFrame livrent la piste distante décodée.
Un estimateur basé sur le délai, dans l'esprit du Google Congestion Control, suit le lien et pilote le débit cible de l'encodeur vidéo, épaulé par la retransmission RTCP NACK/PLI, RTX RFC 4588 et RED/ULPFEC — la même boîte à outils qu'un navigateur utilise sur un réseau avec pertes.
sgcWebRTC n'ajoute pas de nouvelle classe à la palette. C'est le même composant TsgcRTCPeerConnection livré dans sgcWebSockets Enterprise, avec la surface SDP, SCTP, RTP et SRTP débloquée au-dessus de la connectivité ICE/TURN qu'Enterprise te donne déjà.
Signalisation SDP manuelle, connectivité ICE/TURN, chiffrement DTLS-SRTP, canaux de données SCTP et pistes audio/vidéo RTP sur un seul composant. La renégociation, le redémarrage ICE et la règle de perfect-negotiation du W3C pour la résolution des conflits sont intégrés.
Voir le composant →Configure un serveur ICE, raccorde les événements SDP et ICE, ouvre un canal de données, puis crée l'offre. La même API en Delphi et 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");
}
Un moteur média basé sur des standards, pas un transport propriétaire.
La collecte et la nomination de candidats Interactive Connectivity Establishment, et les requêtes de liaison STUN qui les sous-tendent. Exposé via TsgcICEClient et consommé automatiquement par TsgcRTCPeerConnection.
Candidats relayés via un serveur TURN quand un chemin direct ou server-reflexive n'est pas joignable, via TsgcTURNClient.
Le handshake DTLS qui authentifie la connexion pair à pair et dérive le matériel de clé SRTP pour le média chiffré.
SCTP sur DTLS avec le handshake d'ouverture DCEP, la parité d'id de stream selon le rôle DTLS, et la livraison ordonnée ou partiellement fiable.
Le transport temps réel pour l'audio et la vidéo et son profil chiffré, avec les rapports d'émetteur/récepteur RTCP, et le feedback NACK, PLI et REMB.
La machine à états offre/réponse derrière CreateOffer / CreateAnswer / SetLocalDescription / SetRemoteDescription, y compris la renégociation et la résolution des conflits.
sgcWebRTC est proposé sous licence en tant que complément. Toutes les licences incluent le code source complet, 1 an de mises à jour et une réduction de 70% sur le renouvellement.
€299
Licences Single, Team et Site disponibles. Code source complet inclus.
★ Nécessite sgcWebSockets Enterprise
Non disponible pour Standard ou Professional. Inclus aussi dans le pack All-Access.
Voir les tarifs & commanderLes questions que se posent les développeurs avant d'ajouter de l'audio, de la vidéo ou des canaux de données en temps réel à une application Delphi ou C++ Builder.
TsgcRTCPeerConnection pour la connectivité ICE/TURN ; sgcWebRTC ajoute le moteur média par-dessus — offre/réponse SDP manuelle, transport chiffré DTLS-SRTP, canaux de données SCTP, et audio Opus/G.711 avec vidéo VP8/H.264 — si bien que le composant peut réellement ouvrir une connexion pair à pair avec un navigateur et échanger du média, pas seulement relayer des messages de signalisation.CreateOffer / CreateAnswer construisent du SDP standard et SetLocalDescription / SetRemoteDescription / AddIceCandidate le consomment, en suivant la machine à états JSEP (RFC 8829) qu'attend un navigateur. Tu transportes le SDP et les candidats sur ton propre canal de signalisation, exactement comme une application navigateur le fait via son serveur de signalisation.CreateDataChannel ouvre un RTCDataChannel sur SCTP-over-DTLS (RFC 8831/8832), ordonné ou non, fiable ou avec une limite de retransmission ou de durée de vie. OnDataChannel se déclenche pour un canal ouvert par le pair distant, et Send / SendBytes transportent des charges utiles texte ou binaires une fois le canal ouvert.TWebBrowser/TEdgeBrowser) et en pilotant sa pile WebRTC JavaScript depuis Pascal. sgcWebRTC ne fait pas ça : TsgcRTCPeerConnection est de l'Object Pascal compilé qui appelle directement les API média du système d'exploitation (Media Foundation sous Windows, VideoToolbox sous iOS/macOS, MediaCodec sous Android), sans runtime navigateur, sans binaire Chromium embarqué et sans pont JavaScript dans le processus. Cela garde le binaire compact et permet au même composant de tourner sur Android et iOS, ainsi que dans des services headless ou des appareils kiosque sans aucun navigateur installé.TsgcWSProtocol_WebRTC_Server) pour la démo classique navigateur-à-navigateur façon AppRTC, mais aucun équivalent .NET de TsgcRTCPeerConnection. sgcWebRTC lui-même est réservé à Delphi et C++ Builder.Associe sgcWebRTC à nos autres bibliothèques de composants Delphi, C++ Builder et .NET.
Composants WebSocket, HTTP/2, MQTT, AMQP et IA/LLM pour l'entreprise. sgcWebRTC est un complément de sgcWebSockets Enterprise.
En savoir plus →Composants client et serveur QUIC (RFC 9000) et HTTP/3 (RFC 9114) sur le moteur QUIC natif OpenSSL 3.5.
En savoir plus →89 composants HTML/UI côté serveur orientés données pour Delphi, C++ Builder et .NET, avec Bootstrap 5 et htmx.
En savoir plus →Signatures numériques pour l'entreprise — XAdES, PAdES, CAdES et ASiC avec 10 fournisseurs de clés et 21 profils pays de l'UE.
En savoir plus →Parseur OpenAPI 3.0 et générateur de SDK. Transforme n'importe quelle spécification OpenAPI en client Delphi fortement typé en quelques secondes.
En savoir plus →Composants natifs Windows Hello, empreinte digitale et Windows Biometric Framework pour Delphi et C++ Builder.
En savoir plus →Composants Indy TCP/IP mis à jour avec TLS moderne, IPv6 et HTTP/2, de Delphi 7 à 13.
En savoir plus →15 composants IA, LLM et MCP pour Delphi et C++ Builder. Un seul composant de chat atteint OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok et Mistral.
En savoir plus →Composants client MQTT 3.1.1 et 5.0, AMQP 0.9.1, AMQP 1.0, Apache Kafka et STOMP pour Delphi et C++ Builder.
En savoir plus →