ホームページ >バックエンド開発 >PHPチュートリアル >リアルタイムのオーディオおよびビデオ通信における WebSocket と WebRTC の共同アプリケーション
リアルタイム オーディオおよびビデオ通信における WebSocket と WebRTC の共同アプリケーション
概要:
インターネットの急速な発展により、リアルタイム オーディオとビデオの通信が可能になりました。ビデオコミュニケーションは、オンライン会議、オンライン教育、遠隔医療などの分野で重要なニーズとなっています。これらのニーズを満たすために、開発者は、高品質のリアルタイム音声およびビデオ通信を実現するために最適なテクノロジを選択する必要があります。この記事では、WebSocket と WebRTC の連携アプリケーションを紹介し、具体的なコード例を示します。
WebSocket と WebRTC の基本概念:
WebSocket は、ブラウザとサーバーの間で全二重通信を実現できる TCP ベースのプロトコルです。ハンドシェイクには HTTP プロトコルを使用し、ハンドシェイクが成功した後も長時間接続を維持して、リアルタイム通信の目的を達成します。従来の HTTP リクエストと比較して、WebSocket は低遅延かつ高スループットの送信効果を実現できるため、リアルタイム通信に適しています。
WebRTC は、ブラウザ間のリアルタイムのオーディオおよびビデオ通信をサポートするオープン スタンダードです。メディア伝送を提供するだけでなく、オーディオとビデオのエンコードとデコード、ネットワーク伝送、フロー制御などの一連の主要テクノロジーも含まれています。 WebRTC を使用すると、中間サーバーのサポートなしで、ブラウザー内で直接リアルタイムのオーディオおよびビデオ通信が可能になります。
WebSocket と WebRTC の連携アプリケーション:
リアルタイムのオーディオおよびビデオ通信では、WebSocket は主にシグナリングの送信に使用され、WebRTC はメディアの送信と処理を担当します。シグナリングとは、通話要求、メディア ネゴシエーション、候補の選択などの通信セッションを確立および維持するために使用されるメッセージを指します。 WebSocket を介してシグナリングを送信すると、シグナリング メッセージのリアルタイム配信と信頼性が保証されます。
具体的なコード例:
次に、WebSocket と WebRTC を使用してリアルタイムのオーディオおよびビデオ通信を実現する簡単な例を示します:
ステップ 1: WebSocket 接続を作成する
まず、次のコードを使用してブラウザで WebSocket 接続を作成し、それをシグナリング送信に使用します。
var signalingServer = new WebSocket('ws://example.com/signaling');
ステップ 2: シグナリングを監視する
WebSocket の onmessage イベントを使用して、WebSocket によって送信されたシグナリング メッセージを監視します。
signalingServer.onmessage = function(event){ var message = JSON.parse(event.data); // 处理信令消息 handleSignalingMessage(message); };
ステップ 3: シグナリング メッセージの処理
シグナリング メッセージを処理する場合、中心となるのは、WebRTC 接続の作成、メディア ストリームの送信、等以下は、簡略化された処理関数の例です。
function handleSignalingMessage(message){ switch(message.type){ case 'offer': // 处理offer消息,创建WebRTC连接并回复answer handleOfferMessage(message); break; case 'answer': // 处理answer消息,设置远程描述 handleAnswerMessage(message); break; case 'candidate': // 处理candidate消息,添加候选者 handleCandidateMessage(message); break; default: break; } }
ステップ 4: WebRTC を使用してオーディオおよびビデオ通信を実装する
WebRTC を介してオーディオおよびビデオ通信を実装するには、メディアの取得、エンコード、デコード、そして送信待ち。以下は、接続の作成とメディア ストリームの交換のためのコードの一部のみを示す簡略化された例です:
function handleOfferMessage(message){ var peerConnection = new RTCPeerConnection(); // 添加本地媒体流 navigator.mediaDevices.getUserMedia({ audio: true, video: true }).then(function(stream){ peerConnection.addStream(stream); }); // 设置远程描述 peerConnection.setRemoteDescription(new RTCSessionDescription(message)); // 创建answer并发送 peerConnection.createAnswer().then(function(answer){ peerConnection.setLocalDescription(answer); signalingServer.send(JSON.stringify(answer)); }); } function handleAnswerMessage(message){ peerConnection.setRemoteDescription(new RTCSessionDescription(message)); } function handleCandidateMessage(message){ var candidate = new RTCIceCandidate({ sdpMLineIndex: message.label, candidate: message.candidate }); peerConnection.addIceCandidate(candidate); }
概要:
この記事では、リアルタイムのオーディオおよびビデオ通信における WebSocket と WebRTC の連携アプリケーションを紹介します。 、具体的なコード例を示します。 WebSocket を介してシグナリングを送信し、メディアの送信と処理に WebRTC を使用することで、高品質のリアルタイム音声およびビデオ通信を実現できます。開発者は、これらのサンプル コードを参照して、ニーズに応じてカスタマイズおよび拡張できます。リアルタイムのオーディオおよびビデオ通信は、さまざまなアプリケーションの標準機能になりつつあり、WebSocket と WebRTC の連携アプリケーションは開発者にとって重要なテクノロジの選択肢となるでしょう。
以上がリアルタイムのオーディオおよびビデオ通信における WebSocket と WebRTC の共同アプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。