מדריך למפתח: שילוב שכבות וידאו ב-iOS וב-Android

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

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
מדריך למפתח: שילוב שכבות וידאו ב-iOS וב-Android
בינוני
~3-5 ימים

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

שאלות נפוצות

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

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

מדריך מלא לשילוב שכבת-על של וידאו בסטרימינג למובייל

לעתים קרובות אנו נתקלים במצב שבו לקוח רוצה להציב לוגו על סטרימינג של iPhone, אך משתמש ב-UIView רגיל על גבי AVCaptureVideoPreviewLayer. התוצאה: הלוגו לא נלכד בהקלטה ואינו נראה לצופים. הבעיה היא ש-UIKit מצייר בצינור התצוגה, אך אנו צריכים לשנות את CVPixelBuffer לפני שהוא מגיע למקודד הווידאו. אנו פותרים זאת עם Metal, ומטמיעים את שכבת-העל ישירות בצינור הגרפיקה. להלן היישום הטכני עבור iOS ו-Android, עם ניתוח ביצועים ומלכודות טיפוסיות.

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

כיצד לבחור בין Metal ל-CoreImage עבור שכבת-על של וידאו בסטרימינג למובייל

עבור שכבת-על של וידאו בסטרימינג למובייל, צינור הלכידה צריך לשנות את ה-pixel buffer לפני הקידוד. שתי הגישות הן CoreImage (פשוט יותר אך איטי יותר) ו-Metal (מהיר יותר אך מורכב יותר). להלן השוואת ביצועים.

פרמטר Metal CoreImage
ביצועים <1ms לפריים (GPU) 4–6ms לפריים (CPU) ב-iPhone 12+
תמיכה באנימציה מלאה (Metal shaders) מוגבלת (CIFilter)
מורכבות היישום גבוהה בינונית
מומלץ עבור 1080p60 ללא נפילות 720p30 או אבות טיפוס

Metal מהיר פי 4–6 מ-CoreImage לעיבוד שכבת-על. עבור סטרימינג בייצור ב-1080p ו-30+ FPS, אנו משתמשים רק ב-Metal. גישה זו מפחיתה את העומס לפריים פי 5, מה שמתורגם לחיסכון בעלויות של $2,000–$4,000 בהשוואה ליישומים מבוססי CPU. שכבת-על סטטית פשוטה של לוגו עולה $3,000 ב-iOS.

כיצד פועל צינור ה-Metal עבור שכבת-על של לוגו?

אנו יוצרים MTLTexture מ-CVPixelBuffer דרך CVMetalTextureCacheCreateTextureFromImage, מציירים את שכבת-העל על גבי זה דרך render pass של Metal, והתוצאה נשארת באותו pixel buffer. קוד:

דוגמה ליישום שכבת-על ב-Swift ```swift class OverlayRenderer { private let device: MTLDevice private let commandQueue: MTLCommandQueue private var textureCache: CVMetalTextureCache? private var overlayTexture: MTLTexture?
func apply(to pixelBuffer: CVPixelBuffer) -> CVPixelBuffer {
    var cvTexture: CVMetalTexture?
    CVMetalTextureCacheCreateTextureFromImage(
        nil,
        textureCache!,
        pixelBuffer,
        nil,
        .bgra8Unorm,
        CVPixelBufferGetWidth(pixelBuffer),
        CVPixelBufferGetHeight(pixelBuffer),
        0,
        &cvTexture
    )
    guard let texture = CVMetalTextureGetTexture(cvTexture!) else {
        return pixelBuffer
    }
    let commandBuffer = commandQueue.makeCommandBuffer()!
    // render pass: основная текстура + overlayTexture поверх
    // ...
    commandBuffer.commit()
    commandBuffer.waitUntilCompleted()
    return pixelBuffer
}

}

</details>

Логотип (overlayTexture) загружаем один раз при старте сессии из PNG с альфа-каналом. Не загружайте UIImage на каждый кадр — это добавляет 2–3ms на каждый вызов.

## Как рендерить текстовые оверлеи без потери FPS?

Статический текст (название канала) — просто Metal-текстура, подготовленная через CoreText. Динамический текст (счётчик зрителей, donation-сообщения) рендерить напрямую через Metal нельзя, так как Metal не умеет рисовать текст. Решение: создаём offscreen CALayer с CATextLayer, рисуем в UIGraphicsImageRenderer, получаем UIImage, конвертируем в MTLTexture. Делаем это в фоновом потоке не чаще раза в 500ms для счётчиков и по событию для donation-сообщений.

Fade-in/fade-out для donation-текста реализуем изменением альфа-канала MTLTexture между кадрами — плавное появление за 15–20 кадров (0.5–0.7 секунды).

## Что выбрать для Android: OpenGL ES или Vulkan?

На Android аналог — SurfaceTexture + OpenGL ES 2.0. Камера рендерит в SurfaceTexture, мы накладываем оверлей через GLES20.glBlendFunc, результат уходит в MediaCodec через Surface. Vulkan мощнее, но поддерживается с Android 7+ и требует больше boilerplate. Мы рекомендуем OpenGL ES для совместимости, Vulkan — для сложных эффектов. Сравним их:

| Параметр | OpenGL ES 2.0 | Vulkan |
|----------|---------------|--------|
| Минимальная версия Android | 2.2 (API 8) | 7.0 (API 24) |
| Производительность | Достаточно для 1080p30 | Выше, но избыточно |
| Сложность реализации | Средняя | Высокая |
| Рекомендуется для | Большинства проектов | Спецэффектов |

Позиция оверлея хранится в относительных координатах (0.0–1.0 от размера кадра), что корректно работает при смене разрешения или ориентации. Для ландшафтной ротации пересчитываем overlayRect рендер-пасса автоматически.

## Процесс работы и что входит

Мы реализуем оверлеи под ключ. Этапы:
1. Анализ требований: какие оверлеи, платформы, разрешения, частоты кадров.
2. Проектирование пайплайна: выбор технологии (Metal/OpenGL ES), шаблоны рендеринга.
3. Реализация: интеграция оверлеев в существующий стриминговый движок.
4. Тестирование: проверка на реальных девайсах, измерение FPS, отсутствие дропов.
5. Деплой в App Store / Google Play и поддержка после запуска.

Что входит:
- Документация кода и архитектуры.
- Доступы к репозиторию и CI/CD.
- Обучение вашей команды работе с кодом.
- 3 месяца технической поддержки.

## Сроки и стоимость

Статический логотип + Metal-пайплайн на iOS: 1–1.5 недели. Динамический текст, анимации оверлеев, поддержка iOS + Android: 3–4 недели. Стоимость рассчитывается индивидуально после оценки проекта. Снижение затрат на разработку — до 40% по сравнению с неоптимизированными решениями. Мы имеем 10+ лет опыта в мобильной разработке и 50+ успешных проектов в стриминге. Гарантируем качество и соблюдение сроков.

Подробнее о технологии <cite>[Metal](https://developer.apple.com/documentation/metal)</cite> в официальной документации. Свяжитесь с нами для обсуждения деталей проекта. Закажите консультацию по оптимизации стримингового пайплайна — мы поможем интегрировать оверлеи без потери производительности.