WebRTCを活用するには、SDP(Session Description Protocol)の役割を正しく理解することが重要です。
本記事では、WebRTCプラットフォームを運営するSkyWayが、SDPの基本からOffer/Answerモデルによるシグナリングの流れ、具体的なSDPの記述例までを詳しく解説します。WebRTCの実装に欠かせない知識をわかりやすくまとめているので、ぜひご活用ください。
代表的なWebRTCプラットフォームとして、NTTコミュニケーションズが開発、運営する「SkyWay」があります。 「SkyWay」とは、ビデオ・音声通話をアプリケーションに簡単に実装できる国産SDKです。⇒概要資料をダウンロードする(無料)
WebRTCとは
WebRTC(Web Real-Time Communication)は、Webブラウザやアプリケーション間で音声・映像・データをリアルタイムにやり取りできる技術です。特別なプラグインなしで動作し、サーバーを介さずにP2P接続を確立するため、低遅延で高品質な通信が可能です。ビデオ通話やオンラインゲームなど、リアルタイム性が求められるアプリケーションに広く利用されています。
以下の記事にてWebRTCを詳しく解説しているので、ご参考ください。
SDP(Session Description Protocol)とは
SDPは、音声や映像の通信セッションの詳細を記述するためのプロトコルです。
具体的には、以下の情報を含みます。
SDPに含まれる情報 | 説明 |
---|---|
メディア情報 | 音声・映像のフォーマット(コーデック、解像度など) |
ネットワーク情報 | ICE候補、IPアドレス、ポート番号 |
暗号化情報 | DTLS(Datagram Transport Layer Security)のキー情報 |
RTP情報 | RTP(Real-time Transport Protocol)によるデータ転送情報 |
WebRTCにおけるSDPの役割
WebRTCでは、P2Pの通信をするために、最初にシグナリングという仕組みが必要になります。SDPは、シグナリングの一部として使われます。
まずは、シグナリングについて解説します。
シグナリングとは
シグナリングは、通信を開始するために必要な情報を交換するプロセスです。仲介するサーバーを 「シグナリングサーバー」と呼びます。WebRTC自体にはシグナリングの方法が含まれていないため、WebSocketやHTTPなどを使って実装します。
シグナリングの仕組み(Offer/AnswerモデルでSDPのやりとり)
シグナリングの仕組みでは、「Offer/Answerモデル」と呼ばれる方法でSDPをやり取りします。まず、一方がOffer(提案)を作成し、相手がそれに対するAnswer(応答)を返すことで、使用する音声・映像のコーデックやネットワーク情報を決定します。このSDPのやり取りは、シグナリングサーバーを介して行われます。
以下が具体的な流れになります。
- オファー(Offer)の作成
- 通信を開始する側(例:Peer A)が
RTCPeerConnection.createOffer()
を使ってSDPを作成。
- 通信を開始する側(例:Peer A)が
- オファーの送信
- Peer Aは作成したSDPをシグナリングサーバーを経由してPeer Bに送信。
- アンサー(Answer)の作成
- Peer Bは受け取ったSDPをもとに、
RTCPeerConnection.createAnswer()
で応答SDPを作成。
- Peer Bは受け取ったSDPをもとに、
- アンサーの送信
- Peer BはアンサーSDPをシグナリングサーバー経由でPeer Aに送信。
- SDPの適用
- Peer AとBが互いにSDPを適用し、通信を開始。
このあと、STUN/TURNサーバーを使ってICE候補を取得し交換、ICE候補が適切にマッチすると、P2P接続の確立され、直接通信が可能になります。
詳しくは「WebRTC」「WebRTC ICE」の記事にて解説していますので、ご参考ください。
※「WebRTC ICE」の記事は現在作成中です
SDPの具体例
以下はWebRTCのSDPの簡単な例です。
v=0 o=- 46117392 2 IN IP4 192.168.1.2 s=- t=0 0 m=audio 49170 RTP/AVP 0 c=IN IP4 192.168.1.2 a=rtpmap:0 PCMU/8000
このSDPの内容を簡単に説明すると、以下の通りです。
v=0
:SDPのバージョンo=- 46117392 2 IN IP4 192.168.1.2
:セッションの識別情報m=audio 49170 RTP/AVP 0
:音声通信を49170番ポートで実施し、RTP/AVP(Audio Video Profile)を使用c=IN IP4 192.168.1.2
:ネットワーク接続情報a=rtpmap:0 PCMU/8000
:PCMU(G.711)コーデックを8kHzで使用
WebRTCを簡単に実装するには
WebRTCの実装には専門的な知識と多くの開発工数が必要ですが、SDK(Software Development Kit)を活用する方法があります。SDKを利用すれば、サーバーの構築や管理の手間を大幅に削減し、効率的な開発が可能になります。
WebRTC SDK「SkyWay」
WebRTCの代表的なSDKとして、NTTコミュニケーションズが開発、運営する「SkyWay」があります。
「SkyWay」とは、ビデオ・音声通話をアプリケーションに簡単に実装できる国産SDKです。
大きな特徴としては、以下が挙げられます。
- スピーディーな開発ができる:
開発資料が豊富かつ日本語でわかりやすい、国内エンジニアがサポートしてくれる - 信頼性・安全性が高い:
NTTコミュニケーションズが開発、運営する国産SDK。サービス歴は10年以上で、累計導入サービス数も21,000件以上 - 無料で開発スタート:
開発検証用として、Freeプランあり。テスト検証期間中は無料で利用可能。商用サービス提供後も基本利用料11万 + 従量課金制で安心。
WebRTCのSDKとして提供されているものは、海外製が多いため、開発ドキュメントも英語か和訳のもので開発しにくい傾向にあります。 「SkyWay」であれば、NTTグループが開発、運営する安心の国産SDKかつ、国内エンジニアがサポートしてくれるため、開発運用工数も大幅に削減でき、開発のしやすさからもおすすめです。
テスト検証用は無料のため、ぜひアカウント登録をしてみください。
まとめ
WebRTCは、ブラウザ間でリアルタイム通信を実現する技術で、シグナリングを通じてSDP(Session Description Protocol)を交換し、音声・映像の通信条件を確立します。SDPにはコーデックやネットワーク情報が含まれ、Offer/Answerモデルを用いて通信の設定が決定されます。この記事では、WebRTCにおけるSDPの役割や具体的な流れを紹介しました。
WebRTCの実装には高度な知識と膨大な開発工数が必要ですが、「SkyWay」を利用することで、スムーズかつ効率的に開発を進めることができるため、おすすめです。