在 Android 设备上启动 YouTube 直播

此 SDK 已完全废弃。YouTube 不再支持或不再维护该视频。请改用 YouTube iframe API

借助 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 格式

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

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

intent extra

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

参数
意向。EXTRA_REFERRER 强制要求。此参数用于指定代表启动直播活动的应用的 URI。此值必须遵循 android-app: scheme 格式和软件包名称。该值可实现准确的归因和核算。
Intent.EXTRA_SUBJECT 可选。此参数用于提供直播的文字说明。它以 String 的形式位于 intent extra 包中。该值可用于为直播添加品牌信息注释,例如“从设备直播”。

启动直播流程

第 1 步:查看支持服务

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

  • 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 = 
    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 步:启动直播活动

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