sgcWebRTC — silnik mediów WebRTC dla Delphi i C++ Builder
Dodaj do swoich aplikacji Delphi i C++ Builder komunikację audio i wideo w czasie rzeczywistym, udostępnianie ekranu i kanały danych, bez dotykania przeglądarki.
Dodaj do swoich aplikacji Delphi i C++ Builder komunikację audio i wideo w czasie rzeczywistym, udostępnianie ekranu i kanały danych, bez dotykania przeglądarki.
sgcWebRTC nie dodaje nowych komponentów palety ponad sgcWebSockets — odblokowuje resztę powierzchni API w stylu W3C na tej samej klasie TsgcRTCPeerConnection: sygnalizacja, łączność, szyfrowanie, kanały danych i media, wszystko na jednym obiekcie.
CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription i AddIceCandidate budują i przetwarzają prawdziwe SDP, więc peer po drugiej stronie może być przeglądarką. SDP przenosisz dowolnym kanałem sygnalizacji, którego już używasz.
Zbieranie kandydatów ICE w trybie trickle lub bez, na bazie RTCOptions.ICEServers, z kandydatami server-reflexive ze STUN i przekazywanymi przez TURN, gdy bezpośrednia ścieżka jest zablokowana. OnICECandidate i OnConnectionStateChange śledzą stan transportu.
Każda sesja jest zabezpieczona tak, jak wymaga tego WebRTC: handshake DTLS na wynegocjowanej parze ICE wyprowadza klucze SRTP, a każdy pakiet RTP, RTCP i SCTP na połączeniu jest szyfrowany od pierwszego pakietu.
CreateDataChannel otwiera kanał uporządkowany lub nie, niezawodny lub częściowo niezawodny (RFC 8831/8832) przez SCTP-over-DTLS. Send, SendBytes oraz zdarzenia OnMessage / OnMessageBinary przenoszą ładunki tekstowe i binarne.
AddTrack dołącza ścieżkę audio Opus lub G.711, albo ścieżkę wideo VP8, H.264 lub Motion JPEG; SendPCM i SendVideoFrame wprowadzają przechwycone media, a OnAudio i OnVideoFrame dostarczają zdekodowaną ścieżkę zdalną.
Estymator oparty na opóźnieniach, w stylu Google Congestion Control, śledzi łącze i steruje docelowym bitrate kodera wideo, wspierany retransmisją RTCP NACK/PLI, RFC 4588 RTX oraz RED/ULPFEC — tym samym zestawem narzędzi, którego przeglądarka używa w sieci ze stratami.
sgcWebRTC nie dodaje nowej klasy do palety. To ta sama klasa TsgcRTCPeerConnection, która wchodzi w skład sgcWebSockets Enterprise, z odblokowaną powierzchnią SDP, SCTP, RTP i SRTP ponad łącznością ICE/TURN, którą Enterprise już zapewnia.
Ręczna sygnalizacja SDP, łączność ICE/TURN, szyfrowanie DTLS-SRTP, kanały danych SCTP i ścieżki audio/wideo RTP na jednym komponencie. Renegocjacja, restart ICE i reguła glare perfect-negotiation z W3C są wbudowane.
Zobacz komponent →Ustaw serwer ICE, podłącz zdarzenia SDP i ICE, otwórz kanał danych, a następnie utwórz ofertę. Ten sam interfejs API w Delphi i 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");
}
Silnik mediów oparty na standardach, a nie na zastrzeżonym transporcie.
Zbieranie i nominacja kandydatów Interactive Connectivity Establishment oraz żądania bindowania STUN, które za tym stoją. Udostępniane przez TsgcICEClient i wykorzystywane automatycznie przez TsgcRTCPeerConnection.
Kandydaci przekazywani przez serwer TURN, gdy ścieżka bezpośrednia lub server-reflexive jest nieosiągalna, przez TsgcTURNClient.
Handshake DTLS, który uwierzytelnia połączenie peer i wyprowadza materiał kluczowy SRTP dla szyfrowanych mediów.
SCTP przez DTLS z handshakiem otwarcia DCEP, parzystością identyfikatora strumienia zależną od roli DTLS oraz dostawą uporządkowaną / częściowo niezawodną.
Transport czasu rzeczywistego dla audio i wideo oraz jego szyfrowany profil, z raportami nadawcy/odbiorcy RTCP, NACK, PLI i informacją zwrotną REMB.
Maszyna stanów oferta/odpowiedź stojąca za CreateOffer / CreateAnswer / SetLocalDescription / SetRemoteDescription, łącznie z renegocjacją i rozwiązywaniem konfliktów (glare).
sgcWebRTC jest licencjonowany jako dodatek. Wszystkie licencje obejmują pełny kod źródłowy, 1 rok aktualizacji oraz 70% rabatu na odnowienie.
€299
Dostępne licencje Single, Team i Site. Pełny kod źródłowy w zestawie.
★ Wymaga sgcWebSockets Enterprise
Niedostępny dla Standard ani Professional. Zawarty także w pakiecie All-Access.
Zobacz cennik i zamówPytania, które programiści zadają przed dodaniem audio, wideo lub kanałów danych w czasie rzeczywistym do aplikacji Delphi lub C++ Builder.
TsgcRTCPeerConnection dla łączności ICE/TURN; sgcWebRTC dokłada na nim silnik mediów — ręczną ofertę/odpowiedź SDP, szyfrowany transport DTLS-SRTP, kanały danych SCTP oraz audio Opus/G.711 z wideo VP8/H.264 — dzięki czemu komponent może faktycznie otworzyć połączenie peer z przeglądarką i wymieniać media, a nie tylko przekazywać komunikaty sygnalizacyjne.CreateOffer / CreateAnswer budują standardowe SDP, a SetLocalDescription / SetRemoteDescription / AddIceCandidate je przetwarzają, zgodnie z maszyną stanów JSEP (RFC 8829), której oczekuje przeglądarka. SDP i kandydatów przenosisz własnym kanałem sygnalizacji, dokładnie tak, jak robi to aplikacja przeglądarkowa przez swój serwer sygnalizacyjny.CreateDataChannel otwiera RTCDataChannel przez SCTP-over-DTLS (RFC 8831/8832), uporządkowany lub nie, niezawodny albo z limitem retransmisji lub czasu życia. OnDataChannel uruchamia się dla kanału otwartego przez zdalnego peera, a Send / SendBytes przenoszą ładunki tekstowe lub binarne po otwarciu kanału.TWebBrowser/TEdgeBrowser) i sterowanie jego stosem WebRTC w JavaScript z poziomu Pascala. sgcWebRTC działa inaczej: TsgcRTCPeerConnection to skompilowany Object Pascal wywołujący bezpośrednio własne API mediów systemu operacyjnego (Media Foundation na Windows, VideoToolbox na iOS/macOS, MediaCodec na Androidzie), bez środowiska przeglądarki, bez osadzonego binarium Chromium i bez mostka JavaScript w procesie. Dzięki temu plik binarny pozostaje mały, a ten sam komponent działa na Androidzie i iOS, a także w bezobsługowych usługach lub urządzeniach kioskowych bez żadnej zainstalowanej przeglądarki.TsgcWSProtocol_WebRTC_Server) do klasycznej demonstracji przeglądarka–przeglądarka w stylu AppRTC, ale nie ma odpowiednika TsgcRTCPeerConnection dla .NET. Sam sgcWebRTC jest wyłącznie dla Delphi i C++ Builder.Połącz sgcWebRTC z naszymi innymi bibliotekami komponentów dla Delphi, C++ Builder i .NET.
Komponenty klasy Enterprise: WebSocket, HTTP/2, MQTT, AMQP i AI/LLM. sgcWebRTC jest dodatkiem do sgcWebSockets Enterprise.
Dowiedz się więcej →Komponenty klienta i serwera QUIC (RFC 9000) oraz HTTP/3 (RFC 9114) na natywnym silniku QUIC OpenSSL 3.5.
Dowiedz się więcej →89 komponentów HTML/UI po stronie serwera z obsługą danych, dla Delphi, C++ Builder i .NET, z Bootstrap 5 i htmx.
Dowiedz się więcej →Podpisy cyfrowe klasy Enterprise — XAdES, PAdES, CAdES i ASiC z 10 dostawcami kluczy i 21 profilami krajów UE.
Dowiedz się więcej →Parser OpenAPI 3.0 i generator SDK. Zamień dowolną specyfikację OpenAPI w silnie typowanego klienta Delphi w kilka sekund.
Dowiedz się więcej →Natywne komponenty Windows Hello, odcisku palca i Windows Biometric Framework dla Delphi i C++ Builder.
Dowiedz się więcej →Zaktualizowane komponenty Indy TCP/IP z nowoczesnym TLS, obsługą IPv6 i HTTP/2 dla Delphi 7 do 13.
Dowiedz się więcej →15 komponentów AI, LLM i MCP dla Delphi i C++ Builder. Jeden komponent czatu łączy się z OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok i Mistral.
Dowiedz się więcej →Komponenty klienckie MQTT 3.1.1 i 5.0, AMQP 0.9.1, AMQP 1.0, Apache Kafka i STOMP dla Delphi i C++ Builder.
Dowiedz się więcej →