브라우저 호환 시그널링
CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription 및 AddIceCandidate 가 실제 SDP를 만들고 처리해요. 재협상, ICE 재시작, W3C perfect-negotiation glare 규칙이 내장되어 있어요.
sgcWebRTC는 Delphi와 C++ Builder를 위한 WebRTC 미디어 엔진이에요. 실시간 오디오 및 영상 통화, 화면 공유, SCTP 데이터 채널을 애플리케이션에 추가하세요. DTLS-SRTP로 암호화되며 모든 브라우저의 RTCPeerConnection과 상호운용돼요. 운영체제 자체의 미디어 API를 호출하는 컴파일된 Object Pascal이라서, 프로세스 안에 WebView도 JavaScript 브리지도 없어요.
Delphi에서 P2P 미디어와 데이터 채널을 다뤄요. STUN, TURN, ICE, RTCPeerConnection으로 브라우저와 네이티브를 이어요. 내레이션과 자막이 있어요. 재생 버튼을 누르기 전에는 아무것도 내려받지 않아요.
sgcWebRTC는 팔레트에 새 컴포넌트를 추가하지 않아요. sgcWebSockets Enterprise에 이미 포함된 동일한 TsgcRTCPeerConnection 클래스에서 W3C 형태의 나머지 기능을 열어 줘요. 시그널링, 연결, 암호화, 데이터 채널, 미디어예요.
CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription 및 AddIceCandidate 가 실제 SDP를 만들고 처리해요. 재협상, ICE 재시작, W3C perfect-negotiation glare 규칙이 내장되어 있어요.
트리클 또는 논트리클 ICE 수집은 RTCOptions.ICEServers를 기준으로 수행해요. 직접 경로가 차단되면 STUN의 서버 반사 후보와 TURN의 중계 후보를 사용해요.
선정된 ICE 페어 위의 DTLS 핸드셰이크가 SRTP 키를 도출하며, 모든 RTP, RTCP, SCTP 패킷은 첫 번째 패킷부터 암호화돼요. 미디어에서는 끌 수 없어요. 브라우저가 강제하는 것과 같은 모델이에요.
AddTrack 은 Opus 또는 G.711 오디오 트랙이나 VP8, H.264, Motion JPEG 영상 트랙을 연결해요. H.264는 플랫폼의 하드웨어 인코더를 사용해요. Media Foundation, VideoToolbox, MediaCodec이에요.
CreateDataChannel 은 순서 보장 또는 비보장, 신뢰성 또는 부분 신뢰성 채널(RFC 8831/8832)을 열어요. Send, SendBytes, OnMessage 및 OnMessageBinary 는 텍스트와 바이너리 페이로드를 전달해요.
Google Congestion Control 방식의 지연 기반 추정기가 영상 인코더의 목표 비트레이트를 조정하며, RTCP NACK와 PLI, RFC 4588 RTX, RED/ULPFEC가 뒷받침해요.
ICE 서버를 설정하고 SDP 및 ICE 이벤트를 연결한 다음, 데이터 채널을 열고 오퍼를 생성해요. Delphi와 C++ Builder에서 같은 API를 사용해요.
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");
}
이것은 교환의 한쪽 면이에요. 반대편, 시그널링 릴레이, 그 위의 미디어 트랙은 작업 가이드에 있어요.
Delphi의 다른 WebRTC 방식은 전체 브라우저 엔진을 내장하고 Pascal에서 그 JavaScript 스택을 조작해요. sgcWebRTC는 운영체제의 미디어 API를 직접 호출하므로 바이너리가 작게 유지되고, 브라우저가 전혀 설치되지 않은 환경에서도 같은 컴포넌트가 실행돼요.
표준 SDP와 JSEP 상태 머신(RFC 8829) 덕분에 네이티브 Delphi 또는 C++ Builder 클라이언트가 웹 페이지의 RTCPeerConnection을 호출할 수 있고, 반대도 가능해요.
두 네이티브 애플리케이션이 오디오, 영상, 데이터 채널을 직접 주고받고, 시그널링만 서버를 거쳐요.
작업 가이드 읽기 →내장 Chromium 바이너리가 없으므로 같은 컴포넌트가 Android와 iOS, 그리고 브라우저가 설치되지 않은 헤드리스 서비스나 키오스크 장치에서도 실행돼요.
Windows에서 데스크톱, 모니터, 창, 영역을 커서까지 캡처해 영상 트랙으로 보내고, 데이터 채널을 함께 사용할 수 있어요.
Windows, Linux, Apple 플랫폼, Android의 네이티브 카메라와 마이크 캡처 백엔드가 트랙에 직접 공급하고, 렌더러 백엔드가 원격 영상을 보여줘요.
데이터 채널만 따로 써서 채팅, 텔레메트리, 파일 전송, 게임 상태를 주고받을 수 있어요. 신뢰성과 순서는 채널마다 정해요.
sgcWebRTC는 sgcWebSockets Enterprise가 이미 ICE와 TURN 연결과 함께 제공하는 TsgcRTCPeerConnection 컴포넌트에서 미디어 엔진을 열어 줘요. Standard나 Professional에서는 사용할 수 없어요. 모든 라이선스에는 전체 소스 코드와 1년간의 업데이트가 포함돼요.
기반이 되는 제품이에요. STUN, TURN, ICE 클라이언트, 기본 TsgcRTCPeerConnection, 그리고 WebSocket, HTTP/2, MQTT 등 라이브러리의 나머지가 들어 있어요.
SDP 시그널링, DTLS-SRTP, SCTP 데이터 채널, 오디오 및 영상 트랙, 화면 캡처, 대역폭 추정. Single, Team, Site 라이선스를 제공해요.
1년 동안 eSeGeCe의 모든 제품을 제공해요. Delphi와 .NET, sgcWebSockets Enterprise와 sgcWebRTC가 포함되며 Premium Support가 함께해요.
체험판 설치 프로그램은 IDE 버전별로 제공되며 WebRTC 컴포넌트가 이미 들어 있어서, 따로 내려받을 필요가 없어요.
sgcWebRTC 가격 보기sgcWebRTC는 Delphi, C++ Builder, Lazarus, .NET 개발자가 네트워킹, 서명, 웹 인터페이스, API에 이미 쓰고 있는 컴포넌트 제품군과 함께해요.
WebSocket, HTTP/2, MQTT, AMQP, WebRTC, AI, 그리고 30개 이상의 API 통합을 Delphi, C++ Builder, Lazarus, .NET용으로 제공해요. sgcWebRTC의 기반이 되는 Enterprise 라이선스예요.
Raw QUIC 전송과 HTTP/3 클라이언트 및 서버, WebTransport를 제공해요. sgcWebSockets Enterprise의 애드온이에요.
Delphi, C++ Builder, .NET용 네이티브 UI 제품 15개: 그리드, 차트, 대시보드, 플래너, 지도, PDF, 리포트.
Delphi, C++ Builder, .NET용 Bootstrap 5와 htmx 기반 서버 측 HTML 및 UI 컴포넌트예요.
문서용 XAdES, PAdES, CAdES, ASiC와 코드용 Authenticode, ClickOnce, NuGet, VSIX를 제공해요.
팩, 애드온 등