הטמעת מודרציית וידאו אוטומטית באפליקציות מובייל
משתמש מעלה וידאו — ויש לך שניות להחליט אם להציג אותו לאחרים. בדיקה ידנית לא מתאימה לקנה מידה גדול: מודרטורים מתעייפים, מפספסים הפרות, ותור של 10 דקות פוגע בשימור משתמשים. צוות המהנדסים הניידים שלנו עם ניסיון במודרציית AI סיפק 40+ פרויקטים לפלטפורמות FinTech, EdTech ו-Social. אנו מתמחים בשילוב מודלים על-המכשיר וממשקי API בענן לסיווג אוטומטי של תוכן וידאו. למודרציית וידאו אפקטיבית באפליקציות מובייל, שילוב של סינון AI על-המכשיר עם ניתוח מבוסס ענן הוא המפתח. להלן, אנו מפרטים כיצד להימנע מטעויות נפוצות ולבנות מערכת אמינה.
היכן הבעיות נוצרות לרוב
מודרציה בזמן אמת לעומת עיבוד לאחר-מעשה
הטעות הארכיטקטונית הנפוצה ביותר היא ניסיון להריץ מודל פריים-אחר-פריים על הלקוח. CoreML באייפון 14 Pro יכול להתמודד עם MobileNet v3 ב-30 fps עבור קטעים קצרים, אבל זה הורג את הסוללה ומחמם את המכשיר. באנדרואיד, המצב דומה עם MediaPipe: עיבוד כל פריים ב-ImageAnalysis.Analyzer ברזולוציית 1080p מוביל לעומסים ב-ImageProxy ולקריסות עם java.lang.IllegalStateException: Image is already closed.
הגישה הנכונה לוידאו היא לא ניתוח פריים-אחר-פריים אלא דגימה סלקטיבית: כל N פריימים או סצנות מפתח באמצעות AVAssetImageGenerator (iOS) / MediaMetadataRetriever.getFrameAtTime() (אנדרואיד). עבור רוב משימות המודרציה, פריים אחד לשנייה מספיק.
מודרציה בצד השרת באמצעות Video Intelligence API
עבור אפליקציות וידאו מסוג UGC, אנו מתכננים את הסכמה הבאה: הלקוח מעלה וידאו לאחסון (S3/GCS), מפעיל פונקציית Cloud שקוראת ל-Google Cloud Video Intelligence עם תכונות EXPLICIT_CONTENT ו-OBJECT_TRACKING. התשובה היא JSON עם חותמות זמן וציוני ביטחון לכל קטע.
// Android: запуск загрузки и передача URI на бэкенд
val uploadRef = storageRef.child("uploads/${UUID.randomUUID()}.mp4")
uploadRef.putFile(localUri)
.addOnSuccessListener { taskSnapshot ->
taskSnapshot.storage.downloadUrl.addOnSuccessListener { downloadUri ->
moderationApi.submitVideo(downloadUri.toString(), onComplete = { result ->
when (result.verdict) {
ModerationVerdict.SAFE -> publishVideo()
ModerationVerdict.UNSAFE -> rejectWithReason(result.reason)
ModerationVerdict.REVIEW -> sendToHumanReview()
}
})
}
}AWS Rekognition Video הוא חלופה עם API דומה: // Android: запуск загрузки и передача URI на бэкенд val uploadRef = storageRef.child("uploads/${UUID.randomUUID()}.mp4") uploadRef.putFile(localUri) .addOnSuccessListener { taskSnapshot -> taskSnapshot.storage.downloadUrl.addOnSuccessListener { downloadUri -> moderationApi.submitVideo(downloadUri.toString(), onComplete = { result -> when (result.verdict) { ModerationVerdict.SAFE -> publishVideo() ModerationVerdict.UNSAFE -> rejectWithReason(result.reason) ModerationVerdict.REVIEW -> sendToHumanReview() } }) } } + שאילתות באמצעות StartContentModeration. למקרים סינכרוניים (רילס קצרים עד 30 שניות), Rekognition Image המופעל על פריימים שחולצו עובד — תגובה ב-200–400 אלפיות השנייה. עלות עיבוד דקת וידאו דרך Google Video Intelligence מתחילה מ-$0.15 לדקה.
סינון מקדים על-המכשיר
לפני שליחה לשרת, הגיוני להריץ את הפריים הראשון והאחרון של הווידאו דרך מודל CoreML/TFLite מקומי. זה תופס NSFW ברור על הלקוח, וחוסך תעבורה. NudeNet Lite בפורמט TFLite הוא בערך 14 MB ומספק דיוק של ~92% במבחני NSFW. תוצאות חיוביות שגויות על תוכן רפואי הן נושא נפרד ודורשות לוגיקת רשימת היתרים ברמת קטגוריית האפליקציה.
כיצד פועל סינון מקדים על-המכשיר
סינון מקדים על-המכשיר מוחל על פריימי מפתח שחולצו (ראשון ואחרון) באמצעות CoreML (iOS) או TFLite (אנדרואיד). המודל הוא NudeNet Lite, 14 MB, דיוק של 92% במערכי נתונים של NSFW. תוצאות חיוביות שגויות (תוכן רפואי) מטופלות על ידי לוגיקת רשימת היתרים. ניתוח על-המכשיר מהיר פי 3 מסיבוב לשרת עבור הפרות ברורות וחוסך עד 30% מתעבורה. אנו משתמשים ב-Swift Combine ב-iOS להתקדמות העלאה ראקטיבית, וב-Kotlin Coroutines עם Flow באנדרואיד לפונקציונליות דומה.
מדוע מודרציה בצד השרת עדיפה עבור UGC
מודרציה בצד השרת באמצעות ממשקי API בענן (Google Video Intelligence, AWS Rekognition) מנצחת בדיוק ובמדרגיות. מודלים על-המכשיר מוגבלים על ידי משאבי מחשוב ותומכים רק במחלקות בסיסיות (NSFW, אלימות). למודרציה מורכבת (זיהוי נשק, הפרות הקשריות), נדרש מודל בצד השרת עם הקשר רחב יותר. בפועל, אנו משלבים: פילטר מהיר על-המכשיר + ניתוח ענן עמוק למקרי גבול.
השוואת פתרונות
| פרמטר | על-המכשיר (CoreML/TFLite) | API בענן (Google/AWS) | לייב (WebRTC + MobileViT) |
|---|---|---|---|
| זמן השהיה | 100–300 אלפיות השנייה | 500–2000 אלפיות השנייה | 2–4 שניות לקטע |
| דיוק | 92% (NSFW) | 95–98% (כל המחלקות) | 90% (פשרה) |
| תעבורה | אין | העלאת וידאו | זרם רציף |
| עלות | פיתוח מודל מ-$5,000 | מ-$0.15 לדקה | גבוהה יותר עקב זמן אמת |
| מקרה שימוש | סינון מקדים | מודרציה ראשית | שידורים חיים |
תרחישים אופייניים ופתרונות מומלצים
| תרחיש | פילטר על-המכשיר | ניתוח בענן | מחסנית לייב |
|---|---|---|---|
| פיד UGC | כן (פריים ראשון/אחרון) | כן (Video Intelligence) | לא |
| סטוריז | כן (כל פריים בעת הצילום) | כן (לאחר העלאה) | לא |
| שידור חי | לא | לא | כן (WebRTC + HLS) |
| רילס קצרים (<30 שניות) | כן (כל הפריימים) | כן (Rekognition Image) | אופציונלי |
כיצד אנו בונים את הפתרון
המחסנית תלויה בדרישות זמן השהיה ובתקציב. לסטארטאפים עם תעבורה נמוכה — Google Video Intelligence API: משלמים $0.15 לדקה, אין צורך להקים תשתית. לפלטפורמות בעומס גבוה — שירות inference מותאם אישית המבוסס על CLIP או מודל ONNX מותאם מאחורי פרוקסי הפוך עם מטמון של hashes וידאו שנבדקו כבר (hash תפיסתי באמצעות pHash מונע מודרציה חוזרת של אותו קליפ).
בצד הלקוח (iOS/אנדרואיד/Flutter), אנו מיישמים:
- פס התקדמות העלאה עם
GetContentModeration/URLSession.uploadTask - מצב ממתין לוידאו בפיד ("בבדיקה")
- התראת push על תוצאה באמצעות FCM/APNs
מקרה נפרד הוא שידור חי. Video Intelligence API אינו מתאים כאן עקב זמן השהיה. אנו משתמשים בשידור באמצעות WebRTC + ניתוח בצד השרת של קטעי HLS כל 2–4 שניות עם מודל מותאם למהירות (MobileViT-S ב-TorchScript).
מה כלול בעבודה (תוצרים)?
- תיעוד החלטות ארכיטקטוניות (ADR)
- אינטגרציית SDK להעלאה ומודרציה
- מצבי UI (ממתין, מאושר, נדחה)
- בדיקות על 100+ מקרי קצה
- הדרכת מנהל צוות לניהול
- אחריות קוד ל-6 חודשים
תהליך
- ביקורת דרישות: סוג תוכן (UGC, סטוריז, לייב), עיכוב פרסום מקובל, דרישות רגולציה (GDPR, COPPA).
- בחירת מחסנית: סינון מקדים על-המכשיר + מודרציה בענן לעומת פתרון מלא בצד השרת.
- פיתוח: אינטגרציית SDK להעלאה, webhook/שאילתות לתוצאות, UI למצבים.
- בדיקות על מערך נתונים של מקרי קצה: כתוביות רב-לשוניות בפריים, תוכן רפואי, אנימציה.
הערכות זמן
אינטגרציה עם Google Video Intelligence או AWS Rekognition Video — 3–5 ימים. הוספת סינון מקדים על-המכשיר ב-CoreML/TFLite — עוד 2–3 ימים. פתרון מלא עם שידור חי ומערכת בדיקה אנושית — 3–4 שבועות.
לפרטים נוספים, אנו יכולים להכין הצעה מותאמת למחסנית ולעומס שלך. ייעוץ יכול לעזור לדון בפרטים.







