RTCPeerConnection
在 Delphi/C++Builder 中使用 WebRTC — ICE 负责连接,DTLS 1.3 负责密钥握手,SRTP 负责媒体,SCTP-over-DTLS 负责 DataChannel。无需浏览器。
在 Delphi/C++Builder 中使用 WebRTC — ICE 负责连接,DTLS 1.3 负责密钥握手,SRTP 负责媒体,SCTP-over-DTLS 负责 DataChannel。无需浏览器。
原生 Delphi WebRTC 对等端 — 镜像 W3C RTCPeerConnection 接口(CreateOffer / CreateAnswer / SetRemoteDescription / AddIceCandidate / DataChannel),由捆绑的 ICE、DTLS 1.3、SRTP 和 SCTP 栈支撑。
添加 ICE 服务器,CreateOffer,通过信令通道将 SDP 发送给远程对端,设置应答,数据路径即可建立。
uses
sgcP2P;
var
Peer: TsgcRTCPeerConnection;
Channel: TsgcRTCDataChannel;
begin
Peer := TsgcRTCPeerConnection.Create(nil);
Peer.IceServers.Add('stun:stun.l.google.com:19302');
Peer.OnLocalDescription := procedure(Sender: TObject;
const aSDP: string)
begin
SignalToPeer(aSDP); // 通过您的 WebSocket / WebRTC 信令通道
end;
Peer.OnDataChannel := procedure(Sender: TObject;
aChannel: TsgcRTCDataChannel)
begin
Channel := aChannel;
aChannel.OnMessage := procedure(Sender: TObject;
const aText: string)
begin
Memo1.Lines.Add(aText);
end;
end;
// 发送方
Channel := Peer.CreateDataChannel('chat');
Peer.CreateOffer;
end;
// uses: sgcP2P
TsgcRTCPeerConnection *Peer = new TsgcRTCPeerConnection(this);
Peer->IceServers->Add("stun:stun.l.google.com:19302");
TsgcRTCDataChannel *Channel = Peer->CreateDataChannel("chat");
Peer->CreateOffer();
将 ICE、DTLS 1.3、SRTP 和 SCTP 捆绑到单个组件的原生 WebRTC 对等端 — 镜像 W3C RTCPeerConnection API。
CreateOffer 和 CreateAnswer 生成带正确 ICE-UFRAG / ICE-PWD / FINGERPRINT / SETUP 属性的 RFC 8866 SDP;SetRemoteDescription 接收对端的 SDP。
内部使用 TsgcICEClient 进行候选收集和连接检查;AddIceCandidate 在远程候选从信令中陆续到达时馈入。
在选定的 ICE 候选对可写后,组件执行 DTLS 1.3 握手(RFC 9147)并通过 SRTP 提取器派生 SRTP 密钥。
CreateDataChannel 打开多路复用在 DTLS 上的 SCTP 流 — 可靠/部分可靠、有序/无序,通过 BufferedAmount 实现背压。
音频/视频轨道通过 SRTP 传输。配套的 TsgcWSPServer_RTCPeerConnection 服务器端信令组件让您构建 SFU 风格的中继器。
与浏览器 RTCPeerConnection 互操作 — 已针对 Chromium / Firefox / Safari 测试。相同的 SDP 语义、相同的 ICE 候选、相同的 DataChannel 线格式。
本组件所实现协议的权威来源。