在 Android 设备上启动 YouTube 直播

借助移动版 YouTube 直播深层链接,Android 应用可以直接从移动设备发起 YouTube 直播。应用只需提供一个入口点(例如用户可以点击的按钮),即可使用 Android intent 机制启动移动直播流程。

示例

此流程展示了应用深层链接到 YouTube 应用时的用户体验,用户会到达“移动直播设置”界面。

  1. 首先,用户配置直播,设置标题、隐私模式和其他直播选项。
  2. 然后,用户前往“缩略图”界面,为直播设置缩略图。
  3. 最后,用户开始直播,并播放前置或后置摄像头的画面。

移动直播设置界面 缩略图照片界面 移动直播画面

设备要求

Android 设备必须满足以下要求,才能正确支持 YouTube 直播和移动直播深层链接:

  • Android 版本:Marshmallow (API 23) 或更高版本
  • 相机:至少一个能够以至少 30Hz 的频率录制 720p 视频的相机
  • 麦克风:板载麦克风
  • 音频编码器:硬件加速音频编码器,能够以 44.1KHz 或更高的频率将 8 位 PCM 单声道音频编码为 AAC
  • 视频编码器:硬件加速视频编码器,能够以 30Hz 或更高的频率将 720P 原始视频编码为 H.264/AVC
  • 已安装 YouTube 应用:13.02 版或更高版本

移动直播 intent 规范

如需链接到移动版 YouTube 直播流程,您的 Android 应用会启动一个 Intent。该 intent 通过在 YouTube 应用中启动 Activity 来启动直播流程。

Intent 格式

移动直播 intent 使用自定义 Action 字符串来导航到 YouTube 应用中的直播创建 activity。它还指定了移动版 YouTube 应用的软件包名称。

  • 操作:“com.google.android.youtube.intent.action.CREATE_LIVE_STREAM”
  • 软件包: “com.google.android.youtube”

Intent extra

YouTube 应用设置流程会处理直播配置。以下 intent extra 用于设置与直播相关的参数:

Params
Intent.EXTRA_REFERRER 必需。此参数用于指定一个 URI,该 URI 表示启动直播 Activity 的应用。此值必须采用 android-app: scheme 格式,并包含软件包名称。该值可实现准确的归因和核算。
Intent.EXTRA_SUBJECT 可选。此参数用于提供直播的文字说明。它会以 String 的形式放置在 intent extra bundle 中。该值可用于为直播添加品牌宣传信息,例如“通过 DEVICE 进行直播”。

启动直播流程

完成以下两个步骤,以验证设备兼容性并从 Android 应用启动移动实时活动。

第 1 步:检查是否支持

您的客户端应首先确认可以启动移动直播 intent,方法是验证设备上是否安装了 YouTube 应用,以及 YouTube 应用版本是否支持直播。以下代码示例定义了两种方法来实现此目的:

  • canResolveMobileLiveIntent 方法会验证设备是否支持移动直播 intent。

  • validateMobileLiveIntent 会在 if-else 语句的上下文中调用 canResolveMobileLiveIntent 方法。

    • 如果设备支持该 intent,则设备可以启动直播流程。
    • 如果设备不支持该 intent,则设备可能会提示用户安装或升级 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)或更高版本为目标平台的应用必须在 AndroidManifest.xml 文件中声明软件包可见性要求,以便 PackageManager 可以查询 YouTube 应用:

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

第 2 步:启动直播活动

如需启动直播流程,您的客户端应用需要创建并启动一个 Intent,如以下代码示例所示:

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);
}