sgcWebRTC — Delphi、C++ Builder 向け WebRTC メディアエンジン
Delphi や C++ Builder のアプリに、ブラウザーに触れることなく、リアルタイムの音声・映像・画面共有・データチャネルを追加できます。
Delphi や C++ Builder のアプリに、ブラウザーに触れることなく、リアルタイムの音声・映像・画面共有・データチャネルを追加できます。
sgcWebRTC は、sgcWebSockets の上に新しいパレットコンポーネントを追加するものではありません。同じ TsgcRTCPeerConnection クラス上で、W3C 準拠の残りの機能を解放します。シグナリング、接続性、暗号化、データチャネル、メディアがすべて 1 つのオブジェクトに揃っています。
CreateOffer、CreateAnswer、SetLocalDescription、SetRemoteDescription、AddIceCandidate が実際の SDP を生成・処理するため、相手側のピアがブラウザーであっても接続できます。SDP は、すでにお使いのシグナリングチャネル経由で自由に運べます。
RTCOptions.ICEServers に対する Trickle / non-Trickle の 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 音声・映像トラックを 1 つのコンポーネントに集約。再ネゴシエーション、ICE リスタート、W3C の perfect-negotiation glare ルールを標準搭載しています。
コンポーネントを見る →ICE サーバーを設定し、SDP と ICE のイベントをフックし、データチャネルを開いてからオファーを作成します。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");
}
独自のトランスポートではなく、標準に基づいたメディアエンジンです。
Interactive Connectivity Establishment(ICE)による候補の収集とノミネーション、およびその背後にある STUN バインディングリクエストです。TsgcICEClient を通じて公開され、TsgcRTCPeerConnection が自動的に利用します。
直接経路やサーバーリフレクシブ経路が届かない場合に、TsgcTURNClient を介して TURN サーバー経由のリレー候補を提供します。
ピア接続を認証し、暗号化メディア用の SRTP 鍵情報を導出する DTLS ハンドシェイクです。
DCEP オープンハンドシェイク、DTLS ロールによるストリーム ID のパリティ、順序付き / 部分的信頼性配信を備えた、DTLS 上の SCTP です。
音声・映像のためのリアルタイムトランスポートとその暗号化プロファイルです。RTCP の送信者・受信者レポート、NACK、PLI、REMB フィードバックに対応します。
CreateOffer / CreateAnswer / SetLocalDescription / SetRemoteDescription の背後にあるオファー/アンサーのステートマシンです。再ネゴシエーションと glare の解決を含みます。
sgcWebRTC はアドオンとしてライセンスされます。すべてのライセンスには、完全なソースコード、1 年間のアップデート、70% の更新割引が含まれます。
€299
Single、Team、Site の各ライセンスをご用意しています。完全なソースコードが含まれます。
★ sgcWebSockets Enterprise が必要です
Standard や Professional では利用できません。All-Access バンドルにも含まれています。
価格を見て注文するDelphi や C++ Builder アプリケーションにリアルタイムの音声・映像・データチャネルを追加する前に、開発者からよく寄せられる質問です。
TsgcRTCPeerConnection コンポーネントが含まれています。sgcWebRTC はその上にメディアエンジンを追加します — 手動 SDP オファー/アンサー、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 コントロール)を組み込み、その JavaScript の WebRTC スタックを Pascal から操作する方式です。sgcWebRTC はそうではありません。TsgcRTCPeerConnection はコンパイル済みの Object Pascal コードであり、OS 自身のメディア API を直接呼び出します(Windows では Media Foundation、iOS/macOS では VideoToolbox、Android では MediaCodec)。プロセス内にブラウザーランタイムも、組み込みの Chromium バイナリも、JavaScript ブリッジも存在しません。そのためバイナリは小さく保たれ、同じコンポーネントが Android や iOS でも、ブラウザーが一切インストールされていないヘッドレスサービスやキオスク端末でも動作します。TsgcWSProtocol_WebRTC_Server)が含まれていますが、TsgcRTCPeerConnection に相当する .NET 版はありません。sgcWebRTC 自体は Delphi と C++ Builder 専用です。sgcWebRTC を、他の Delphi、C++ Builder、.NET コンポーネントライブラリと組み合わせましょう。
エンタープライズ向けの WebSocket、HTTP/2、MQTT、AMQP、AI/LLM コンポーネントです。sgcWebRTC は sgcWebSockets Enterprise のアドオンです。
詳しく見る →OpenSSL 3.5 のネイティブ QUIC エンジン上に構築された、QUIC(RFC 9000)と HTTP/3(RFC 9114)のクライアント・サーバーコンポーネントです。
詳しく見る →Delphi、C++ Builder、.NET 向けの、データアウェアなサーバーサイド HTML/UI コンポーネント 89 種類。Bootstrap 5 と htmx を採用しています。
詳しく見る →エンタープライズ向けデジタル署名 — XAdES、PAdES、CAdES、ASiC に対応し、10 種類のキープロバイダーと EU 21 か国のプロファイルを備えています。
詳しく見る →Delphi と C++ Builder 向けの、ネイティブな Windows Hello、指紋認証、Windows Biometric Framework コンポーネント。
詳しく見る →Delphi と C++ Builder 向けの 15 の AI、LLM、MCP コンポーネント。1 つのチャットコンポーネントで 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 クライアントコンポーネント。
詳しく見る →