Delphi、C++ Builder 向け WebRTC メディアエンジン | sgcWebRTC

sgcWebRTC — Delphi、C++ Builder 向け WebRTC メディアエンジン

Delphi や C++ Builder のアプリに、ブラウザーに触れることなく、リアルタイムの音声・映像・画面共有・データチャネルを追加できます。

ブラウザー / WebView 不要
Windows、Linux、macOS、iOS、Android
音声・映像通話
画面共有
SCTP データチャネル
DTLS-SRTP 暗号化
STUN / TURN / ICE 内蔵
適応ビットレート
H.264 ハードウェアエンコード
ブラウザーとの相互運用
完全なソースコード
Delphi & C++ Builder

1 つのコンポーネントで、ピア接続のすべてを

sgcWebRTC は、sgcWebSockets の上に新しいパレットコンポーネントを追加するものではありません。同じ TsgcRTCPeerConnection クラス上で、W3C 準拠の残りの機能を解放します。シグナリング、接続性、暗号化、データチャネル、メディアがすべて 1 つのオブジェクトに揃っています。

手動でのブラウザー互換シグナリング

CreateOfferCreateAnswerSetLocalDescriptionSetRemoteDescriptionAddIceCandidate が実際の SDP を生成・処理するため、相手側のピアがブラウザーであっても接続できます。SDP は、すでにお使いのシグナリングチャネル経由で自由に運べます。

ICE、STUN、TURN による接続性

RTCOptions.ICEServers に対する Trickle / non-Trickle の ICE 候補収集に対応し、STUN によるサーバーリフレクシブ候補と、直接経路が塞がれている場合の TURN によるリレー候補を取得します。OnICECandidateOnConnectionStateChange でトランスポートの状態を追跡できます。

DTLS-SRTP 暗号化トランスポート

すべてのセッションは WebRTC が定める方式で保護されます。選定された ICE ペア上で DTLS ハンドシェイクが行われ SRTP 鍵が導出され、コネクション上のすべての RTP、RTCP、SCTP パケットが最初のパケットから暗号化されます。

SCTP データチャネル

CreateDataChannel は、SCTP-over-DTLS 上に順序付き / 順序なし、信頼性あり / 部分的信頼性のチャネル(RFC 8831/8832)を開きます。SendSendBytes、および OnMessage / OnMessageBinary イベントでテキストとバイナリのペイロードをやり取りします。

音声・映像・画面共有トラック

AddTrack で Opus または G.711 の音声トラック、あるいは VP8、H.264、Motion JPEG の映像トラックを追加できます。SendPCMSendVideoFrame でキャプチャしたメディアを送り込み、OnAudioOnVideoFrame でデコード済みのリモートトラックを受け取ります。

帯域推定と耐障害性

Google Congestion Control 方式の遅延ベース推定器がリンク状況を追跡し、映像エンコーダーの目標ビットレートを制御します。RTCP の NACK/PLI 再送、RFC 4588 RTX、RED/ULPFEC を備えており、ブラウザーがロスの多いネットワークで使うのと同じ仕組みです。

TsgcRTCPeerConnection

sgcWebRTC はパレットに新しいクラスを追加するものではありません。sgcWebSockets Enterprise に含まれる、同じ TsgcRTCPeerConnection コンポーネントです。Enterprise がすでに提供する ICE/TURN 接続性の上に、SDP、SCTP、RTP、SRTP の機能を解放します。

TsgcRTCPeerConnection

手動 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");
}

sgcWebRTC が実装する RFC

独自のトランスポートではなく、標準に基づいたメディアエンジンです。

RFC 8445 & 8489 — ICE / STUN

Interactive Connectivity Establishment(ICE)による候補の収集とノミネーション、およびその背後にある STUN バインディングリクエストです。TsgcICEClient を通じて公開され、TsgcRTCPeerConnection が自動的に利用します。

RFC 8656 — TURN

直接経路やサーバーリフレクシブ経路が届かない場合に、TsgcTURNClient を介して TURN サーバー経由のリレー候補を提供します。

RFC 8827 & 5764 — DTLS / DTLS-SRTP

ピア接続を認証し、暗号化メディア用の SRTP 鍵情報を導出する DTLS ハンドシェイクです。

RFC 8831 & 8832 — SCTP Data Channels

DCEP オープンハンドシェイク、DTLS ロールによるストリーム ID のパリティ、順序付き / 部分的信頼性配信を備えた、DTLS 上の SCTP です。

RFC 3550 & 3711 — RTP / SRTP

音声・映像のためのリアルタイムトランスポートとその暗号化プロファイルです。RTCP の送信者・受信者レポート、NACK、PLI、REMB フィードバックに対応します。

RFC 8829 — JSEP

CreateOffer / CreateAnswer / SetLocalDescription / SetRemoteDescription の背後にあるオファー/アンサーのステートマシンです。再ネゴシエーションと glare の解決を含みます。

sgcWebSockets Enterprise のアドオン

sgcWebRTC はアドオンとしてライセンスされます。すべてのライセンスには、完全なソースコード、1 年間のアップデート、70% の更新割引が含まれます。

sgcWebRTC

€299

Single、Team、Site の各ライセンスをご用意しています。完全なソースコードが含まれます。

  • TsgcRTCPeerConnection メディアエンジン
  • SDP シグナリング、SCTP データチャネル、RTP メディア
  • Delphi & C++ Builder
  • 完全なソースコード
  • 1 年間のアップデート

