sgcWebRTC 不会在 sgcWebSockets 之上添加新的调色板组件 — 它在同一个 TsgcRTCPeerConnection 类上解锁了其余符合 W3C 规范的接口:信令、连接、加密、数据通道和媒体全部存在于同一个对象上。
CreateOffer、CreateAnswer、SetLocalDescription、SetRemoteDescription 和 AddIceCandidate 构建和消费真实的 SDP,因此对端可以是浏览器。您可以通过自己已有的任何信令通道来传递 SDP。
针对 RTCOptions.ICEServers 进行涓流式或非涓流式 ICE 候选收集,当直连路径受阻时,通过 STUN 获取服务器反射候选地址,通过 TURN 获取中继候选地址。OnICECandidate 和 OnConnectionStateChange 跟踪传输状态。
每个会话都按照 WebRTC 的强制要求进行加密:在已提名的 ICE 候选对上进行 DTLS 握手以推导出 SRTP 密钥,连接上的每个 RTP、RTCP 和 SCTP 数据包从第一个数据包开始就已加密。
CreateDataChannel 在 SCTP-over-DTLS 之上打开一个有序或无序、可靠或部分可靠的通道(RFC 8831/8832)。Send、SendBytes 以及 OnMessage / OnMessageBinary 事件负责传输文本和二进制负载。
AddTrack 附加一个 Opus 或 G.711 音频轨道,或一个 VP8、H.264 或 Motion JPEG 视频轨道;SendPCM 和 SendVideoFrame 推送采集到的媒体数据,OnAudio 和 OnVideoFrame 提供解码后的远端轨道数据。
一个类似 Google Congestion Control 风格的基于延迟的估算器持续跟踪链路状况,并驱动视频编码器的目标码率,辅以 RTCP NACK/PLI 重传、RFC 4588 RTX 以及 RED/ULPFEC,这与浏览器在弱网环境中使用的是同一套工具箱。
sgcWebRTC 不会在调色板中添加新的类。它就是 sgcWebSockets Enterprise 中自带的同一个 TsgcRTCPeerConnection 组件,在 Enterprise 已经提供的 ICE/TURN 连接基础之上,解锁了 SDP、SCTP、RTP 和 SRTP 接口。
手动 SDP 信令、ICE/TURN 连接、DTLS-SRTP 加密、SCTP 数据通道和 RTP 音视频轨道全部集成于一个组件之中。内置重新协商、ICE 重启以及 W3C 完美协商(perfect-negotiation)冲突处理规则。
查看组件 →设置一个 ICE 服务器,挂接 SDP 和 ICE 事件,打开一个数据通道,然后创建 offer。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");
}
基于标准构建的媒体引擎,而非私有传输协议。
交互式连接建立(ICE)的候选地址收集与提名,以及背后的 STUN 绑定请求。通过 TsgcICEClient 暴露,并由 TsgcRTCPeerConnection 自动使用。
当直连或服务器反射路径不可达时,通过 TsgcTURNClient 借助 TURN 服务器获取中继候选地址。
用于验证对等连接并为加密媒体推导 SRTP 密钥材料的 DTLS 握手。
基于 DTLS 之上的 SCTP,使用 DCEP 开放握手,流 ID 奇偶性由 DTLS 角色决定,支持有序 / 部分可靠传递。
音视频的实时传输协议及其加密版本,支持 RTCP 发送方/接收方报告、NACK、PLI 和 REMB 反馈。
CreateOffer / CreateAnswer / SetLocalDescription / SetRemoteDescription 背后的 offer/answer 状态机,包括重新协商和冲突(glare)处理。
sgcWebRTC 以附加组件的形式授权。所有许可证均包含完整源代码、1 年更新,以及 70% 的续订折扣。
€299
提供 Single、Team 和 Site 授权,均含完整源代码。
开发者在为 Delphi 或 C++ Builder 应用程序添加实时音频、视频或数据通道之前最常问到的问题。
TsgcRTCPeerConnection 组件,提供 ICE/TURN 连接;sgcWebRTC 在此基础上添加了媒体引擎 — 手动 SDP offer/answer、DTLS-SRTP 加密传输、SCTP 数据通道,以及 Opus/G.711 音频和 VP8/H.264 视频 — 因此该组件真正能够与浏览器建立对等连接并交换媒体,而不仅仅是转发信令消息。CreateOffer / CreateAnswer 会构建标准 SDP,而 SetLocalDescription / SetRemoteDescription / AddIceCandidate 负责消费它,遵循浏览器所期望的 JSEP 状态机(RFC 8829)。您通过自己的信令通道传递 SDP 和候选地址,就像浏览器应用程序通过其信令服务器所做的那样。CreateDataChannel 会在 SCTP-over-DTLS(RFC 8831/8832)之上打开一个 RTCDataChannel,可以是有序或无序、完全可靠或带有重传次数/生存期限制。当远端对等方打开一个通道时会触发 OnDataChannel,通道打开后 Send / SendBytes 用于传输文本或二进制负载。TWebBrowser/TEdgeBrowser 控件),再从 Pascal 驱动其 JavaScript WebRTC 技术栈来实现的。sgcWebRTC 并非如此:TsgcRTCPeerConnection 是编译后的 Object Pascal 代码,直接调用操作系统自身的媒体 API(Windows 上的 Media Foundation、iOS/macOS 上的 VideoToolbox、Android 上的 MediaCodec),进程中没有浏览器运行时、没有内嵌的 Chromium 二进制文件,也没有 JavaScript 桥接层。这使得二进制文件体积小巧,并让同一个组件能够运行在 Android 和 iOS 上,也能运行在完全没有安装浏览器的无头服务或自助终端设备中。TsgcWSProtocol_WebRTC_Server),用于实现经典的 AppRTC 风格浏览器对浏览器演示,但没有与 TsgcRTCPeerConnection 对应的 .NET 版本。sgcWebRTC 本身仅支持 Delphi 和 C++ Builder。将 sgcWebRTC 与我们的其他 Delphi、C++ Builder 和 .NET 组件库搭配使用。
企业级 WebSocket、HTTP/2、MQTT、AMQP 和 AI/LLM 组件。sgcWebRTC 是 sgcWebSockets Enterprise 的附加组件。
了解更多 →15 个面向 Delphi 和 C++ Builder 的 AI、LLM 和 MCP 组件。一个聊天组件即可连接 OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok 和 Mistral。
了解更多 →面向 Delphi 和 C++ Builder 的 MQTT 3.1.1 与 5.0、AMQP 0.9.1、AMQP 1.0、Apache Kafka 和 STOMP 客户端组件。
了解更多 →