ストリームの公開 — Android

一旦 セッションに接続この場合、セッションに接続している他のクライアントが閲覧できるストリームを公開することができる。

このトピックには以下のセクションが含まれます:

パブリッシャー・オブジェクトの初期化

Publisher オブジェクトは、OpenTok セッションで使用するために、デバイスのマイクやカメラからの音声・動画ストリームを取得するために使用されます。

基本的なパブリッシャーには Publisher.Builder クラスでパブリッシャーオブジェクトをインスタンス化します。パブリッシャーのAndroidアプリケーションコンテキストを渡します:

mPublisher = new Publisher.Builder(context)
  .build();

Publisher オブジェクトへの参照を必ず保持してください。そうしないと、ガベージコレクションの対象となり、クラッシュや予期しない動作を引き起こす可能性があります。

を呼び出して、基本的なパブリッシャー関連イベントのリスナーオブジェクトを追加します。 setPublisherListener(PublisherKit.PublisherListener listener) メソッドを呼び出します:

mPublisher.setPublisherListener(this);

イベントリスナーオブジェクトとして指定したオブジェクトに、PublisherKit.PublisherListenerインターフェイスのメソッドを実装します。これらのメソッドは、パブリッシャー関連のイベントが発生すると呼び出されます。

について getView() メソッドは、公開する動画のビューを返します。android.view.ViewGroupオブジェクトのサブビューとして追加し、アプリに表示します:

mPublisherViewContainer.addView(mPublisher.getView());

パブリッシャー・オブジェクトを Session.publish() ストリームをセッションに公開する方法。詳しくは ストリームの公開.

パブリッシャーのカスタム設定を定義するために Publisher.Builder オブジェクトの他のメソッドを呼び出すことができます:

mPublisher = new Publisher.Builder(context)
  .name("Bob")
  .audioTrack(true)
  .frameRate(CameraCaptureFrameRate.FPS_7)
  .resolution(CameraCaptureResolution.LOW)
  .videoTrack(false)
  .capturer(mCapturer)
  .renderer(mRenderer)
  .build();

なお、OpenTok Media Router を使用するセッション( メディアモード ルーティングに設定されている場合)、フレームレートを下げると、ストリームが使用する帯域幅が比例して減少する。ただし、メディアモードが中継に設定されているセッショ ンでは、フレームレートを下げてもストリームの帯域幅は減少しない。

カスタムビデオキャプチャを使用して、カスタマイズしたビデオソースでストリームを公開できます。 カスタムビデオキャプチャーの使用.カスタムビデオキャプチャを使用して、画面共有ストリームを公開することもできます。 スクリーン共有.

また、公開ストリームにカスタマイズしたオーディオソースを使用することもできます。 カスタムオーディオドライバの使用.

ストリーミングの前に、配信者の動画をプレビューする

なお、デフォルトでは、パブリッシャーがセッションへのストリーミングを開始すると、パブリッシャーのビューにはそのパブリッシャーの動画が表示されます。パブリッシャーがストリーミングを開始する前に動画のプレビューを表示するには、 startPreview() メソッドを呼び出します:

mPublisher.startPreview();

を呼び出すと startPreview() メソッドを呼び出す必要があります。 destroy() メソッドを使用して、パブリッシャーのビュー(および動画)を削除します。 onStreamDestroyed(PublisherKit publisher, Stream stream) PublisherListenerのメソッドが呼び出される)。

注: について startPreview() このメソッドでは、オーディオ入力がパブリッシャーに接続されません。パブリッシャーがセッションへのストリーミングを開始する前にオーディオをプレビューするには、 カスタムオーディオドライバ.

ストリームの公開

Publisher オブジェクトを作成したら(参照: パブリッシャー・オブジェクトの初期化)、それを publish(PublisherKit publisher) メソッドを呼び出して、ストリームをセッションに公開します:

mSession.publish(mPublisher);

このコードでは mSession がSessionオブジェクトであること、そしてクライアントがそのセッションに接続していること。詳細は セッションへの参加.

について PublisherKit.PublisherListener.onStreamCreated(PublisherKit publisher, Stream stream) メソッドが呼ばれます:

@Override
public void onStreamCreated(publisher, stream) {
   // The publisher started streaming.
}

ストリームの最大ビットレートの設定

公開されたストリームの最大ビットレートを設定できます。最大ビットレートを設定することで、従量制の接続から接続しているユーザーの場合、帯域幅の消費を抑えることができます。詳しくは、 本書.

パブリッシャーによるストリーミングを停止する

以下の関数を呼び出すことで、パブリッシャーによるセッションへのストリーミングを停止できます。 unpublish(PublisherKit publisher) メソッドを呼び出します:

    mSession.unpublish(mPublisher);

について PublisherKit.PublisherListener.onStreamDestroyed(PublisherKit publisher, Stream stream) メソッドが呼ばれます:

@Override
public void onStreamDestroyed(publisher, stream) {
   // The publisher stopped streaming.
}

パブリッシャーのストリームに関する統計情報の取得

パブリッシャーのオーディオおよびビデオ統計に関する定期的なレポートのコールバックメソッドを登録するには、 PublisherKit.setAudioStatsListener(listener) そして PublisherKit.setVideoStatsListener(listener) メソッド。以下のインターフェースを実装するオブジェクトを引数として渡します。 PublisherKit.AudioStatsListener そして PublisherKit.VideoStatsListener インターフェース。

の実装は、 PublisherKit.AudioStatsListener.onAudioStats(publisher, stats) そして PublisherKit.VideoStatsListener.onVideoStats(publisher, stats) これらのメソッドは、パブリッシャーのオーディオおよびビデオの統計情報を報告するために定期的に呼び出されます。各メソッドには、パブリッシャーと、統計オブジェクトの配列という2つのオブジェクトが渡されます。

低レベルのストリーム統計を取得するには PublisherKit.getRtcStatsReport() メソッドを使用します。これはメディアストリームのRTC統計レポートを提供する。

参照 クライアント観測可能性開発者ガイド をご覧ください。

パブリッシャーのストリームをテストする

テストストリームを公開し、そのオーディオとビデオの統計情報を確認することで、接続でサポートされるストリームのタイプ(高解像度やオーディオのみなど)を判断できます。

ローカルクライアントによって配信されているストリームの統計情報を取得するには、OpenTok Media Router を使用するセッションを使用する必要があります( メディアモード (ルーティング設定に設定)。その後、 SubscriberKit.setAudioStatsListener(AudioStatsListenerリスナー) そして SubscriberKit.setVideoStatsListener(VideoStatsListener listener) Subscriber オブジェクトのメソッドを使用して、公開しているストリームのオーディオおよびビデオの統計情報を取得します。詳しくは、 本題 をご覧ください。

について opentok-ネットワークテスト レポには、セッションに公開する前にテストストリームの統計情報を使用する方法を示すサンプルコードが含まれています。