UIのカスタマイズ — Windows
OpenTokの動画のユーザーインターフェースをカスタマイズするために、以下の設定を行うことができます:
- 公開ストリームに名前を追加する
- パブリッシャーにミュートボタンを追加する
- 加入者にミュートボタンを追加する
- パブリッシャーのカメラを切り替えるボタンの追加
- ビデオの有効/無効時のユーザーインターフェースの調整
- セッションがアーカイブされているときにインジケータ要素を表示する
- オーディオレベルに応じてユーザーインターフェースを調整
- カスタムビデオレンダラの使用
公開ストリームに名前を追加する
パブリッシャーの名前は name() メソッドを実行する必要があります。 パブリッシャー・オブジェクトをインスタンス化する:
publisher = new Publisher(Context.Instance,
renderer: publisherVideoRenderer,
name: "Bob's video",
capturer: capturer);
この名前を使用して、ストリームを公開しているクライアントを識別できます。ストリーム・クラスには Name プロパティあなたが ストリームを購読するこの名前をユーザー・インターフェース要素に表示することができます。
出版社の「名前」欄に個人情報を使用しないこと — パブリッシャー名は、セッションの他の参加者に公開される可能性があり、またインスペクターツールやVonageの内部ログにも表示される可能性があるため、パブリッシャー名には、暗号化されていない機密情報や個人情報を決して使用しないでください。 セキュリティのベストプラクティスを参照してください.
パブリッシャーにミュートボタンを追加する
パブリッシャーのマイクをミュートするデフォルトのユーザーインターフェース要素はありません。しかし、ボタンなどの要素を追加して PublishAudio プロパティを設定します。プロパティを false をミュートしてください:
publisher.PublishAudio = false;
プロパティを true オーディオを公開する。
publisher.PublishAudio = true;
加入者にミュートボタンを追加する
加入者の音声をミュートするデフォルトのユーザーインターフェイス要素はありません。ただし、ボタンなどの要素を追加して SubscribeToAudio プロパティを設定します。プロパティを false で音声をミュートします:
subscriber.SubscribeToAudio = false;
プロパティを true をクリックしてオーディオ再生を有効にする(ストリームにオーディオがある場合):
subscriber.SubscribeToAudio = true;
パブリッシャーのカメラを切り替えるボタンの追加
パブリッシャーが使用するカメラを切り替えるデフォルトのユーザーインターフェース要素はありません。しかし、ボタンなどの要素を追加して VideoCapturer プロパティを使用します:
publisher.VideoCapturer = newCapturer;
詳しくは カスタムビデオキャプチャーの使用.
ビデオの有効/無効時のユーザーインターフェースの調整
サブスクライバーのビデオが無効になると、サブスクライバー・オブジェクトは VideoDisabled イベントが発生します。このイベントが発生したら、ユーザーインターフェイスの要素(アイコンなど)を追加して、動画が無効になったことを示すことができます:
subscriber.VideoDisabled += Subscriber_VideoDisabled;
private void Subscriber_VideoDisabled(object sender, EventArgs e) {
// Display the video disabled indicator
}
サブスクライバーのビデオが再有効化されると、サブスクライバー・オブジェクトは VideoEnabled イベントが発生します。このイベントが発生すると、動画が再び有効になったことを示すユーザーインターフェイス要素(アイコンなど)を削除することができます:
subscriber.VideoEnabled += Subscriber_VideoEnabled;
private void Subscriber_VideoEnabled(object sender, EventArgs e) {
// Display the video disabled indicator
}
を使用するセッションでは OpenTok メディアルーター (メディアモードがルーティングに設定されているセッション)、サブスクライブは以下のイベントも送るかもしれない:
VideoDisableWarning— OpenTok Media Router は、ストリームの画質が低下したと判断しました。画質がさらに低下した場合は、動画の再生が停止されます。VideoDisableWarningLifted— OpenTok Media Router は、ストリームの品質が改善され、動画の配信停止が差し迫ったリスクとはならないレベルに達したと判断しました。
また、これらのイベントが送信されたときに、ユーザーインターフェイスの通知(アイコンなど)を表示したり、削除したりすることもできます。
Publisher オブジェクトをインスタンス化すると、パブリッシュされたストリームに対するパブリッシャーおよびサブスクライバーのオーディオフォールバックが有効または無効になる点に注意してください。オーディオフォールバック機能は、ネットワークや CPU の状況が動画の再生に対応できない場合、パブリッシャーおよびサブスクライバーの動画を無効にします。詳しくは、 オーディオのフォールバック(Windows).
パブリッシャーのオーディオフォールバックを有効にすると、 Publisher 以下のオーディオのフォールバックに関連するイベントを送信します:
VideoDisabledVideoEnabledVideoDisableWarningVideoDisableWarningLifted
これらのイベントに応じて、UIインジケーターを表示することができます。
セッションがアーカイブされているときにインジケータ要素を表示する
セッションのアーカイブが録画を始めると(あるいは録画中のセッションに接続すると)、Sessionオブジェクトは ArchiveStarted イベントを送信します。録画が停止すると、Sessionオブジェクトは ArchiveStopped イベントを追加することができます。パブリッシャー ビューに表示されるアイコンのようなユーザー インターフェイス要素を追加して、ビデオが録画中であることを示すことができます:
session.ArchiveStarted += Session_ArchiveStarted;
session.ArchiveStopped += Session_ArchiveStopped;
private void Session_ArchiveStarted(object sender, EventArgs e) {
// Display the archive indicator
}
private void Session_ArchiveStopped(object sender, EventArgs e) {
// Hide the archive indicator
}
オーディオレベルに応じてユーザーインターフェースを調整
について Subscriber.AudioLevel そして Publisher.AudioLevel イベントは、サブスクライバーとパブリッシャーのオーディオレベルとともに、定期的に送信されます。あなたは AudioLevel プロパティを使用して、オーディオ・レベル・メーターの表示を更新します:
@Override
publisher.AudioLevel += Publisher_AudioLevel;
subscriber.AudioLevel += Subscriber_AudioLevel;
private void Publisher_AudioLevel(object sender, EventArgs e) {
// Display the audio level based on e.AudioLevel
}
private void Subscriber_AudioLevel(object sender, EventArgs e) {
// Display the audio level based on e.AudioLevel
}
注: パブリッシャーのオーディオレベルは、そのストリームがセッションに公開されるまでは利用できません。パブリッシャーがセッションへのストリーミングを開始する前にオーディオをプレビューするには、 カスタムオーディオドライバ.
デフォルトでは、プライバシー保護のため、全てのパブリッシャーがミュートされると、オーディオキャプチャは停止され、マイクは解放されます。これはパブリッシャーインスタンスが再び音声を有効にするまで音声レベルの更新が行われないことを意味します。バージョン 2.31.0 以降では、パブリッシャーはミュート中でもオーディオキャプチャを継続できるようにプロパティが設定されています。
新しいパブリッシャーインスタンスをインスタンス化する際に、開発者はこの動作を有効にすることができます:
publisher = new Publisher.Builder(_context)
{
AllowAudioCaptureWhileMuted = true
}.Build();
注意:この動作を有効にすると、パブリッシャーがミュート状態でもマイクが使用されます。
カスタムビデオレンダラの使用
デフォルトでは、パブリッシャーは Windows Presentation Foundation 用のデフォルトのビデオレンダラーを使用します。これは、OpenTok Windows SDK によって定義されています。
IVideoRenderer インターフェイスを実装するクラスを作成することで、動画のレンダラーを指定することもできます。このインターフェイスには RenderFrame(frame) メソッドが呼び出されます。このメソッドの実装では、このメソッドに渡されたフレームオブジェクトを使用して、レンダリングする画像を作成します。また、このメソッドの実装の最後に、必ず Dispose() のメソッドを使用する。 frame オブジェクトのメモリ・リークを防ぐ。
パブリッシャー オブジェクトまたはサブスクライバー オブジェクトをインスタンス化するときに、カスタム動画レンダラー オブジェクトを Publisher() または Subscriber() コンストラクタは renderer パラメータ)。