双方向ビデオ・ライブ放送
Vonage Video APIブロードキャストでは、ライブ・ビデオ・セッションを多くの視聴者と共有できます。
このページには以下のセクションがあります:
ライブ双方向ビデオ配信では、多数のクライアントが、セッション内で互いのストリームを 公開・購読することで、リアルタイムにコミュニケーションをとることができます。ライブ双方向 ビデオ配信セッションでは、セッション内のアクティブな配信者の数に基づき、 最大15,000人の参加者をサポートすることができます。
以下の表は、セッションのすべてのパブリッシャーを購読できるライブインタラクティブ放送の参加者数を 詳細に示したものです。インタラクティブ放送の参加者とは、公開されたすべてのストリームの低遅延・ 閲覧専用サブスクライバーであり、ライブインタラクティブ放送の視聴者です。 セッションのパブリッシャーは、放送のホストと見なすことができ、ホストとして 他の公開ストリームを購読することも可能です。セッションあたりのパブリッシャー数が増加すると、 すべての公開ストリームの同時視聴者数も減少します。
たとえば、以下の表に基づくと、セッション内に公開ストリームが1つまたは2つある場合、 最大15,000人の参加者が、ライブ配信参加者として、これらの公開ストリーム両方をリアルタイムの遅延で 視聴することができます。 同様に、セッション内に公開ストリームが3つある場合、 最大13,000人の参加者が、ライブ配信参加者として、これら3つの公開ストリームすべてを リアルタイムの遅延で視聴できます。
| **出版社数 *** | 1セッションあたりの同時ライブ参加人数(参加者はすべての配信者を購読している) |
|---|---|
| 1 | 15,000 |
| 2 | 15,000 |
| 3 | 13,000 |
| 4 | 11,000 |
| 5 | 8,000 |
| 6 | 6,800 |
| 7 | 5,700 |
| 8 | 5,000 |
| 9 | 4,300 |
| 10 | 4,000 |
| 12 | 3,400 |
| 15 | 2,900 |
| 16 | 2,800 |
| 20 | 2,000 |
| 25 | 1,600 |
| 50 | 800 |
| 55 | 700 |
* 公開されている配信には、カメラ配信と画面共有配信の両方が含まれます。
セッションの参加者数が表に記載されている値を超える場合は、 ライブストリーミング機能を使用してください(参照: ライブ配信 放送).
同様に、OpenTokのセッションでは、最大15,000のクライアントが同時にセッションに接続できます。
アプリケーション開発者は、アプリケーションのプラットフォーム制限を管理する必要があります。次のセクションを参照してください。
ライブの双方向ビデオ配信機能は、ルーティングされたセッション( OpenTok Media Router を使用するセッション)でのみ利用可能です。詳細については、以下を参照してください。 OpenTok メディアルーターとメディア モード.
ライブの双方向動画配信は、 クライアントのリソース(帯域幅およびCPU)がその解像度に対応している場合、HD動画(およびそれより低解像度の動画)に対応しています。
インタラクティブなライブビデオ放送をサポートするアプリの構築
多数のクライアントが OpenTok セッションに接続する場合、 以下の API の機能強化を活用することをお勧めします。以下のセクションを参照してください:
接続イベントの抑制
セッションに多数のクライアントが接続する場合は、 クライアント側の接続イベントを無効にすることが重要です。これらのイベントには、 他のクライアントがセッションに接続したり切断したりした際にディスパッチされるものが含まれます。 ほとんどのクライアントは これらのイベントを処理する必要がなく、無効化することで、 大量のイベントによって引き起こされるパフォーマンスの低下(例えば、 オーディオ・ビデオストリームの配信や購読時など)を防ぐことができます。
重要だ: このような大規模なアプリケーションに最適化するには、ここで説明する接続イベント抑制APIを必ず使用してください。
バージョン 2.10.0 以降では、各 OpenTok クライアント SDK(Web、iOS、および Android 用)に、クライアント側で接続イベントを無効にするための API の機能強化が含まれています。 これらについては、以下のセクションで説明しています:
大規模なセッションでは、サポートされている他の OpenTok クライアントバージョン(2.9.0 以降)を使用することも可能ですが、 2.10.0 より前のバージョンを使用しているクライアントでは、接続イベントが抑制されません。 古いバージョンの OpenTok.js を使用しているクライアントでは、大量の接続イベントが発生するため、 パフォーマンスが低下する可能性があります。
OpenTok.jsで接続イベントを抑制する (web)
Session オブジェクトを初期化する際は、以下の方法でオブジェクトを作成してください。
connectionEventsSuppressed プロパティを true, そしてそのオブジェクトを
the options パラメータを呼び出すときに OT.initSession() メソッド。
次に、セッションに接続します:
var props = {connectionEventsSuppressed: true};
var session = OT.initSession(API_KEY, SESSION_ID, props);
session.connect(token, function(error) {
if (error) {
console.log('Error connecting: ', error.code, error.message);
} else {
console.log('Connected to the session.');
}
});
これは、Sessionオブジェクトが connectionCreated そして
connectionDestroyed 他のクライアントがセッションに接続したり、
セッションから切断したりした際のイベントです。(なお、OpenTokサーバーはこれらのイベントをWeb
クライアントには送信しません。)
OpenTok iOS SDK を使用した接続イベントの抑制
OTSessionSettingsオブジェクトを初期化する際に、その connectionEventsSuppressed
プロパティを YES.そのオブジェクトを settings パラメータを
呼び出す際の [OTSession initWithApiKey:sessionId:delegate:settings:] OTSession オブジェクトを
初期化する方法:
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
settings.connectionEventsSuppressed = YES;
OTSession *session = [[OTSession alloc] initWithApiKey:apiKey
sessionId:sessionId
delegate:self
Settings:settings];
それからセッションに接続する:
OTError* error = nil;
[session connectWithToken:kToken error:&error];
if (error) {
NSLog(@"connect failed with error: (%@)", error);
}
これによって [SessionDelegate session:connectionCreated:] そして
[SessionDelegate session:connectionCreated:] 他のクライアントがセッションに接続したり、
セッションから切断したりした際に、メッセージが送信されるのを防ぎます。(また、OpenTok
サーバーはこれらのイベントをiOSクライアントに送信しません。)
OpenTok Android SDK での接続イベントの抑制
セッションに接続するには、Session.Builder オブジェクトをインスタンス化し、
API キーと OpenTok セッション ID を引数として渡します。その後、
connectionEventsSuppressed() メソッドに true.
に電話してください build() Session オブジェクトを作成する方法。その後、
connect() メソッドを使ってセッションに接続します:
Session session = new Session.Builder(this, API_KEY, mySessionId)
.connectionEventsSuppressed(true)
.build();
session.connect(myToken);
を呼ばないでください。 Session.setConnectionListener(ConnectionListener listener)
メソッド(Session オブジェクトに ConnectionListener を設定するためのもの)。この
メソッドを呼び出しても、何の効果もありません。接続イベントを抑制すると、他のクライアントがセッションに接続したり
切断したりした際に、ConnectionListener のメソッドが呼び出されなくなります。(また、OpenTok サーバーはこれらの
イベントを Android クライアントに送信しません。)
OpenTok Windows SDK を使用した接続イベントの抑制
セッションに接続するには、
Session.Builder クラス。API キーと OpenTok セッション ID を
以下の Session.Builder() コンストラクタで connectionEventsSuppressed
パラメータを true.を呼び出す。 Connect() Session オブジェクトのメソッド
セッションに接続するには:
Session = new Session.Builder(Context.Instance, API_KEY, SESSION_ID, true).Build();
// Set event handlers for the Session object. Then, connect:
Session.Connect(TOKEN);
を設定しないでください。 Session.StreamReceived または Session.StreamDropped イベントハンドラ、
接続イベントを抑制すると、他のクライアントが
セッションに接続したり切断したりした際に、これらのイベントが発生しなくなります。(また、OpenTokサーバーはこれらの
イベントをWindowsクライアントに送信しません。)
OpenTok Linux SDK を使用した接続イベントの抑制
セッションに接続するには otc_session_settings struct、
APIキーとOpenTokのセッションIDを渡します。その後、
otc_session_settings_set_connection_events_suppressed() 関数に、
以下の otc_session_settings 最初のパラメータとしてインスタンスを指定し、 OTC_TRUE
2番目として、 suppressパラメータを指定する。次に otc_session_new_with_settings()
otc_session 構造体を作成する関数。続いて、セッションに接続する関数:
otc_session_settings *session_settings = otc_session_settings_new();
otc_session_settings_set_connection_events_suppressed(session_settings, OTC_TRUE);
otc_session_callbacks session_callbacks = {0};
// Set the callback functions of the otc_session_callbacks instance.
otc_session *session = otc_session_new_with_settings(API_KEY, SESSION_ID,
&session_callbacks,
session_settings);
otc_session_connect(session, TOKEN);
を設定しないでください。 otc_session_callbacks.on_connection_created または
otc_session_callbacks.on_connection_dropped コールバック関数。
接続イベントを抑制すると、
他のクライアントがセッションに接続したり切断したりした際に、これらのコールバック関数が呼び出されなくなります。(また、OpenTokサーバーは
これらのイベントをLinuxクライアントに送信しません。)
接続およびストリームの上限を超えた場合の検出
OpenTokクライアントSDKには、セッションの接続数上限(15,000)またはストリーム数上限(15,000)が 超過している状態で、クライアントがセッションへの接続やストリームの購読を試みた際に発生する エラーが含まれています。これらについては、以下のセクションで説明しています:
接続制限またはストリーム制限に達したために、クライアントがセッションに接続できない、 またはストリームを購読できない場合、クライアントに ライブ配信 放送 セッションの(実装している場合は )。
接続およびストリーム制限に関するエラー OpenTok.js (Web)
セッションの接続制限(同時接続クライアント数15,000
台)に達している状態でセッションへの接続を試みると、そのセッションの完了ハンドラは Session.connect() メソッド
は、 error パラメータは name プロパティが次のように設定されています
'OT_CONNECTION_LIMIT_EXCEEDED'.
セッションのストリーム制限を超過している状態で
ストリームの購読を試みると、その Session.subscribe()
メソッドは、 error パラメータは name プロパティが次のように設定されています
'OT_STREAM_LIMIT_EXCEEDED'.
OpenTok Android SDKにおける接続およびストリーム制限に関するエラー
セッションの接続制限(同時接続クライアント数15,000
台)に達している状態でそのセッションへの接続を試みると、 Session.SessionListener.onError(session, error) メソッド
は、 error パラメータは、以下の内容を含む OpenTokError オブジェクトに設定されます。 code プロパティが次のように設定されています
SessionConnectionLimitExceeded.
セッションのストリーム制限数に
達している状態でストリームの購読を試みると、 Session.SubscriberListener.onError(subscriber, error)
メソッドは、 error パラメータは、以下の内容を含む OpenTokError オブジェクトに設定されます。 code プロパティ
を SubscriberStreamLimitExceeded.
OpenTok iOS SDKにおける接続およびストリーム制限に関するエラー
セッションの接続制限(同時接続クライアント数15,000
台)に達している状態でそのセッションへの接続を試みると、 [SessionDelegate session:didFailWithError:] メッセージは
以下の方法で送信されます。 error を持つ OTError オブジェクトに設定する。 code プロパティが次のように設定されています
OTSessionConnectionLimitExceeded .
セッションのストリーム制限数に
達している状態でストリームの購読を試みると、 [OTSubscriberKitDelegate subscriber:didFailWithError:]
メッセージは、 error を持つ OTError オブジェクトに設定する。 code プロパティが次のように設定されています
OTSubscriberStreamLimitExceeded.
OpenTok Windows SDKにおける接続およびストリーム制限に関するエラー
セッションの接続制限(同時接続クライアント数15,000
台)に達している状態でそのセッションへの接続を試みると、 Session オブジェクトは Error イベント
以下の方法で送信されました ErrorCode に設定する。 ErrorCode.SessionConnectionLimitExceeded.
セッションのストリーム制限数に
達している状態でストリームの購読を試みると、 Subscriber オブジェクトは Error イベント
~と~ ErrorCode を持つ OTError オブジェクトに設定する。 code プロパティが次のように設定されています
ErrorCode.SubscriberStreamLimitExceeded.
OpenTok Linux SDKにおける接続およびストリーム制限に関するエラー
セッションの接続制限(同時接続クライアント数15,000
台)に達している状態でそのセッションへの接続を試みると、 otc_session_callbacks.on_error() 関数が呼び出されます
以下の引数で error パラメータを OTC_SESSION_CONNECTION_LIMIT_EXCEEDED.
セッションのストリーム制限数に
達している状態でストリームの購読を試みると、 otc_subscriber_callbacks.on_error() 関数が呼び出されます
以下の引数で error パラメータを OTC_SUBSCRIBER_STREAM_LIMIT_EXCEEDED .
ライブ双方向ビデオ放送のビデオ品質
大規模なセッションでは、OpenTokのスケーラブルビデオ機能が役立ちます。 この 機能により、エンドポイントはネットワークやCPUの状態に応じて、異なる動画解像度やフレーム レートを選択して再生できます。この機能は、 OpenTok iOS SDK(一部のデバイス)、OpenTok Android SDK(一部の デバイス)、OpenTok Windows SDK、およびChromeとSafariでのOpenTok.jsで利用可能です。
双方向ライブ放送の料金
ライブインタラクティブビデオの料金体系は、他のOpenTokセッションと同様に、契約分単位の課金方式が適用されます。詳細については、以下をご覧ください。 価格.