★ sgcWebSockets Enterprise が必要です

Standard や Professional では利用できません。All-Access バンドルにも含まれています。

価格を見て注文する

Delphi における WebRTC のよくある質問

Delphi や C++ Builder アプリケーションにリアルタイムの音声・映像・データチャネルを追加する前に、開発者からよく寄せられる質問です。

標準では対応していません。ほとんどのサードパーティ製ライブラリはシグナリングどまりです。sgcWebSockets Enterprise には、ICE/TURN 接続用のベースとなる 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 でテキストまたはバイナリのペイロードをやり取りします。
音声: Opus と G.711(PCMU/PCMA)。映像: libvpx バインディングによる VP8、および OS 自身のハードウェアエンコーダーによる H.264(Windows では Media Foundation、iOS/macOS では VideoToolbox、Android では MediaCodec)に加え、Windows では Motion JPEG にも対応します。プラットフォームごとの対応表は機能一覧をご覧ください。
されます。しかもメディアについては無効化できません。選定された ICE ペア上で DTLS-SRTP ハンドシェイクが実行され、コネクション上のすべての RTP、RTCP、SCTP パケットが暗号化されます。これはブラウザーが強制するのと同じ、暗号化必須のモデルです。
必要ありません。Delphi で WebRTC を扱う他のアプローチの多くは、フルブラウザーエンジン(Chromium Embedded Framework のラッパーや TWebBrowser/TEdgeBrowser コントロール)を組み込み、その JavaScript の WebRTC スタックを Pascal から操作する方式です。sgcWebRTC はそうではありません。TsgcRTCPeerConnection はコンパイル済みの Object Pascal コードであり、OS 自身のメディア API を直接呼び出します(Windows では Media Foundation、iOS/macOS では VideoToolbox、Android では MediaCodec)。プロセス内にブラウザーランタイムも、組み込みの Chromium バイナリも、JavaScript ブリッジも存在しません。そのためバイナリは小さく保たれ、同じコンポーネントが Android や iOS でも、ブラウザーが一切インストールされていないヘッドレスサービスやキオスク端末でも動作します。
sgcWebRTC は sgcWebSockets のサポートマトリックスに準じており、Delphi 7 から Delphi 13 Florence まで、および対応する C++ Builder の各バージョンをサポートします。体験版インストーラーは IDE のバージョンごとに用意されており、WebRTC のコンポーネントがすでに含まれているため、別途ダウンロードする必要はありません。
メディアエンジンについてはありません。sgcWebSockets .NET 版には、従来の AppRTC 形式のブラウザー間デモ向けに WebRTC シグナリングリレー(TsgcWSProtocol_WebRTC_Server)が含まれていますが、TsgcRTCPeerConnection に相当する .NET 版はありません。sgcWebRTC 自体は Delphi と C++ Builder 専用です。
sgcWebRTC は sgcWebSockets Enterprise のアドオンです。Standard や Professional では利用できませんが、All-Access バンドルには含まれています。Single、Team、Site の各ライセンスをご用意しており、いずれも完全なソースコードと 1 年間のアップデートが付属します。ご購入前に、体験版をダウンロードしてご自身のプロジェクトでお試しください。
3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

Delphi アプリの背後に、本物のピア接続を

音声、映像、データチャネルを、エンドツーエンドで暗号化しながら、すでに使い慣れた言語のまま実現します。

eSeGeCe のその他の製品

sgcWebRTC を、他の Delphi、C++ Builder、.NET コンポーネントライブラリと組み合わせましょう。

sgcWebSockets

エンタープライズ向けの WebSocket、HTTP/2、MQTT、AMQP、AI/LLM コンポーネントです。sgcWebRTC は sgcWebSockets Enterprise のアドオンです。

詳しく見る →

sgcQUIC

OpenSSL 3.5 のネイティブ QUIC エンジン上に構築された、QUIC(RFC 9000)と HTTP/3(RFC 9114)のクライアント・サーバーコンポーネントです。

詳しく見る →

sgcHTML

Delphi、C++ Builder、.NET 向けの、データアウェアなサーバーサイド HTML/UI コンポーネント 89 種類。Bootstrap 5 と htmx を採用しています。

詳しく見る →

sgcSign

エンタープライズ向けデジタル署名 — XAdES、PAdES、CAdES、ASiC に対応し、10 種類のキープロバイダーと EU 21 か国のプロファイルを備えています。

詳しく見る →

sgcOpenAPI

OpenAPI 3.0 パーサーと SDK ジェネレーター。任意の OpenAPI 仕様を、数秒で厳密に型付けされた Delphi クライアントに変換します。

詳しく見る →

sgcBiometrics

Delphi と C++ Builder 向けの、ネイティブな Windows Hello、指紋認証、Windows Biometric Framework コンポーネント。

詳しく見る →

sgcIndy

モダンな TLS、IPv6、HTTP/2 に対応した更新版 Indy TCP/IP コンポーネント。Delphi 7 から 13 まで対応します。

詳しく見る →

sgcAI

Delphi と C++ Builder 向けの 15 の AI、LLM、MCP コンポーネント。1 つのチャットコンポーネントで OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok、Mistral に接続できます。

詳しく見る →

sgcMQ

Delphi と C++ Builder 向けの MQTT 3.1.1/5.0、AMQP 0.9.1、AMQP 1.0、Apache Kafka、STOMP クライアントコンポーネント。

詳しく見る →