与浏览器兼容的信令
CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription 和 AddIceCandidate 可构建并解析真实的 SDP。重新协商、ICE 重启以及 W3C 完美协商(perfect negotiation)的冲突处理规则均已内置。
sgcWebRTC 是适用于 Delphi 和 C++ Builder 的 WebRTC 媒体引擎。为您的应用添加实时音视频通话、屏幕共享和 SCTP 数据通道,使用 DTLS-SRTP 加密,并可与任何浏览器中的 RTCPeerConnection 互通。它是直接调用操作系统自带媒体 API 的编译型 Object Pascal 代码,您的进程中没有 WebView,也没有 JavaScript 桥接。
在 Delphi 中实现点对点媒体与数据通道:STUN、TURN、ICE 和 RTCPeerConnection,从浏览器到原生应用。配有旁白和字幕。点击播放之前不会下载任何内容。
sgcWebRTC 不会新增组件面板中的组件。它在 sgcWebSockets Enterprise 自带的同一个 TsgcRTCPeerConnection 上,解锁 W3C 接口的其余部分:信令、连接、加密、数据通道和媒体。
CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription 和 AddIceCandidate 可构建并解析真实的 SDP。重新协商、ICE 重启以及 W3C 完美协商(perfect negotiation)的冲突处理规则均已内置。
针对 RTCOptions.ICEServers 进行 Trickle 或非 Trickle 的 ICE 收集,由 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 事件,打开数据通道,然后创建 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");
}
这只是交换的一端。另一端、信令中继以及其上的媒体轨道,请参阅任务指南。
在 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 版本不提供。每个许可证都包含完整源代码和一年更新。
它的基础:STUN、TURN 和 ICE 客户端、基础的 TsgcRTCPeerConnection,以及 WebSocket、HTTP/2、MQTT 和库中的其他功能。
SDP 信令、DTLS-SRTP、SCTP 数据通道、音频和视频轨道、屏幕捕获和带宽估算。提供 Single、Team 和 Site 许可证。
一年内使用 eSeGeCe 的全部产品,涵盖 Delphi 和 .NET,包含 sgcWebSockets Enterprise 和 sgcWebRTC,并享受 Premium Support。
试用版安装程序按 IDE 版本提供,已包含 WebRTC 组件,因此无需单独下载。
查看 sgcWebRTC 价格sgcWebRTC 与 Delphi、C++ Builder、Lazarus 和 .NET 开发者已在使用的网络、签名、Web 界面和 API 组件并肩协作。
适用于 Delphi、C++ Builder、Lazarus 和 .NET 的 WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI 以及 30 多种 API 集成。sgcWebRTC 所依托的 Enterprise 许可证。
原生 QUIC 传输以及 HTTP/3 客户端和服务器,支持 WebTransport。sgcWebSockets Enterprise 的附加组件。
适用于 Delphi、C++ Builder 和 .NET 的 15 款原生界面产品:网格、图表、仪表板、计划器、地图、PDF 和报表。
适用于 Delphi、C++ Builder 和 .NET 的服务器端 HTML 与界面组件,基于 Bootstrap 5 和 htmx。
文档签名(XAdES、PAdES、CAdES、ASiC)以及代码签名(Authenticode、ClickOnce、NuGet、VSIX)。
扩展包、附加组件及更多