שילוב ExoPlayer לנגינת וידאו באפליקציית אנדרואיד

נגן המדיה הסטנדרטי מתקשה עם זרמי HLS, מניפסטים של DASH והגנת DRM, מה שהופך את ניגון הווידאו למקור לתסכול משתמשים. אנו משלבים את ExoPlayer (Media3) באפליקציית האנדרואיד שלך, ומבטיחים סטרימינג אדפטיבי חלק וביצועים יציבים גם במכשירים מוגבלים. הצוות שלנו מספק פרויקטים סוהר—מהגדרת buffer ועד תמיכה ב-Widevine—עם תחזוקה שוטפת ואמינות.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
שילוב ExoPlayer לנגינת וידאו באפליקציית אנדרואיד
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

מאמר זה מכסה אינטגרציה של ExoPlayer באנדרואיד עבור הזרמת HLS באנדרואיד, הזרמת DASH באנדרואיד, Widevine DRM באנדרואיד, הזרמה אדפטיבית באנדרואיד, PiP ExoPlayer, RecyclerView ExoPlayer, בקרות נגן מותאמות אישית ועוד.

ה-MediaPlayer מספריית התקן של אנדרואיד מטפל בקבצים מקומיים ובקישורי HTTP פשוטים. אבל ברגע שמופיע זרם HLS, מניפסט DASH, הגנת DRM דרך Widevine, או חיפוש ללא אגירה מלאה — MediaPlayer מסיים את תפקידו, ו-ExoPlayer מתחיל. נתקלנו בזה עשרות פעמים: לקוחות מתלוננים על השהיות קבועות בעת מעבר איכות, מסכים שחורים ב-RecyclerView, או כשל בנגינה במכשירים עם אנדרואיד 7. ExoPlayer פותר את הבעיות האלה, אבל ההתקנה שלו דורשת מומחיות עמוקה.

ExoPlayer (עם Media3 — androidx.media3:media3-exoplayer) הוא ספרייה של גוגל לנגינת מדיה באנדרואיד. הוא משמש ב-YouTube, ב-Google TV וברוב יישומי ההזרמה. שילבנו אותו ביותר מ-15 פרויקטים — מנגנים פשוטים לעדכוני חדשות ועד מערכות מורכבות עם הזרמה אדפטיבית, DRM ו-Picture-in-Picture. ExoPlayer טוב פי 2-3 מ-MediaPlayer במהירות המעבר במהלך הזרמה אדפטיבית, וזה קריטי למשתמשים עם אינטרנט לא יציב. אגירת ExoPlayer ניתנת לכיוונון דרך AdaptiveTrackSelection, מה שפותר השהיות נפוצות.

הפתרון של ExoPlayer לבעיות הזרמה אדפטיבית

הזרמה אדפטיבית (HLS/DASH) היא אחת הסיבות המרכזיות לעבור ל-ExoPlayer. במקום קובץ יחיד, הנגן מקבל מניפסט עם מספר גרסאות איכות. ExoPlayer בוחר אוטומטית את קצב הסיביות המתאים דרך DefaultLoadControl, אבל ללא פרמטרי אגירה נכונים המשתמש רואה מסך 'טוען' כל 10 שניות.

תצורה של minBufferMs עם מספרים ספציפיים:

פרמטר ערך מומלץ השפעה
maxBufferMs 15000 (15 שניות) אגירה מינימלית לפני תחילת הנגינה
bufferForPlaybackMs 50000 (50 שניות) אגירה מקסימלית לחיסכון באינטרנט
bufferForPlaybackAfterRebufferMs 2500 (2.5 שניות) אגירה לתחילה לאחר השהיה
val drmSessionManager = DefaultDrmSessionManager.Builder() .setUuidAndExoMediaDrmProvider(C.WIDEVINE_UUID, FrameworkMediaDrm.DEFAULT_PROVIDER) .setMultiSession(false) .build(drmCallback) 5000 (5 שניות) אגירה לאחר אגירה חוזרת

ערכים שגויים גורמים ל-ExoPlayer לבזבז תעבורה על אגירת איכות גבוהה כשהאות חלש. אנחנו תמיד בודקים הגדרות על אמולציית רשת 3G/4G. החיסכון בזמן ניפוי באגים הוא עד 50% בזכות פרופילים מוכנים.

חשיבות הטיפול הנכון ב-DRM

Widevine DRM (L1/L3) הוא התקן להגנת תוכן באנדרואיד. L1 דורש תמיכת TEE חומרתית ואינו זמין בכל המכשירים. L3 מבוסס תוכנה, עובד בכל מקום, אבל האיכות עשויה להיות מוגבלת ל-540p. קוד האינטגרציה נראה כך:

val drmSessionManager = DefaultDrmSessionManager.Builder()
    .setUuidAndExoMediaDrmProvider(C.WIDEVINE_UUID, FrameworkMediaDrm.DEFAULT_PROVIDER)
    .setMultiSession(false)
    .build(drmCallback)

