Android デバイスでの YouTube ライブ配信の開始

YouTube モバイルライブのディープリンクを使用すると、Android アプリからモバイル デバイスで直接 YouTube ライブ配信を開始できます。アプリは、Android インテント メカニズムを使用して Mobile Live フローを開始する、ユーザーがクリックできるボタンなどのエントリ ポイントを提供するだけで済みます。

例

このフローは、YouTube アプリにディープリンクするアプリのユーザー エクスペリエンスを示しています。ユーザーはモバイル ライブ配信の設定画面に移動します。

  1. まず、ユーザーがタイトル、プライバシー モード、その他のストリーム オプションを設定して、ストリームを構成します。
  2. 次に、ユーザーは [サムネイル写真] 画面に移動して、ストリームのサムネイル画像を設定します。
  3. 最後に、ユーザーがライブ配信を開始し、前面カメラまたは背面カメラからの映像をブロードキャストします。

モバイルライブ配信の設定画面 サムネイル写真の画面 モバイル ライブ配信のブロードキャスト画面

デバイスの要件

Android デバイスが YouTube ライブ配信とモバイルライブ ディープリンクを適切にサポートするには、次の要件を満たす必要があります。

  • Android リリース: Marshmallow(API 23)以降
  • カメラ: 720p、30 Hz 以上で録画できるカメラが 1 台以上
  • マイク: オンボード マイク
  • オーディオ エンコーダ: 8 ビット PCM モノラル音声を 44.1KHz 以上で AAC にエンコードできるハードウェア アクセラレーション オーディオ エンコーダ
  • 動画エンコーダ: 720P の未加工動画を 30 Hz 以上で H.264/AVC にエンコードできるハードウェア アクセラレーション動画エンコーダ
  • YouTube アプリがインストールされている: バージョン 13.02 以降

モバイルの Live Intent の仕様

YouTube モバイル ライブ配信フローにリンクするには、Android アプリで Intent を起動します。このインテントは、YouTube アプリでアクティビティを開始して、ライブ配信プロセスを開始します。

インテント形式

モバイルライブ インテントは、カスタムの Action 文字列を使用して、YouTube アプリ内のライブ作成アクティビティに移動します。また、YouTube モバイルアプリのパッケージ名も指定します。

インテント エクストラ

YouTube アプリのセットアップ フローでストリームの設定を行います。次のインテント エクストラは、ライブ配信に関連付けられたパラメータを設定します。

パラメータ
Intent.EXTRA_REFERRER 必須。このパラメータは、ライブ ストリーミング Activity を起動するアプリを表す URI を指定します。この値は、パッケージ名を含む android-app: scheme 形式にする必要があります。この値により、正確なアトリビューションとアカウンティングが可能になります。
Intent.EXTRA_SUBJECT (省略可)このパラメータは、ライブ配信のテキストによる説明を提供します。これは、String としてインテント エクストラ バンドルに配置されます。この値は、「DEVICE からライブ配信中」などのブランド メッセージをストリームに付加するために使用できます。

ライブ配信フローの開始

次の 2 つの手順を完了して、デバイスの互換性を確認し、Android アプリからモバイル ライブ アクティビティを開始します。

ステップ 1: サポートを確認する

クライアントは、まず、YouTube アプリがデバイスにインストールされていること、および YouTube アプリのバージョンがライブ配信をサポートしていることを確認して、モバイル ライブ インテントを起動できることを確認する必要があります。次のコードサンプルでは、これを行う 2 つのメソッドを定義しています。

  • canResolveMobileLiveIntent メソッドは、デバイスが Mobile Live Intent をサポートしていることを確認します。

  • validateMobileLiveIntent は、if-else ステートメントのコンテキストで canResolveMobileLiveIntent メソッドを呼び出します。

    • デバイスがインテントをサポートしている場合、デバイスはライブ配信フローを起動できます。
    • デバイスがインテントをサポートしていない場合、デバイスは YouTube アプリのインストールまたはアップグレードをユーザーに求めることができます。
private boolean canResolveMobileLiveIntent(Context context) {
  Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM")
    .setPackage("com.google.android.youtube");
  PackageManager pm = context.getPackageManager();
  List<ResolveInfo> resolveInfo =
    pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
  return resolveInfo != null && !resolveInfo.isEmpty();
}


private void validateMobileLiveIntent(Context context) {
  if (canResolveMobileLiveIntent(context)) {
    // Launch the livestream Activity
  } else {
    // Prompt user to install or upgrade the YouTube app
  }
}

Android 11(API レベル 30)以降をターゲットとするアプリは、PackageManager が YouTube アプリをクエリできるように、AndroidManifest.xml ファイルでパッケージの公開設定要件を宣言する必要があります。

<queries>
  <package android:name="com.google.android.youtube" />
  <intent>
    <action android:name="com.google.android.youtube.intent.action.CREATE_LIVE_STREAM" />
  </intent>
</queries>

ステップ 2: ライブ配信アクティビティを開始する

ライブ ストリーミング フローを開始するには、次のコードサンプルに示すように、クライアント アプリでインテントを作成して起動します。

private Intent createMobileLiveIntent(Context context, String description) {
  Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM")
      .setPackage("com.google.android.youtube");
  Uri referrer = new Uri.Builder()
      .scheme("android-app")
      .appendPath(context.getPackageName())
      .build();

  intent.putExtra(Intent.EXTRA_REFERRER, referrer);
  if (!TextUtils.isEmpty(description)) {
    intent.putExtra(Intent.EXTRA_SUBJECT, description);
  }
  return intent;
}


private void startMobileLive(Context context) {
  Intent mobileLiveIntent = createMobileLiveIntent(context, "Streaming via ...");
  startActivity(mobileLiveIntent);
}