最終更新日:2025-09-15 15:48:49
本ガイドは、低遅延WebRTCプレイヤーをWebアプリケーションへ統合するための包括的な手順を提供します。
提供されたデモパッケージを出発点として、demo.htmlファイルの動作を分解し、ご自身のプロジェクトに自信を持って適用できるように説明します。
デモパッケージには、すぐに利用可能な完全動作のサンプルと、開始に必要なすべてのファイルが含まれています。
ダウンロードしたパッケージには以下が含まれています:
demo.html: すべてのHTMLとJavaScriptが1つのファイルにまとまった動作例ページです。wsrtcplayer.min.js: コアとなるソフトウェア開発キット(SDK)です。css/ フォルダ:デモページのスタイリング用に main.css と rtc_main.css が含まれています。それでは、SDKを使ってビデオストリームを再生するしくみを理解するために、demo.html ファイルの内容を分解してみましょう。
demo.html ファイルは、ページのビジュアル要素を配置しています。主なポイントは以下の通りです:
<video> 要素:ここに動画が表示されます。JavaScriptがターゲットにできるよう、固有のidが付与されています。<script>ブロックに、プレイヤー制御用の全JavaScriptロジックが記述されています。demo.html 内)「demo.html」の一番下にある <script> タグ内には、プレイヤーを制御するコードがあります。その主要な部分を分析しましょう。
a. onEvent コールバック
まず、onEvent という名前の関数が定義されています。この関数は、再生開始やバッファリング発生時など、プレイヤーからのステータス更新を受け取るために使用されます。
// この関数は、プレイヤーから送信されるすべてのイベントを処理します。
function onEvent(type, data) {
switch (type) {
case 3: // プレーヤーからのカスタムイベント
console.log("カスタマーイベント: " + data);
break;
case 2: // サーバーのSDP応答を受信しました
console.log("SDP応答を受信しました。");
break;
case 1: // バッファリングまたはスタリングが発生しました
console.log("バッファリングが発生しました。");
break;
case 0: // バッファリング後、再生が再開されました
console.log("再生が再開されました。");
break;
}
}
b. プレイヤーの初期化と制御
次に、コードは「Play」ボタンのセットアップを行います。playButton をクリックすると、次の手順が実行されます:
player オブジェクトが存在するかを確認し、player.destroy() を実行してすべてのリソースを解放します。このステップは、「Play」ボタンを複数回クリックした場合のエラーを防ぐために重要です。option オブジェクトが作成され、Playerの設定が行われます。window.wsrtcplayer.createWSRTCPlayer(option) が呼び出されます。これはSDKを使用して新しいPlayerインスタンスを作成します。player.open(signal_url) が呼び出され、ストリームに接続して再生を開始します。提供されたdemo.htmlファイルは、完全かつ機能的なスタートポイントです。ここからお客様の要件に合わせてカスタマイズする主な方法をいくつかご紹介します。
このデモでは、customerIDがプレースホルダーとして使用されています。本番環境のアプリケーションでは、必ずCDNetworksより提供された固有のAccount Nameに置き換えてください。これは、お客様のサービスにカスタムのサーバーサイド構成を適用するために不可欠です。
const playerOptions = {
element: videoElement,
customerID: "YOUR_UNIQUE_ACCOUNT_NAME", // この値を変更してください
listener: onEvent
};
デフォルトでは、このデモはユーザーが「再生」ボタンをクリックするまで待機します。ページの読み込みと同時に動画が自動的に再生されるようにするためには、スクリプトの修正が必要です。demo.html の最下部にある <script> ブロック全体を、次のコードと置き換えてください。
<script>
document.addEventListener('DOMContentLoaded', function () {
// この関数はプレーヤーからのステータス更新を処理します。
function onEvent(type, data) {
const timestamp = (window.performance.now() / 1000).toFixed(3);
console.log(timestamp + ": イベント受信 - 種類: " + type);
}
const videoElement = document.getElementById('video-player');
const signalUrl = 'http://webrtc-pull.test.cdnetworks.com/live/stream1.sdp';
// プレイヤーのオプションを定義します
const playerOptions = {
element: videoElement,
customerID: "YOUR_UNIQUE_ACCOUNT_NAME", // 実際のAccount Nameをご利用ください
listener: onEvent
};
// プレイヤーインスタンスを作成します
const player = window.wsrtcplayer.createWSRTCPlayer(playerOptions);
// 直ちにstream playbackを開始する
if (player) {
player.open(signalUrl);
}
});
</script>
コード内の const signalUrl を、ご自身がすぐにstream playbackを開始したいURLに必ず置き換えてください。
<const signalUrl = 'http://webrtc-pull.test.cdnetworks.com/live/stream1.sdp';>
onEventリスナーを使用して、ユーザーにリアルタイムでフィードバックを提供できます。まず、ステータスメッセージを表示するための<div>をHTMLに追加してください:
<div id="status-display" style="padding: 10px; font-weight: bold;">接続中...</div>
次に、プレイヤーの状態に応じてこの要素のテキストを更新するように onEvent 関数を修正してください:
const statusDisplay = document.getElementById('status-display');
function onEvent(type, data) {
switch (type) {
case 0:
statusDisplay.innerText = 'ステータス:再生中';
statusDisplay.style.color = 'green';
break;
case 1:
statusDisplay.innerText = 'ステータス:バッファ中...';
statusDisplay.style.color = 'orange';
break;
case 2:
statusDisplay.innerText = 'ステータス:接続済み';
break;
}
}
このデモでは、ページにシンプルかつ機能的な外観を与えるために、2つのCSSファイルを使用しています:rtc_main.css(汎用ベーススタイル)とmain.css(デモ専用スタイル)です。これらのスタイルは自由に変更でき、最適な結果を得るにはご自身のアプリケーションのブランディングに合わせて、独自のスタイルシートで上書きすることをお勧めします。
推奨方法:ご自身のスタイルシートを作成すること
cssフォルダーにmy-styles.cssという新しいファイルを作成します。/* /css/my-styles.css 内 */
#video-player {
border: 3px solid #007bff;
border-radius: 5px;
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
<link rel="stylesheet" href="css/rtc_main.css" />
<link rel="stylesheet" href="css/main.css" />
<link rel="stylesheet" href="css/my-styles.css" />
簡易修正(テスト用)
スタイルをすぐにテストしたい場合は、main.css ファイルの末尾に CSS ルールを追加してください。
createWSRTCPlayer(options)
プレイヤーインスタンスを作成します。
options (オブジェクト):設定用のオブジェクトです。
element (HTMLVideoElement) 【必須】:再生に使用する <video> 要素です。customerID (String) 【オプション】:CDNetworksより提供されたユニークなアカウント名です。サーバー側のカスタム設定をプレイヤーとお客様のアカウントに関連付けます。listener(関数)[任意]:playerイベントを受信するためのコールバック関数。player.open(signal_url)
ビデオストリームの読み込みと再生を開始します。
player.close()
ビデオのstream playbackを停止し、ストリームの接続を切断します。
player.destroy()
再生を停止し、切断し、プレイヤーインスタンスが使用したすべての内部リソースをクリーンアップします。プレイヤーインスタンスの使用が終わったら、メモリリークを防ぐためにこの関数を呼び出してください。
イベントコールバック(listener)
コールバック関数は2つのパラメータを受け取ります:function(type, data)。
| パラメータ | 型 | 説明 |
|---|---|---|
type |
Number |
イベントタイプを表すコードです。詳細は下記の一覧をご参照ください。 |
data |
String |
イベントごとのデータです。このパラメータは特定のイベントタイプでのみ設定されます。 |
Event type コード:
0: バッファリング後、再生が再開されました。1: バッファリングまたはスタリングが発生しました。2: サーバーからSDPアンサーを受信しました。dataパラメータにはSDP情報の文字列が含まれます。3: プレイヤーからのカスタムイベントです。dataパラメータにはカスタムイベント文字列が含まれます。シグナリングURLは以下の構造です:http(s)://domain/appName/streamName.sdp
domain: 追加されたDomain。appName: アプリケーション名または公開ポイントであり、転送や録画などの設定における最小単位です。設定の分離に使われ、異なるライブチャンネルタイプを区別することもできます。streamName: ライブストリームの名称で、各放送を区別するために使用されます。| オペレーティングシステム | ブラウザータイプ | 最低バージョン |
|---|---|---|
| Mac OS | デスクトップ版Safari | 11以上 |
| Mac OS | デスクトップ版Chrome | 47以上 |
| Windows | デスクトップ版Chrome | 56以上 |
| Android | モバイル版Chrome | 88以上 |
| iOS | Mobile Safari | 11以上 |
| iOS | WeChat アプリ内ブラウザー | 12以上 |
注: Chromium エンジンを基盤としたブラウザは、対応する Chrome バージョンの要件に従う必要があります。Android ブラウザでのサポート状況は異なる場合があり、一部の端末では H.264 のハードウェアデコードがサポートされていないことがあります。