RTCPeerConnection

Delphi/C++ Builder から WebRTC を使用できます。接続性のための ICE、鍵交換ハンドシェイクのための DTLS 1.3、メディアのための SRTP、データチャネルのための SCTP-over-DTLS を提供します。ブラウザは不要です。

TsgcRTCPeerConnection

ネイティブ Delphi WebRTC ピアです。内蔵の ICE、DTLS 1.3、SRTP、SCTP スタックをベースに W3C RTCPeerConnection インターフェース(CreateOffer / CreateAnswer / SetRemoteDescription / AddIceCandidate / DataChannel)を実装しています。

コンポーネントクラス

TsgcRTCPeerConnection

プロトコル

WebRTC (W3C)

対応プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Enterprise

オファー / アンサー / 接続

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); // over your WebSocket / WebRTC signalling
  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;

  // outbound side
  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 を 1 つのコンポーネントに統合したネイティブ WebRTC ピアです。W3C RTCPeerConnection API を実装しています。

SDP オファー / アンサー

CreateOfferCreateAnswer は、適切な ICE-UFRAG / ICE-PWD / FINGERPRINT / SETUP 属性を持つ RFC 8866 SDP を生成します。SetRemoteDescription がピアの SDP を取り込みます。

ICE による接続性

候補収集と接続確認に内部で TsgcICEClient を使用します。AddIceCandidate がシグナリングからトリクルされたリモート候補を受け付けます。

DTLS 1.3 鍵交換

選択された ICE ペアが書き込み可能になると、コンポーネントが DTLS 1.3 ハンドシェイク(RFC 9147)を実行し、SRTP エクストラクター経由で SRTP 鍵を導出します。

データチャネル(SCTP-over-DTLS)

CreateDataChannel は DTLS 上で多重化された SCTP ストリームを開きます。信頼性あり / 部分的信頼性あり、順序あり / 順序なし、BufferedAmount によるバックプレッシャーをサポートします。

メディアトラック

音声 / 映像トラックは SRTP 経由で転送されます。サーバーサイドシグナリングコンポーネント TsgcWSPServer_RTCPeerConnection を使用して SFU スタイルのリレーを構築できます。

ブラウザ互換性

ブラウザの RTCPeerConnection と相互接続できます。Chromium / Firefox / Safari でテスト済みです。同じ SDP セマンティクス、ICE 候補、データチャネルのワイヤーフォーマットを使用します。

仕様・参考資料

このコンポーネントが実装するプロトコルの公式ソースです。

ドキュメント・デモ

コンポーネントリファレンスへの直接リンク、すぐに実行できるデモプロジェクトの入手、体験版のダウンロードができます。

オンラインヘルプ — TsgcRTCPeerConnection このコンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — Demos\35.P2P\05.RTCPeerConnection すぐに実行できるサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。以下から体験版をダウンロードできます。
技術ドキュメント (PDF) このコンポーネントの機能、クイックスタート、Delphi および C++ Builder 向けのコードサンプル、一次資料のリファレンスを掲載しています。
ユーザーマニュアル (PDF) ライブラリのすべてのコンポーネントを網羅した総合マニュアルです。

Delphi で WebRTC を使い始めませんか?

体験版をダウンロードして、Delphi アプリケーションにネイティブな RTCPeerConnection を追加してください。