הפעלת סטרימינג בשידור חי ב-YouTube במכשירי Android

ערכת ה-SDK הזו הוצאה משימוש באופן מלא. YouTube ו-YouTube כבר לא תומך בו או מתחזק אותו. במקומה צריך להשתמש ב-YouTube IFrame Player API.

קישור העומק של YouTube Mobile מאפשר לאפליקציות ל-Android להפעיל סטרימינג בשידור חי ב-YouTube ישירות ממכשיר נייד. אפליקציה צריכה לספק רק נקודת כניסה, כמו לחצן שהמשתמש יכול ללחוץ עליו, כדי להתחיל את התהליך הפעיל בנייד באמצעות מנגנון Intent של Android.

דוגמה

תהליך זה מציג את חוויית המשתמש באפליקציה שמובילה קישורי עומק לאפליקציית YouTube, שבה המשתמש נוחת במסך 'הגדרת סטרימינג בשידור חי' בנייד.

  1. קודם כל, המשתמש מגדיר את השידור, מגדיר את הכותרת, את מצב הפרטיות ואפשרויות סטרימינג אחרות.
  2. לאחר מכן, המשתמש עובר למסך 'תמונה ממוזערת' כדי להגדיר תמונה ממוזערת לתמונה של השידור.
  3. לבסוף, המשתמש מתחיל את השידור החי ומשדר את התצוגה מהמצלמה הקדמית או האחורית.

דרישות לגבי מכשירים

מכשירי Android חייבים לעמוד בדרישות הבאות כדי לתמוך כראוי בשידור חי ב-YouTube ובקישור העומק לנייד בשידור חי:

  • גרסת Android: Marshmallow (API 23) ואילך
  • מצלמה: מצלמה אחת לפחות עם רזולוציה של 720p לפחות, ב-30Hz לפחות.
  • מיקרופון: גישה למיקרופון
  • מקודד אודיו: מקודד אודיו עם שיפור מהירות בחומרה עם יכולת קידוד אודיו מונו ב-PCM של 8 סיביות ל-AAC ב-44.1KHz ומעלה
  • מקודד וידאו: מקודד וידאו עם שיפור מהירות באמצעות חומרה עם קידוד וידאו 720P ל-H.264/AVC ב-30Hz או יותר
  • אפליקציית YouTube מותקנת: גרסה 13.02 ואילך

מפרט Intent בשידור חי לנייד

כדי לקשר לשידור החי ב-YouTube לנייד, האפליקציה ל-Android משיקה כוונת רכישה. Intent מפעיל את תהליך הסטרימינג בשידור חי על ידי הפעלת פעילות באפליקציית YouTube.

פורמט Intent

התכונה 'Live Live Intent' משתמשת במחרוזת Action מותאמת אישית כדי לנווט אל פעילות היצירה בזמן אמת באפליקציית YouTube. היא גם מציינת את שם החבילה עבור אפליקציית YouTube לנייד.

  • פעולה: "com.google.android.youtube.intent.action.CREATE_LIVE_STREAM"
  • חבילה: "com.google.android.youtube"

תוספות כוונה

תהליך ההגדרה של אפליקציית YouTube מטפל בהגדרה של מקור הנתונים. המנגנונים הבאים של Intent מגדירים פרמטרים המשויכים לשידור החי:

פרמטרים
כוונת רכישה.ADDITIONAL_REFERRER Required. הפרמטר הזה מציין את ה-URI שמייצג את האפליקציה שמפעילה את פעילות הסטרימינג בשידור חי. הערך הזה חייב להיות בפורמט android-app: scheme עם שם החבילה. הערך מאפשר שיוך (Attribution) וחשבונאות מדויקים.
כוונת רכישה.ADDITIONAL_SUBJECT Optional. הפרמטר הזה מספק תיאור טקסט של השידור החי. הוא נמצא בחבילה של Intents כמחרוזת. אפשר להשתמש בערך הזה כדי להוסיף הערות בסטרימינג עם הודעה ממותגת, למשל 'שידור חי מ-DEVICE'.

הפעלת הסטרימינג בשידור חי

שלב 1: בודקים אם יש תמיכה

הלקוח שלכם צריך קודם לוודא שניתן להפעיל את התכונה 'Intent בשידור חי לנייד' על ידי בדיקה שאפליקציית YouTube מותקנת במכשיר ושגרסת האפליקציה של YouTube תומכת בסטרימינג בשידור חי. דוגמת הקוד הבאה מגדירה שתי שיטות לעשות זאת:

  • השיטה canResolveMobileLiveIntent מאמתת שהמכשיר תומך ב-Intent בשידור חי לנייד.
  • validateMobileLiveIntent קוראת לשיטה canResolveMobileLiveIntent בהקשר של הצהרה if-else.
    • אם המכשיר תומך ב-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);
}