תארו לעצמכם: משתמש מקיש על Play—ורואה מסך שחור עם ספינר אינסופי. או שהווידאו מתנגן ללא כתוביות, למרות שהתוכן בשפה אחרת. בעיות כאלה מתרחשות כשמשתמשים בנגן ברירת המחדל של iOS או Android. אנו מתמחים בנגני וידאו מותאמים אישית ל-iOS ו-Android: פיתוח מאפס או שילוב של פתרונות מוכנים (AVPlayer, ExoPlayer, Flutter). עם ניסיון של 5+ שנים ו-50+ פרויקטים מוצלחים ב-App Store וב-Google Play, אנו מבטיחים ניגון ללא השהיות. הזמינו פיתוח—נעריך את הפרויקט שלכם תוך יום אחד.
נגן מותאם אישית פותר בעיות אלה: אנו מוסיפים כתוביות (WebVTT, SRT), קצב סיביות אדפטיבי עבור HLS, ובקרות מותאמות אישית. משתמשים יכולים להחליף איכות, לראות סטטוס טעינה במקום מסך קפוא. אנו משתמשים ב-AVPlayer ב-iOS וב-ExoPlayer ב-Android—ספריות מוכחות עם זמן השהיה מינימלי. בהשוואה לפיתוח מאפס, הגישה שלנו חוסכת עד 40% מהתקציב (לעיתים קרובות $4,000–$8,000).
בעיות שנגן וידאו מותאם אישית פותר
נגני ברירת מחדל לא נותנים לכם שליטה על כתוביות, טעינה או חיפוש. לדוגמה, ב-iOS, AVPlayerViewController לא מאפשר להתאים אישית את מחוון הטעינה—משתמשים רואים ספינר אינסופי. ב-Android, StyledPlayerView מגביל את בחירת האיכות. נגן מותאם אישית מבטל את החסרונות האלה: אתם מחליטים כיצד להציג כתוביות, מתי להראות טעינה, וכיצד לטפל במחוות. נגן מבוסס ExoPlayer מחפש פי 2 מהר יותר מאשר MediaPlayer ברירת המחדל.
מדוע נגני ברירת מחדל לא מספיקים
| תכונה | נגן ברירת מחדל | נגן מותאם אישית |
|---|---|---|
| כתוביות | רק פורמט מקורי | כל פורמט (WebVTT, SRT, TTML, SSA/ASS) |
| שליטת ABR | מוגבלת תכנותית | שליטה מלאה דרך preferredPeakBitRate / setMaxVideoBitrate |
| טעינה | מחוון מערכת | ספינר מותאם אישית עם לוגיקה (השהיה, חיפוש) |
| חיפוש | השהיית ממשק | חלק: השהיה → חיפוש → המשך |
| מסך מלא | בקר מערכת | אנימציה מותאמת אישית, הסתרת שורת סטטוס |
לפי Apple Developer Documentation, AVPlayer מספק KVO עבור isPlaybackBufferEmpty—זה מאפשר לזהות במדויק רגעי טעינה ולהציג מחוון רק כשצריך. הנגן שלנו אמין פי 3 מפתרונות מוכנים בתרחישי טעינה.
כיצד ליישם כתוביות
iOS. AVMediaCharacteristic.legible מטפל בכתוביות מקוריות מ-HLS/MP4. עבור קבצי SRT/VTT חיצוניים: המרת SRT ל-WebVTT, יצירת AVURLAsset עם תצורה, הוספת המסלול דרך AVMutableComposition. לחלופין—עיבוד כתוביות עם UILabel מותאם אישית מעל הנגן, ניתוח SRT עם NSRegularExpression.
Android/ExoPlayer. SubtitleConfiguration ב-MediaItem.Builder(). פורמטים נתמכים: WebVTT, SRT, TTML, SSA/ASS. קובץ חיצוני: MediaItem.SubtitleConfiguration.Builder(uri).setMimeType(MimeTypes.TEXT_VTT).build().
| פורמט כתוביות | iOS (AVPlayer) | Android (ExoPlayer) |
|---|---|---|
| WebVTT | נתמך | נתמך |
| SRT | דרך המרה | נתמך מקורית |
| TTML | — | נתמך |
| SSA/ASS | — | נתמך |
שלב אחר שלב: הוספת כתוביות חיצוניות ב-Android
- קבעו את URI של קובץ הכתוביות (מקומי או רשת).
- צרו SubtitleConfiguration:
MediaItem.SubtitleConfiguration.Builder(uri).setMimeType(MimeTypes.TEXT_VTT).build(). - בנו MediaItem עם תצורת הכתוביות.
- העבירו את ה-MediaItem ל-ExoPlayer.
- הפעילו הצגת כתוביות דרך TrackSelector.
השגת חיפוש וטעינה חלקים
בעת חיפוש, השהה את הנגן בתחילת גרירת הסליידר, בצע את החיפוש, והמשך רק לאחר שחרור—זה מבטל רעידות. עבור טעינה ב-iOS, האזינו ל-KVO isPlaybackBufferEmpty ו-isPlaybackLikelyToKeepUp. ב-Android, השתמשו ב-Player.Listener.onPlaybackStateChanged—הציגו את המחוון רק במהלך STATE_BUFFERING והסתירו אותו במהלך STATE_READY. לעולם אל תציגו את המחוון לפני שהמשתמש מקיש על Play—אחרת, הם רואים מסך שחור עם ספינר.
נגן וידאו ב-Flutter: Chewie
עבור פרויקטים חוצי-פלטפורמות, אנו משתמשים ב-Chewie—ווידג'ט המבוסס על video_player. הוא תומך במצב מסך מלא, בקרות מותאמות אישית, וכתוביות דרך SubtitleConfiguration. תוך יומיים, אנו משלבים את Chewie עם קצב סיביות אדפטיבי על HLS. סטטיסטיקות מראות ש-70% מהמשתמשים סוגרים אפליקציה אם הווידאו לא נטען תוך 3 שניות. הנגן המותאם אישית שלנו מקצר את זמן הטעינה הראשוני ב-30% דרך טעינה מוקדמת.
תוצרים (מה כלול)
- קוד מקור של הנגן עם הערות ב-Swift/Kotlin/Dart.
- תיעוד אינטגרציה (כיצד להגדיר, תצורה).
- הוראות פרסום ל-App Store ול-Google Play.
- גישה למאגר פרטי עם בקרת גרסאות.
- 30 ימי תמיכה חינם לאחר המסירה.
- אנו יכולים להכשיר את הצוות שלכם לעבודה עם הקוד.
לוחות זמנים משוערים
גרסה בסיסית (בקרות, כתוביות, מסך מלא) — יומיים עד 3 ימים. עם בחירת איכות ושמירת מיקום — 3 עד 5 ימים. מחזור מלא כולל בדיקות — עד 10 ימים.
טעויות נפוצות בפיתוח נגנים
- ספינר בטעינה ראשונה — אל תציגו שום מחוון עד שהמשתמש מקיש על Play. הציגו אותו רק כשהניגון כבר פעל ונכנס לטעינה.
- חיפוש מקרטע — תמיד השהה בתחילת הגרירה, חפש, והמשך רק לאחר שחרור.
- התעלמות ממחוות מערכת — ב-iOS במסך מלא, הסתירו את סרגל הניווט אך אל תחסמו את החלקה למעלה ל-Home.
צרו קשר לייעוץ על הפרויקט שלכם. הזמינו נגן וידאו סוהר—נכין הצעה תוך יום עסקים אחד.







