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

קישור העומק של YouTube Mobile Live מאפשר לאפליקציות ל-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 ומעלה

מפרט של כוונת צפייה בשידור חי בנייד

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

פורמט הכוונה

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

  • פעולה: 'com.google.android.youtube.intent.action.CREATE_LIVE_STREAM'
  • Package: "com.google.android.youtube"‎

Intent extras

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

פרמטרים
Intent.EXTRA_REFERRER נדרש. הפרמטר הזה מציין URI שמייצג את האפליקציה שמפעילה את הפעילות של השידור החי. הערך הזה צריך להיות בפורמט android-app: scheme עם שם חבילה. הערך מאפשר שיוך ודיווח מדויקים.
Intent.EXTRA_SUBJECT אופציונלי. הפרמטר הזה מספק תיאור טקסט של השידור החי. הוא ממוקם בחבילת התוספים של Intent כ-String. אפשר להשתמש בערך הזה כדי להוסיף לשידור הערה עם שם המותג, כמו 'שידור חי ממכשיר'.

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

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

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

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

באפליקציות שמטרגטות ל-Android 11 (רמת API 30) ומעלה, צריך להצהיר על הדרישות של חשיפת החבילה בקובץ AndroidManifest.xml כדי ש-PackageManager יוכל לשלוח שאילתה לאפליקציית YouTube:

<queries>
  <package android:name="com.google.android.youtube" />
  <intent>
    <action android:name="com.google.android.youtube.intent.action.CREATE_LIVE_STREAM" />
  </intent>
</queries>

שלב 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);
}