借助 YouTube 移动直播深层链接,Android 应用可以直接从移动设备启动 YouTube 直播。应用只需提供一个入口点(例如用户可以点击的按钮),通过 Android intent 机制启动移动直播流程即可。
示例
此流程展示了深层链接到 YouTube 应用的应用的用户体验,用户会进入“移动直播设置”界面。
- 首先,用户配置直播,设置标题、隐私模式和其他直播选项。
- 然后,用户前往“缩略图照片”屏幕,为数据流设置缩略图图片。
- 最后,用户开始直播,并从前置或后置摄像头广播视图。
设备要求
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 移动应用的软件包名称。
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(); ListresolveInfo = 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); }