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

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

דוגמה

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

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

דרישות מכשיר

כדי שתהיה תמיכה ראויה בסטרימינג בשידור חי ב-YouTube ובקישור העומק של 'YouTube בשידור חי', מכשירי Android צריכים לעמוד בדרישות הבאות:

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

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

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

פורמט הכוונה

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

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

תוספות כוונה

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

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

הפעלת תהליך השידור החי

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

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

  • השיטה canResolveMobileLiveIntent מאמתת שהמכשיר תומך ב-Mobile Live Intent.
  • ה-validateMobileLiveIntent קורא ל-method‏ 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: מפעילים את הפעילות של השידור החי

כדי להתחיל את תהליך השידור החי, אפליקציית הלקוח יוצרת כוונה ומפעילה אותה, כפי שמתואר בדוגמת הקוד הבאה:

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);
}