ストリームの公開 — iOS
一旦 セッションに接続この場合、セッションに接続している他のクライアントが閲覧できるストリームを公開することができる。
このトピックには以下のセクションが含まれます:
- OTPublisherオブジェクトの初期化
- 公開機能の確認
- カメラへのアクセス確認
- ストリームの公開
- ストリームの最大ビットレートの設定
- パブリッシャーによるストリーミングを停止する
- パブリッシャーのストリームに関する統計情報の取得
- パブリッシャーのストリームをテストする
OTPublisherオブジェクトの初期化
について OTPublisher このオブジェクトは、OpenTokセッションで使用するために、デバイスのマイクやカメラからの音声・映像ストリームを取得するために使用されます。この view プロパティには、公開する動画のビューが含まれます:
OTPublisher publisher = [[OTPublisher alloc]
initWithDelegate:self
settings:[[OTPublisherSettings alloc] init]];
[self.view addSubview:publisher.view];
[publisher.view setFrame:CGRectMake(0, 0, 200, 150)];
デリゲートオブジェクトとして指定したオブジェクトに OTPublisherDelegate プロトコルのメソッドを実装します。これらのメソッドは、パブリッシャー関連のイベントが発生したときに呼び出されます。
パブリッシャー・オブジェクトを [OTSession publish:error] ストリームをセッションに公開する方法。詳しくは ストリームの公開.
OTPublisherSettings オブジェクトの他のプロパティを設定することで、パブリッシャー のカスタム設定を定義することができます:
OTPublisherSettings *_publisherSettings = [[OTPublisherSettings alloc] init];
_publisherSettings.name = @"Bob's video";
_publisherSettings.audioTrack = NO;
_publisherSettings.videoTrack = YES;
_publisherSettings.cameraResolution = OTCameraCaptureResolutionHigh;
_publisherSettings.cameraFrameRate = OTCameraCaptureFrameRate30FPS;
_publisher = [[OTPublisher alloc]
initWithDelegate:self
settings:_publisherSettings];
なお、OpenTok Media Router を使用するセッション( メディアモード ルーティングに設定されている場合)、フレームレートを下げると、ストリームが使用する帯域幅が比例して減少する。ただし、メディアモードが中継に設定されているセッショ ンでは、フレームレートを下げてもストリームの帯域幅は減少しない。
カスタムビデオキャプチャを使用して、カスタマイズしたビデオソースでストリームを公開できます。 カスタムビデオキャプチャーの使用.カスタムビデオキャプチャを使用して、画面共有ストリームを公開することもできます。 スクリーン共有.
また、公開ストリームにカスタマイズしたオーディオソースを使用することもできます。 カスタムオーディオドライバの使用.
ストリームの最大ビットレートの設定
公開されたストリームの最大ビットレートを設定できます。最大ビットレートを設定することで、従量制の接続から接続しているユーザーの場合、帯域幅の消費を抑えることができます。詳しくは、 本書.
クライアントに公開機能があるかどうかを確認する
セッションに接続したら、クライアントが公開できるかどうかを確認できます。の値を確認してください。 [OTSession.capablilites.canPublish:] プロパティにこれが YESクライアントはパブリッシュできる:
if (session.capabilities.canPublish) {
// The client can publish.
} else {
// The client cannot publish.
// You may want to notify the user.
}
公開するには、クライアントは公開をサポートするロールが割り当てられたトークンでセッションに接続する必要があります。詳細は トークン作成の概要.
カメラへのアクセス確認
公開前に、アプリがカメラにアクセスできる権限が設定されているかを確認することをお勧めします。アクセスが拒否された場合は、エンドユーザーに対してアプリのアクセス権限の設定方法について案内してください。(エンドユーザーは、iOSの「設定」>「プライバシー」>「カメラ」からカメラへのアクセスを有効にできます。)
カメラへのアクセスを要求するアプリがある場合、エンドユーザーにはカメラへのアクセスを許可するよう促すメッセージが表示されます。このメッセージが表示されるタイミングは、以下を呼び出すことで制御できます。 [AVCaptureDevice requestAccessForMediaType:completionHandler:] と AVMediaTypeVideoこれは、最初の実行時にプロンプトを表示する。それ以降の呼び出しでは、ユーザーが保存したプリファレンスで完了ハンドラが実行される。
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if(granted){
// Access to the camera is granted. You can publish.
} else {
// Access to the camera is not granted.
}
}];
ストリームの公開
Publisher オブジェクトを作成したら(参照: OTPublisherオブジェクトの初期化)、それを [OTSession publish:error] メソッドを使用して、ストリームをセッションに公開します:
OTError* error = nil;
[session publish:publisher error:&error];
if (error) {
NSLog(@"publishing failed with error: (%@)", error);
}
このコードでは session がSessionオブジェクトであること、そしてクライアントがそのセッションに接続していること。詳細は セッションへの参加.
について [OTPublisherDelegate publisher:streamCreated:] メッセージはパブリッシャーがセッションへのストリーミングを開始するときに送られる。
パブリッシャーによるストリーミングを停止する
以下の関数を呼び出すことで、パブリッシャーによるセッションへのストリーミングを停止できます。 [OTSession unpublish:error:] メソッドを呼び出す:
OTError* error = nil;
[session unpublish:publisher error:&error];
if (error) {
NSLog(@"publishing failed with error: (%@)", error);
}
について [OTPublisherDelegate publisher:streamDestroyed:] メッセージが送られます。このメッセージが送られたら、パブリッシャーのビューをスーパー ビューから削除してください:
[publisher.view removeFromSuperview:];
パブリッシャーのストリームに関する統計情報の取得
を設定する。 networkStatsDelegate プロパティ OTPublisherKit あるオブジェクトが OTPublisherKitNetworkStatsDelegate プロトコル。このプロトコルには、 [OTPublisherKitNetworkStatsDelegate publisher: audioNetworkStatsUpdated:] メッセージと、ある [OTPublisherKitNetworkStatsDelegate publisher: videoNetworkStatsUpdated:] メッセージ。これらは、パブリッシャーの音声および動画の品質に関する統計情報を報告するために定期的に送信されます。
低レベルのピア接続統計情報を取得するには、 [OTPublisherKit getRtcStatsReport:] メソッドを使用します。これはメディアストリームのRTC統計レポートを提供する。
参照 クライアント観測可能性開発者ガイド をご覧ください。
パブリッシャーのストリームをテストする
テストストリームを公開し、そのオーディオとビデオの統計情報を確認することで、接続でサポートされるストリームのタイプ(高解像度やオーディオのみなど)を判断できます。
ローカルクライアントによって配信されているストリームの統計情報を取得するには、OpenTok Media Router を使用するセッションを使用する必要があります( メディアモード (ルーティング設定に設定)。その後、 networkStatsDelegate OTSubscriberKit オブジェクトのこのメソッドを使用して、公開しているストリームのオーディオおよびビデオの統計情報を取得します。詳しくは、 本題 をご覧ください。
について opentok-ネットワークテスト レポには、セッションに公開する前にテストストリームの統計情報を使用する方法を示すサンプルコードが含まれています。