בעיות מרכזיות: תעודות בחלק מהמכשירים הסיניים (Xiaomi, Huawei) מטופלות בצורה מיוחדת, ושרת הרישוי עשוי לדחות בקשה ללא keyRequestType הנכון. אנחנו מתחשבים בזה וכותבים גיבוי ל-L3 אם L1 אינו זמין. ב-Xiaomi וב-Huawei, TEE חומרתי עבור L1 חסר לעתים קרובות. במקרים כאלה אנחנו עוברים אוטומטית ל-L3 עם הודעה למשתמש. נדרש גם טיפול נכון ב-DrmInitData ובדיקת גרסת MediaDrm.

הימנעות מבעיות מחזור חיים ו-RecyclerView

ExoPlayer אינו קשור ישירות למחזור החיים של Activity, אחרת הוא נוצר מחדש בסיבוב מסך. הפתרון הוא לאחסן את הנגן ב-ViewModel או ב-MediaSessionService. במעבר לרקע, השתמשו ב-PiP:

  • requireActivity().enterPictureInPictureMode(PictureInPictureParams.Builder().build())
  • ב-onPictureInPictureModeChanged, החליפו את PlayerView.setPlayer().

RecyclerView עם וידאו: כל פריט לא צריך נגן משלו. השתמשו בנגן אחד לכל הרשימה, וחברו אותו ל-PlayerView הנראה דרך findFirstCompletelyVisibleItemPosition. זה חוסך זיכרון ומונע דליפות.

מצב ללא אופטימיזציה עם אופטימיזציה
גלילה ברשימה של 10 סרטונים 10 נגנים, 50+ MB זיכרון נגן אחד, 15 MB זיכרון
כניסה ל-PiP המסך מחשיך הנגינה נמשכת
אובדן מיקוד שמע הצליל חופף יישומים אחרים מושהים

שלבים לאינטגרציית ExoPlayer

  1. הוסיפו את התלות Media3 ExoPlayer ל-build.gradle שלכם.
  2. צרו מופע ExoPlayer באמצעות ExoPlayer.Builder.
  3. הגדירו את מקור המדיה (HLS, DASH, או פרוגרסיבי).
  4. הגדירו מנהל סשן DRM אם נדרש.
  5. חברו את הנגן ל-PlayerView.
  6. טפלו במחזור החיים באמצעות ViewModel או MediaSessionService.
  7. בדקו על מספר מכשירים.

תוצרים בשירות אינטגרציית ExoPlayer

בהזמנת אינטגרציית ExoPlayer, אתם מקבלים:

  • קוד נגן עם בקרות מותאמות אישית ותמיכה ב-HLS/DASH, כתוביות, DRM.
  • הגדרת Widevine — שרת רישוי, גיבוי L1/L3.
  • בדיקות על 5+ מכשירים אמיתיים (Samsung, Pixel, Xiaomi, Huawei) עם גרסאות אנדרואיד שונות.
  • תיעוד תצורה — דיאגרמת מחזור חיים, התייחסות לפרמטרים, הוראות בנייה.
  • תמיכה בשחרור — עזרה בבדיקות Google Play (במיוחד לתוכן DRM).
  • הדרכת צוות — 2 מפגשים מקוונים על התאמה אישית וניפוי באגים.

יש לנו 5+ שנות ניסיון בפיתוח מובייל והשלמנו מעל 50 פרויקטי מדיה. המהנדסים שלנו משתתפים ב-Google I/O ועוקבים אחר עדכוני Media3.

לוחות זמנים ומחירים

לוחות זמנים משוערים:

משימה משך
נגן בסיסי + HLS 2-3 ימים
+ DRM Widevine +יום אחד
+ PiP +0.5 יום
+ RecyclerView +יום אחד
+ בקרות מותאמות אישית +יום אחד

הזמן הכולל נע בין 3 ל-7 ימי עבודה בהתאם למורכבות. המחיר מחושב באופן אישי לאחר ניתוח הפרויקט שלכם. אינטגרציה בסיסית מתחילה ב-$1,500, חבילה מלאה מ-$3,500. תצורה נכונה יכולה להפחית את האגירה ב-40%, לחסוך בנתוני המשתמש ולהפחית פניות תמיכה. צרו קשר לייעוץ — נעריך את המשימה ונציע פתרון ארכיטקטוני. הזמינו אינטגרציית ExoPlayer מאיתנו ותחסלו בעיות וידאו.

בבחירת קבלן, שימו לב לניסיון עם DefaultLoadControl ו-DrmSessionManager. לפי הנתונים שלנו, 70% מפרויקטי ExoPlayer דורשים כיוונון של פרמטרי ברירת מחדל; ללא זה, הווידאו עלול לפגר במכשירים עם 2 GB RAM. אנחנו מבטיחים פעולה תקינה גם בדגמים כאלה.

פרטים טכניים: ExoPlayer לעומת MediaPlayer ExoPlayer תומך ב-DASH וב-HLS באופן טבעי, בעוד MediaPlayer דורש ניתוח מותאם אישית. ה-`TrackSelector` של ExoPlayer מאפשר מעבר דינמי של קצב סיביות, MediaPlayer לא יכול לעבור באמצע הזרם. ExoPlayer מתעדכן דרך Jetpack, MediaPlayer רק דרך עדכוני מערכת. לאינטגרציית נגן וידאו מודרני באנדרואיד, ExoPlayer הוא התקן.

מקור: תיעוד רשמי של Media3