sgcWebRTC 通话与数据, 点对点传输。 无需内嵌浏览器。

sgcWebRTC 是适用于 Delphi 和 C++ Builder 的 WebRTC 媒体引擎。为您的应用添加实时音视频通话、屏幕共享和 SCTP 数据通道,使用 DTLS-SRTP 加密,并可与任何浏览器中的 RTCPeerConnection 互通。它是直接调用操作系统自带媒体 API 的编译型 Object Pascal 代码,您的进程中没有 WebView,也没有 JavaScript 桥接。

  • Delphi
  • C++ Builder
  • Windows、Linux、macOS
  • iOS 和 Android
  • STUN / TURN / ICE
  • 无需 WebView
您的信令通道 WebSocket、HTTP 或任意方式 SDP offer SDP answer + Trickle ICE 候选 Delphi 应用 TsgcRTCPeerConnection 音频 · Opus 视频 · H.264 数据通道 'chat' 进程内没有 WebView 浏览器或 Delphi RTCPeerConnection OnAudio OnVideoFrame OnMessage JSEP, RFC 8829 DTLS-SRTP RTP 媒体 + SCTP 数据 STUN 公网地址 TURN 被阻断时中继 ICE 信令经由您的服务器,媒体直接在对等端之间传输。
  • 1个组件涵盖整个对等连接
  • 5个平台:Windows、Linux、macOS、iOS 和 Android
  • 5种编解码器:Opus、G.711、VP8、H.264 和 Motion JPEG
  • 100%的 RTP、RTCP 和 SCTP 数据包均已加密
  • 0个浏览器或 WebView 在您的进程中
看它运行

两分钟看懂 sgcWebRTC。

在 Delphi 中实现点对点媒体与数据通道:STUN、TURN、ICE 和 RTCPeerConnection,从浏览器到原生应用。配有旁白和字幕。点击播放之前不会下载任何内容。

一个组件

整个对等连接,集于一个对象。

sgcWebRTC 不会新增组件面板中的组件。它在 sgcWebSockets Enterprise 自带的同一个 TsgcRTCPeerConnection 上,解锁 W3C 接口的其余部分:信令、连接、加密、数据通道和媒体。

与浏览器兼容的信令

CreateOffer, CreateAnswer, SetLocalDescription, SetRemoteDescription 和 AddIceCandidate 可构建并解析真实的 SDP。重新协商、ICE 重启以及 W3C 完美协商(perfect negotiation)的冲突处理规则均已内置。

查看组件 →

STUN、TURN 和 ICE

针对 RTCOptions.ICEServers 进行 Trickle 或非 Trickle 的 ICE 收集,由 STUN 提供服务器反射候选,直连被阻断时由 TURN 提供中继候选。

DTLS-SRTP 加密

在选定的 ICE 候选对上完成 DTLS 握手并派生 SRTP 密钥,每个 RTP、RTCP 和 SCTP 数据包从第一个包起就被加密。媒体加密无法关闭,与浏览器强制执行的模型一致。

音频和视频轨道

AddTrack 可挂载 Opus 或 G.711 音频轨道,或 VP8、H.264、Motion JPEG 视频轨道。H.264 使用平台的硬件编码器:Media Foundation、VideoToolbox 或 MediaCodec。

编解码器与平台矩阵 →

SCTP 数据通道

CreateDataChannel 可打开有序或无序、可靠或部分可靠的通道(RFC 8831/8832)。Send、SendBytes、OnMessage 和 OnMessageBinary 用于传输文本和二进制数据。

自适应码率

基于延迟、风格类似 Google Congestion Control 的估算器驱动视频编码器的目标码率,并辅以 RTCP NACK 和 PLI、RFC 4588 RTX 以及 RED/ULPFEC。

快速入门

一个 offer,一个数据通道。

设置 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");
}
  1. 指向 STUN 或 TURN 服务器将 ICE 服务器添加到 RTCOptions.ICEServers。候选地址会针对它们收集,可逐个发送,也可一次性发送。
  2. 通过您自己的通道传递 SDPOnLocalDescription 交给您 offer 或 answer,OnICECandidate 交给您每个候选地址。通过任意信令服务器发送即可,与浏览器应用的做法完全相同。
  3. 点对点通信DTLS 握手完成后,数据通道打开,音频和视频轨道在对等端之间直接加密传输。

这只是交换的一端。另一端、信令中继以及其上的媒体轨道,请参阅任务指南。

两个 Delphi 应用,点对点通信

适用场景

无需内嵌浏览器的 WebRTC。

在 Delphi 中实现 WebRTC 的其他方式会内嵌完整的浏览器引擎,并从 Pascal 驱动其 JavaScript 栈。sgcWebRTC 直接调用操作系统的媒体 API,使可执行文件保持小巧,同一个组件甚至可以在完全没有安装浏览器的环境中运行。

Delphi 应用到浏览器

标准 SDP 与 JSEP 状态机(RFC 8829)意味着原生的 Delphi 或 C++ Builder 客户端可以呼叫网页中的 RTCPeerConnection,反之亦然。

Delphi 应用到 Delphi 应用

两个原生应用直接交换音频、视频和数据通道,只有信令经过您的服务器。

阅读任务指南 →

移动端、无头服务和自助终端

无需内嵌 Chromium,同一个组件即可在 Android 和 iOS 上运行,也可用于没有安装浏览器的无头服务或自助终端设备。

屏幕共享与远程支持

在 Windows 上捕获桌面、显示器、窗口或区域(包含光标),并作为视频轨道传输,同时可搭配数据通道。

语音和视频通话

Windows、Linux、Apple 平台和 Android 上的原生摄像头与麦克风采集后端直接为轨道提供数据,渲染后端则显示远端视频。

低延迟数据链路

可单独使用数据通道来实现聊天、遥测、文件传输或游戏状态同步,并按通道选择可靠性和有序性。

许可证

sgcWebSockets Enterprise 的附加组件。

sgcWebRTC 在 sgcWebSockets Enterprise 已自带 ICE 和 TURN 连接能力的 TsgcRTCPeerConnection 上解锁媒体引擎。Standard 和 Professional 版本不提供。每个许可证都包含完整源代码和一年更新。

sgcWebSockets Enterprise

它的基础:STUN、TURN 和 ICE 客户端、基础的 TsgcRTCPeerConnection,以及 WebSocket、HTTP/2、MQTT 和库中的其他功能。

€699 / 每位开发者

sgcWebRTC

SDP 信令、DTLS-SRTP、SCTP 数据通道、音频和视频轨道、屏幕捕获和带宽估算。提供 Single、Team 和 Site 许可证。

€299 / 每位开发者

All-Access 套餐

一年内使用 eSeGeCe 的全部产品,涵盖 Delphi 和 .NET,包含 sgcWebSockets Enterprise 和 sgcWebRTC,并享受 Premium Support。

€1,059 / 每位开发者

试用版安装程序按 IDE 版本提供,已包含 WebRTC 组件,因此无需单独下载。

查看 sgcWebRTC 价格

为您的 Delphi 应用接入真正的对等连接。

音频、视频和数据通道,端到端加密,使用您已熟悉的语言。

博客最新动态

查看全部文章 →

您正在查看 eSeGeCe 的 sgcWebRTC 视角。

换个角度看看 →
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策