メインコンテンツまでスキップ

ライブストリーミングの概要

LiveStreamingAPI を使用して、接続したデバイスのカメラ映像をリアルタイムに受信します。デバイスは自身のホットスポット経由で RTSP ストリームを提供する場合と、JPEG 画像を1枚ずつ送信する場合があり、両方に対応する機種もあります。

Animated workflow

デバイスのライブストリーミング処理

デバイスが対応する配信方式を選び、デバイス側と表示側のリソースを連動させます。終了コールバックをセッション終了の確定通知として扱ってください。

ホストアプリ

デバイスを確認

デバイスが接続済みで利用可能な状態にあり、LiveStreamingAPI に準拠していることを確認します。

ホストアプリ

配信方式を選択

方式を選ぶ前に、RTSP と JPEG の対応状況を示すプロパティを確認します。

AIBuds

セッションを開始

選択した方式でライブストリーミングを要求し、開始処理のコールバックを監視します。

デバイス + SDK

入力を準備

RTSP ではデバイスのホットスポットを設定して接続し、JPEG では画像データの受信を待ちます。

デバイス → アプリ

メディアを受信

RTSP アドレス、または完全な JPEG 画像を受け取ります。

ライブ映像
ホストアプリ

映像を表示

AIBudsLiveStream で RTSP を再生するか、JPEG データを画像にデコードして表示します。

ホストアプリ → デバイス

セッションを停止

デバイス側のセッションと、再生・表示に使用したリソースをまとめて停止します。

終了コールバック

終了を処理

ユーザーによる停止と中断を区別し、ローカル状態を消去します。

RTSP と JPEG は選択式の入力方式です。同時に開始できるデバイス側のライブストリーミングセッションは1つだけです。

利用できる機能

AI を活用して実装

AI で実装

AI でこのワークフローを実装

公式の「AIBuds ライブメディアの配信」スキルを使い、アプリに合わせて実装します。

https://docs-aibuds.github.io/ja/skills/stream-aibuds-live-media を読み、その指示に従ってください。このスキルで「AIBuds ライブメディアの配信」をこの iOS プロジェクトに実装し、検証してください。
公式スキルを見る

配信方式

方式対応状況メディアの受け渡しホスト側での表示
RTSPsupportsRTSPLiveStreamingSDK がデバイスのホットスポット接続を調整し、rtsp:// アドレスを返します。AIBudsLiveStream または互換性のある RTSP プレーヤーを使用します。
JPEGsupportsJPEGImageLiveStreaming画像を受信するたびに、SDK が JPEG データハンドラーを呼び出します。完全な Data / NSData を画像へデコードして UI を更新します。

各フレームワークの役割

  • AIBuds.xcframework は、デバイス向けの LiveStreamingAPI、対応状況を示すプロパティ、セッションのコールバック、RTSPStreamParams との連携を提供します。
  • AIBudsFoundation.xcframework は、RTSPStreamParams を定義します。
  • AIBudsLiveStream.xcframework は、任意で利用できる RTSP 再生機能と RTSP から RTMP への中継 API を提供します。デバイス側のストリームを開始しても、プレーヤーや配信処理は自動的には作成されません。

推奨事項

  1. 開始前に、使用する方式に対応しているかをプロパティで確認してください。
  2. UI の状態と途中経過の各コールバックは分けて管理します。セッション全体の状態を表すのは、開始ハンドラーと終了ハンドラーだけです。
  3. UIKit の更新はメインキューで実行してください。
  4. デバイス側のセッションを停止するときは、再生や中継に使用したリソースも停止してください。
  5. ホットスポットの切断や、ユーザー操作以外によるセッション終了は、正常終了ではなく復旧可能なエラーとして扱ってください。

補足

  • 公開 API は、信頼できる isLiveStreaming プロパティを提供していません。表示状態はアプリ側で管理し、各コールバックと整合させてください。
  • RTSP では Wi-Fi ホットスポットを使用するため、iPhone のネットワーク経路が一時的に変わることがあります。
  • JPEG 方式で得られるのは圧縮済み画像であり、デコード済みのビデオフレームではありません。
  • Demo の RTMP 配信は、任意で利用する AIBudsLiveStream.LiveStreamer の処理です。LiveStreamingAPI 自体は RTMP 配信を行いません。