在 Android 设备上启动 YouTube 直播

此 SDK 已完全弃用。此 API 不再由以下供应商提供支持或维护: YouTube。请使用 YouTube iFrame Player API

借助 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_REFERRER 必需。此参数指定一个 URI,它表示启动实时流式传输 Activity 的应用。此值必须遵循 android-app: scheme 格式以及软件包名称。该值可实现准确的归因和核算。
Intent.EXTRA_SUBJECT 可选。此参数提供直播活动的文字说明。它将作为 String 放入 intent extra 捆绑包中。该值可用于为视频流添加品牌信息(例如“Streamed live from DEVICE”)。

启动直播流程

第 1 步:检查是否有支持

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

  • canResolveMobileLiveIntent 方法可验证设备是否支持移动直播 intent。
  • validateMobileLiveIntentif-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);
}