Silnik mediów WebRTC dla Delphi i C++ Builder | sgcWebRTC

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.

Bez przeglądarki / kontrolki WebView
Windows, Linux, macOS, iOS i Android
Połączenia audio i wideo
Udostępnianie ekranu
Kanały danych SCTP
Szyfrowanie DTLS-SRTP
Wbudowane STUN / TURN / ICE
Adaptacyjny bitrate
Sprzętowe kodowanie H.264
Współpraca z przeglądarkami
Pełny kod źródłowy
Delphi i C++ Builder

Jeden komponent, całe połączenie peer

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.

Ręczna sygnalizacja kompatybilna z przeglądarką

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.

Łączność ICE, STUN i TURN

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.

Szyfrowany transport DTLS-SRTP

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.

Kanały danych SCTP

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.

Ścieżki audio, wideo i ekranu

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ą.

Szacowanie przepustowości i odporność

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.

TsgcRTCPeerConnection

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.

TsgcRTCPeerConnection

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 →

Zobacz pełne zestawienie funkcji →

Oferta i kanał danych

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");
}

RFC, które implementuje sgcWebRTC

Silnik mediów oparty na standardach, a nie na zastrzeżonym transporcie.

RFC 8445 i 8489 — ICE / STUN

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.

RFC 8656 — TURN

Kandydaci przekazywani przez serwer TURN, gdy ścieżka bezpośrednia lub server-reflexive jest nieosiągalna, przez TsgcTURNClient.

RFC 8827 i 5764 — DTLS / DTLS-SRTP

Handshake DTLS, który uwierzytelnia połączenie peer i wyprowadza materiał kluczowy SRTP dla szyfrowanych mediów.

RFC 8831 i 8832 — kanały danych SCTP

SCTP przez DTLS z handshakiem otwarcia DCEP, parzystością identyfikatora strumienia zależną od roli DTLS oraz dostawą uporządkowaną / częściowo niezawodną.

RFC 3550 i 3711 — RTP / SRTP

Transport czasu rzeczywistego dla audio i wideo oraz jego szyfrowany profil, z raportami nadawcy/odbiorcy RTCP, NACK, PLI i informacją zwrotną REMB.

RFC 8829 — JSEP

Maszyna stanów oferta/odpowiedź stojąca za CreateOffer / CreateAnswer / SetLocalDescription / SetRemoteDescription, łącznie z renegocjacją i rozwiązywaniem konfliktów (glare).

Dodatek do sgcWebSockets Enterprise

sgcWebRTC jest licencjonowany jako dodatek. Wszystkie licencje obejmują pełny kod źródłowy, 1 rok aktualizacji oraz 70% rabatu na odnowienie.

sgcWebRTC

€299

Dostępne licencje Single, Team i Site. Pełny kod źródłowy w zestawie.

  • Silnik mediów TsgcRTCPeerConnection
  • Sygnalizacja SDP, kanały danych SCTP, media RTP
  • Delphi i C++ Builder
  • Pełny kod źródłowy
  • 1 rok aktualizacji

★ Wymaga sgcWebSockets Enterprise

Niedostępny dla Standard ani Professional. Zawarty także w pakiecie All-Access.

Zobacz cennik i zamów

WebRTC w Delphi, najczęściej zadawane pytania

Pytania, które programiści zadają przed dodaniem audio, wideo lub kanałów danych w czasie rzeczywistym do aplikacji Delphi lub C++ Builder.

Nie od razu po instalacji, a większość bibliotek innych producentów kończy na sygnalizacji. sgcWebSockets Enterprise dostarcza bazowy komponent 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.
Tak. 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.
Tak. 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.
Audio: Opus i G.711 (PCMU/PCMA). Wideo: VP8 przez wiązanie z libvpx, oraz H.264 przez natywny sprzętowy koder systemu operacyjnego — Media Foundation na Windows, VideoToolbox na iOS/macOS, MediaCodec na Androidzie — a do tego ścieżka Motion JPEG na Windows. Macierz platform znajdziesz w zestawieniu funkcji.
Tak, i dla mediów nie da się tego wyłączyć: handshake DTLS-SRTP przebiega na wynegocjowanej parze ICE, a każdy pakiet RTP, RTCP i SCTP na połączeniu jest szyfrowany — ten sam model obowiązkowego szyfrowania, który wymusza przeglądarka.
Nie. Kilka innych podejść do WebRTC w Delphi działa przez osadzenie pełnego silnika przeglądarki (wrapper Chromium Embedded Framework albo kontrolka 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.
sgcWebRTC podąża za matrycą wsparcia sgcWebSockets, od Delphi 7 do Delphi 13 Florence, oraz odpowiadające im wersje C++ Builder. Instalator wersji próbnej jest przypisany do konkretnej wersji IDE i już zawiera komponenty WebRTC, więc nie ma osobnego pliku do pobrania.
Nie dla silnika mediów. Port sgcWebSockets .NET zawiera przekaźnik sygnalizacji WebRTC (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.
sgcWebRTC jest dodatkiem do sgcWebSockets Enterprise — niedostępnym dla Standard ani Professional — i wchodzi też w skład pakietu All-Access. Dostępne są licencje Single, Team i Site, każda z pełnym kodem źródłowym i rocznymi aktualizacjami. Pobierz wersję próbną, aby ocenić go we własnym projekcie przed zakupem.
3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30-dniowa gwarancja zwrotu pieniędzyNie jesteś zadowolony? Poproś o pełny zwrot pieniędzy w ciągu 30 dni od zakupu. Zobacz politykę zwrotów

Umieść prawdziwe połączenie peer w swojej aplikacji Delphi

Audio, wideo i kanały danych, szyfrowane end-to-end, w języku, którego już używasz.

Inne produkty eSeGeCe

Połącz sgcWebRTC z naszymi innymi bibliotekami komponentów dla Delphi, C++ Builder i .NET.

sgcWebSockets

Komponenty klasy Enterprise: WebSocket, HTTP/2, MQTT, AMQP i AI/LLM. sgcWebRTC jest dodatkiem do sgcWebSockets Enterprise.

Dowiedz się więcej →

sgcQUIC

Komponenty klienta i serwera QUIC (RFC 9000) oraz HTTP/3 (RFC 9114) na natywnym silniku QUIC OpenSSL 3.5.

Dowiedz się więcej →

sgcHTML

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 →

sgcSign

Podpisy cyfrowe klasy Enterprise — XAdES, PAdES, CAdES i ASiC z 10 dostawcami kluczy i 21 profilami krajów UE.

Dowiedz się więcej →

sgcOpenAPI

Parser OpenAPI 3.0 i generator SDK. Zamień dowolną specyfikację OpenAPI w silnie typowanego klienta Delphi w kilka sekund.

Dowiedz się więcej →

sgcBiometrics

Natywne komponenty Windows Hello, odcisku palca i Windows Biometric Framework dla Delphi i C++ Builder.

Dowiedz się więcej →

sgcIndy

Zaktualizowane komponenty Indy TCP/IP z nowoczesnym TLS, obsługą IPv6 i HTTP/2 dla Delphi 7 do 13.

Dowiedz się więcej →

sgcAI

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 →

sgcMQ

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 →