ライブストリーミングの概要
LiveStreamingAPI を使用して、接続したデバイスのカメラ映像をリアルタイムに受信します。デバイスは自身のホットスポット経由で RTSP ストリームを提供する場合と、JPEG 画像を1枚ずつ送信する場合があり、両方に対応する機種もあります。
Animated workflow
デバイスのライブストリーミング処理
デバイスが対応する配信方式を選び、デバイス側と表示側のリソースを連動させます。終了コールバックをセッション終了の確定通知として扱ってください。
利用できる機能
RTSP ライブストリーミング
デバイスの RTSP セッションを開始し、ホットスポットへ接続してストリームを再生
JPEG 画像ライブストリーミング
接続中デバイスから連続する JPEG 画像を受信・表示
ライブストリーミングを停止
実行中のデバイスライブストリーミングを停止し、表示リソースを解放
AI を活用して実装
AI で実装
AI でこのワークフローを実装
公式の「AIBuds ライブメディアの配信」スキルを使い、アプリに合わせて実装します。
https://docs-aibuds.github.io/ja/skills/stream-aibuds-live-media を読み、その指示に従ってください。このスキルで「AIBuds ライブメディアの配信」をこの iOS プロジェクトに実装し、検証してください。配信方式
| 方式 | 対応状況 | メディアの受け渡し | ホスト側での表示 |
|---|---|---|---|
| RTSP | supportsRTSPLiveStreaming | SDK がデバイスのホットスポット接続を調整し、rtsp:// アドレスを返します。 | AIBudsLiveStream または互換性のある RTSP プレーヤーを使用します。 |
| JPEG | supportsJPEGImageLiveStreaming | 画像を受信するたびに、SDK が JPEG データハンドラーを呼び出します。 | 完全な Data / NSData を画像へデコードして UI を更新します。 |
各フレームワークの役割
AIBuds.xcframeworkは、デバイス向けのLiveStreamingAPI、対応状況を示すプロパティ、セッションのコールバック、RTSPStreamParamsとの連携を提供します。AIBudsFoundation.xcframeworkは、RTSPStreamParamsを定義します。AIBudsLiveStream.xcframeworkは、任意で利用できる RTSP 再生機能と RTSP から RTMP への中継 API を提供します。デバイス側のストリームを開始しても、プレーヤーや配信処理は自動的には作成されません。
推奨事項
- 開始前に、使用する方式に対応しているかをプロパティで確認してください。
- UI の状態と途中経過の各コールバックは分けて管理します。セッション全体の状態を表すのは、開始ハンドラーと終了ハンドラーだけです。
- UIKit の更新はメインキューで実行してください。
- デバイス側のセッションを停止するときは、再生や中継に使用したリソースも停止してください。
- ホットスポットの切断や、ユーザー操作以外によるセッション終了は、正常終了ではなく復旧可能なエラーとして扱ってください。
補足
- 公開 API は、信頼できる
isLiveStreamingプロパティを提供していません。表示状態はアプリ側で管理し、各コールバックと整合させてください。 - RTSP では Wi-Fi ホットスポットを使用するため、iPhone のネットワーク経路が一時的に変わることがあります。
- JPEG 方式で得られるのは圧縮済み画像であり、デコード済みのビデオフレームではありません。
- Demo の RTMP 配信は、任意で利用する
AIBudsLiveStream.LiveStreamerの処理です。LiveStreamingAPI自体は RTMP 配信を行いません。