在 Android 设备上启动 YouTube 直播

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

示例

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

  1. 首先,用户配置直播,设置标题、隐私模式和其他直播选项。
  2. 然后,用户前往“缩略图照片”屏幕,为数据流设置缩略图图片。
  3. 最后,用户开始直播,并从前置或后置摄像头广播视图。

设备要求

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

  • Android 版本:Marshmallow(API 23)或更高版本
  • 摄像头:至少一个能够以至少 30Hz 的速率录制 720p 的摄像头
  • 麦克风:板载麦克风
  • 音频编码器:硬件加速音频编码器,能够将 8 位 PCM 单声道音频编码为 44.1KHz 或更高的 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_REFERREREXTRA_REFERRER 必需。此参数指定一个 URI,它表示启动实时流式传输 Activity 的应用。此值必须遵循 android-app: scheme 格式以及软件包名称。此值有助于准确归因和核算。
Intent.EXTRA_SUBJECT 可选。此参数提供直播的文本说明。它会作为 String 放置在 intent extra 软件包中。该值可用于为视频流添加品牌信息(例如“Streamed live from DEVICE”)。

启动直播流程

第 1 步:检查是否有支持

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

  • canResolveMobileLiveIntent 方法用于验证设备是否支持 Mobile Live 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 = 
    pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
  return resolveInfo != null && !resolveInfo.isEmpty();
}


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

第 2 步:启动直播 activity

如需启动直播流程,您的客户端应用会创建并启动 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);
}