
Главное
• Выбирайте протокол раньше вендора. HLS/CMAF — для записанных лекций и больших аудиторий, LL-HLS или CMAF-LL — для живых занятий с преподавателем (задержка 2–5 с), WebRTC — только когда нужна двусторонняя интерактивность с задержкой меньше 500 мс.
• На большом масштабе исходящий трафик — это 90 % счёта. Платформа на 1 000 студентов, которая отдаёт 10 часов видео в месяц в 720p, сжигает около 14,7 ТБ; этот же трафик на CloudFront обойдётся примерно в 97 тыс. ₽/мес, а на Bunny Stream — около 12 тыс. ₽/мес.
• Заложите полноценную ABR-лестницу с первого дня. Четыре ступени (360p / 480p / 720p / 1080p) покрывают 95 % студенческих сетей и удерживают долю ребуферизации ниже порога QoE в 1 %.
• Сначала защита подписанными URL, а DRM — только когда это окупается. JWT + HMAC-подписи на стороне CDN останавливают 99 % бытовых утечек; мульти-DRM CENC (Widevine + FairPlay + PlayReady) оправдан только для платных премиальных потоков.
• Измеряйте QoE, а не только просмотры. Время старта, доля ребуферизации, доля завершения и точки повторных просмотров покажут, работает ли инженерия и где «проседает» учебная программа.
Большинство владельцев e-learning-продуктов с первого раза реализуют видео неправильно. Они кладут MP4 в S3, встраивают его через <video src="…"> и при 500 одновременных студентах обнаруживают, что счёт уходит в семизначные суммы рублей, видео постоянно буферизуется, а курс никто не заканчивает. Этот гайд — короткая дорога мимо этих граблей. Он проводит вас по каждому решению, которое реально влияет на результат, когда вы реализуете видеостриминг в e-learning-приложении в 2026 году: от выбора протокола и адаптивной битрейтной лестницы до экономики CDN, DRM, плеера, интерактивных функций виртуального класса, аналитики и реальной стоимости одного студенто-часа.
Аудитория — CTO, продуктовые лиды, основатели и инженерные руководители, которые решили, что собственное видео — это конкурентное преимущество, и хотят честно поговорить про build vs buy на реальных цифрах. Всё ниже выстроено в порядке принятия решений: выбираете протокол, кодируете под лестницу, упаковываете и доставляете, защищаете контент, собираете плеер, добавляете функции виртуального класса, накатываете телеметрию QoE — и только потом считаете экономику платформы.
Почему Фора Софт написала этот гайд
Фора Софт уже 21 год выпускает видео- и аудиопродукты — 625+ завершённых проектов, из них 60 % связаны со стримингом и видео в реальном времени. Мы построили BrainCert — виртуальный класс на WebRTC + HTML5, который обслуживает больше миллиона учеников и приносит 750 млн ₽ годовой выручки. Мы построили Instaclass — обходящий корпоративные файрволы WebRTC-класс, развёрнутый в школах ОАЭ и ЮАР. Мы построили Scholarly — отмеченную AWS EdTech-платформу для адаптивного обучения с ИИ. Мы знаем, где лежат ловушки по стоимости, обрывы QoE и комплаенс-мины, потому что уже прошли каждую из них на клиентских проектах.
Этот гайд сводит то, что мы узнали на этих проектах, плюс свежие исследования 2026 года по протоколам, вендорам и плеерам — в один справочник, который можно передать инженерной команде или потенциальному подрядчику. Если хотите получить второе мнение по архитектуре или фиксированную оценку с учётом ускорения за счёт нашего Agent Engineering — напишите или позвоните в конце статьи; мы честно скажем, что вам выгоднее: построить самим, купить или сделать гибрид.
Планируете видео для своей e-learning-платформы?
Расскажите про размер аудитории, целевую задержку и целевую стоимость студенто-часа. За 30 минут мы набросаем стек протоколов, CDN и вендоров.
Что на самом деле значит видеостриминг для e-learning-приложения
Стриминг — это не «проигрывание MP4 поверх HTTP». Это конвейер из пяти этапов: кодирование (превращаем исходное видео в сжатые битовые потоки нескольких качеств), упаковка (нарезаем на короткие сегменты и пишем манифест), хранение/ориджин (держим сегменты в авторитетном месте), доставка (прогоняем через CDN с кэшированием), воспроизведение (плеер на устройстве студента сам выбирает, какой битрейт запросить следующим). Любой серьёзный баг стриминга живёт на одном из этих пяти стыков. Любой серьёзный перерасход бюджета — следствие ошибки на одном из них.
От этого конвейера e-learning-платформе нужны четыре сценария: VOD (записанные лекции, смотрят по запросу), живой класс (запланированные занятия с преподавателем, 10–1000 студентов, с минимальной интерактивностью), репетиторство в реальном времени (задержка меньше 500 мс, двусторонняя связь, небольшие группы) и архивация live в VOD (вчерашнее занятие — завтрашний материал для повторения). Остальная часть гайда привязывает к этим четырём сценариям конкретные протоколы, кодеки, вендоров и архитектурные решения.
Протоколы стриминга: HLS, CMAF, LL-HLS, DASH, WebRTC
Выбор протокола задаёт всё, что дальше: плеер, CDN, конфигурацию кодирования, DRM, стоимость. Ошибётесь — переделаете через год. Таблица ниже — это матрица решений 2026 года, с которой мы выходим на каждый discovery-созвон.
| Протокол | Задержка | Покрытие устройств | DRM | Лучший сценарий в e-learning |
|---|---|---|---|---|
| HLS | 10–30 с | Все (нативно на iOS/macOS; hls.js везде остальном) | FairPlay | Записанные лекции, симулькаст на большую аудиторию, mobile-first VOD |
| LL-HLS | 2–5 с | iOS 14+, современные браузеры через hls.js | FairPlay | Запланированные живые занятия с чатом и Q&A, вебинары |
| CMAF / CMAF-LL | 1–3 с | Shaka, Video.js, Bitmovin; нативно на iOS 14+ | Widevine + PlayReady + FairPlay (через CENC) | Премиальный VOD + live, мульти-DRM, единый стек для обоих режимов |
| MPEG-DASH | 6–15 с (LL-DASH 3–6 с) | Chromium, Android, Edge (нет нативной поддержки в iOS Safari) | Widevine + PlayReady | LMS под Android-first, корпоративное обучение во внутреннем периметре |
| WebRTC (SFU) | <500 мс | Все современные браузеры + нативные SDK | Обязательный DTLS-SRTP; DRM неприменим | Репетиторство 1:1, небольшие группы, интерактивная доска |
| RTMP | Только ингест | Энкодер → ориджин (в браузере не воспроизводится) | N/A | OBS / мобильный энкодер заливает на ваш ориджин |
Берите HLS/CMAF, когда основной сценарий — записанные лекции или запланированные живые занятия для 100+ одновременных студентов и важна работа на iOS без костылей.
Берите WebRTC, когда преподавателю нужно видеть лица студентов и слышать ответы в пределах одной фразы — индивидуальные занятия, breakout-комнаты на 10 человек, языковая практика, уроки вождения, психотерапия.
Берите гибрид (WebRTC + HLS), когда на одном живом занятии одновременно есть небольшая интерактивная группа на WebRTC и большая пассивная аудитория, подключающаяся через HLS — лекции в стиле BrainCert, «стадионные» уроки, обучающие мероприятия.
Чтобы глубже разобраться с архитектурой WebRTC — P2P, SFU, MCU, гибрид — почитайте наш гайд по архитектуре WebRTC для бизнеса в 2026 и парный разбор P2P vs MCU vs SFU.
Эталонная архитектура от начала до конца
Ниже — архитектура, которую мы внедрили на десятках e-learning-продуктов. Каждый блок соответствует реальному сервису, который можно купить или развернуть самим. Адаптируйте её, выбрасывая лишнее (нет live-режима — убирайте ветку RTMP-ингеста), а не добавляя.

Рисунок 1 — Эталонная архитектура для VOD + live e-learning (кодирование → упаковка → ориджин → CDN → плеер).
Ингест и кодирование
Исходное видео попадает к вам тремя способами: преподаватели загружают MP4 (VOD), энкодер (OBS, Larix, аппаратный) шлёт RTMP/WHIP на точку приёма (live), либо WebRTC SFU уже обрабатывает потоки в реальном времени. Дальше энкодер транскодирует в H.264 или H.265 на 3–5 битрейтах. AWS MediaConvert, FFmpeg на EC2, Mux, Bunny Stream и Cloudflare Stream — все умеют это делать; выбор тут про стоимость и операционную нагрузку, а не про возможности.
Упаковка и манифест
Упаковщик нарезает каждый битрейт на сегменты (фрагментированный MP4 или TS) и пишет манифест (.m3u8 для HLS, .mpd для DASH). Длина сегмента важна: 6 с для VOD (дёшево, дружелюбно к кэшу), 2–4 с для live с числом зрителей меньше 500 (быстрые переключения качества), снова 6 с, когда зрителей становится больше 1000 (тут уже доминирует эффективность CDN).
Ориджин, CDN и edge
Сегменты приземляются в ориджине (S3, MediaPackage, Bunny Storage, Cloudflare R2). CDN (CloudFront, Bunny, Fastly, Cloudflare, Akamai) кэширует их на 300+ edge-POP. Вы задаёте TTL кэша: 24–48 ч для сегментов, 5 с–5 мин для live-манифестов, 30 дней для лицензионных ключей DRM. Если всё сделано правильно, CDN отдаёт 90+ % запросов, не дотягиваясь до ориджина — а это разница между счётом в 12 тыс. ₽ и счётом в 97 тыс. ₽.
Воспроизведение на устройстве
Плеер (Video.js, Shaka, hls.js, Bitmovin, нативный AVPlayer/ExoPlayer) забирает манифест, замеряет сеть и начинает запрашивать сегменты. ABR-алгоритм отслеживает пропускную способность и заполненность буфера и переключается между ступенями вверх или вниз. Если хотите глубже разобраться, как именно собирается клиент воспроизведения, посмотрите наш гайд по разработке кастомного видеоплеера.
Строим адаптивную битрейтную лестницу
Лестница — это набор пар «битрейт/разрешение», между которыми плеер может переключаться. Слишком мало ступеней — студенты на слабом Wi-Fi буферизуются; слишком много — счёт за кодирование удваивается. Для e-learning золотая середина — четыре ступени.
| Ступень | Разрешение | Битрейт (H.264) | Сеть студента | Объём за час |
|---|---|---|---|---|
| Низкая | 360p | 800–1 200 кбит/с | 3G / перегруженный мобильный | ~450 МБ |
| Средняя | 480p | 1 500–2 500 кбит/с | Стабильный 4G / мобильный Wi-Fi | ~900 МБ |
| Высокая | 720p @ 30fps | 2 500–4 000 кбит/с | Домашний широкополосный / 5G | ~1,5 ГБ |
| Full HD | 1080p @ 30fps | 4 500–6 000 кбит/с | Быстрый широкополосный / десктоп | ~2,3 ГБ |
Для контента, где много демонстрации экрана (разбор кода, презентации), смените профиль кодирования: используйте -preset slow -tune stillimage в FFmpeg или QVBR в MediaConvert и снизьте битрейт примерно на 30 % — «говорящие головы» поверх слайдов сжимаются гораздо лучше натурных сцен.
Выбор кодека. H.264 в 2026 — всё ещё безопасный дефолт ради универсального покрытия устройств. Добавляйте вариант H.265 (HEVC), если на масштабе раздаёте длинные VOD-лекции: он срезает битрейт примерно на 30 % при том же качестве, и за квартал лицензионные издержки окупаются экономией на исходящем трафике. AV1 даёт ещё минус 30 %, но кодируется в 10 раз медленнее, а поддержка в iOS до сих пор фрагментарна — оставьте его для «длинного хвоста» каталога, который кодируется однажды и раздаётся годами.
CDN и хранилище: куда уходят настоящие деньги
В стриминге для e-learning доминирует исходящий трафик — обычно 85–95 % месячного счёта. Всё остальное (кодирование, хранение, аналитика) — погрешность на фоне переданных гигабайт. Сначала выбирайте CDN, а потом подгоняйте под него всё остальное.
| CDN | Цена исходящего (за ГБ) | Комментарии |
|---|---|---|
| AWS CloudFront | 6,3 ₽ (первые 10 ТБ), 6 ₽ следующие 40 ТБ, 4,5 ₽ свыше 50 ТБ | Плотная интеграция с AWS; подписанные URL и cookie; enterprise-SLA |
| Bunny CDN | 0,7–2,2 ₽ (по ступеням), 0,3 ₽ свыше 500 ТБ | Самая низкая цена на масштабе; в связке с Bunny Stream даёт полный пакет |
| Cloudflare | Фикс 1 500 ₽/мес в бандле либо поминутная тарификация Stream | Безлимитный исходящий на Pro/Business; Workers и R2 для кастомной логики |
| Fastly | База 9 ₽, падает до 3,7 ₽ при контрактном объёме | Сильный edge-compute (VCL), удобно для кастомной авторизации по токенам |
| Akamai | Индивидуальный контракт (6–11 ₽ типично) | Enterprise-SLA, региональная оптимизация; имеет смысл после ~500 ТБ/мес |
Полную серверную модель — ориджины, балансировщики нагрузки, транскодер, сервис авторизации, БД, мониторинг — смотрите в нашем гайде по оценке серверной стоимости. А приёмы по снижению задержки на уровне edge, которые срезают секунды старта, мы разбираем в нашем гайде по edge-компьютингу для live-стриминга — там показано, как выбирать POP и переписывать манифесты на воркерах.
Сравнение управляемых стриминг-вендоров
Если не хочется соединять энкодер + упаковщик + ориджин + CDN самостоятельно, управляемое видео-API сворачивает весь этот стек в один контракт. Платой будет надбавка ~30–50 % к цене за операционную простоту.
| Вендор | Модель тарификации | DRM | Кому подходит |
|---|---|---|---|
| Mux | Бесплатное кодирование, ~0,22 ₽ за минуту хранения, ~0,07 ₽ за минуту отдачи | Widevine + PlayReady + FairPlay | Команды dev-first, сильная QoE-телеметрия, VOD + live |
| Cloudflare Stream | 375 ₽ за 1 000 мин хранения + 75 ₽ за 1 000 мин отдачи | Подписанные URL, корпоративный DRM не поддерживается | Простые VOD-библиотеки, стек на базе Cloudflare |
| Bunny Stream | Бесплатное транскодирование, 0,3–0,7 ₽ за ГБ отдачи | Только токены | Платформы, чувствительные к стоимости, при объёмах от 10 ТБ/мес |
| api.video | 0,7–2,2 ₽ за минуту кодирования + ~0,11 ₽ за минуту отдачи | Widevine + PlayReady | Европейские GDPR-ориентированные платформы, быстрый live-to-VOD |
| Kaltura | Корпоративный контракт (десятки миллионов рублей в год) | Полный мульти-DRM + офлайн | Университеты, глубокая интеграция с LMS (Canvas, Moodle, Blackboard) |
| JW Player | Корпоративный контракт | Полный мульти-DRM | Издатели с врезкой рекламы, VAST/VPAID, server-side stitching |
Берите Mux, когда вы dev-first команда с объёмом меньше 100 тыс. минут воспроизведения в месяц и QoE-телеметрия важнее голой цены за исходящий трафик.
Берите Bunny Stream, когда прошли отметку 10 ТБ/мес, токеновой защиты достаточно и каждый сэкономленный рубль на исходящем трафике видно в P&L.
Берите DIY (MediaConvert + MediaPackage + CloudFront), когда уже живёте в AWS, нужен корпоративный DRM и хочется зашить свою логику упаковки (по-арендаторные водяные знаки, маркеры SCTE-35, форензик-вотермарки).
Не уверены — строить, покупать или делать гибрид?
Расскажите про целевой MAU, объём воспроизведений и требования к комплаенсу. За один созвон мы скажем, какой стек выигрывает в первый год, а какой — в третий.
Защита контента: подписанные URL, токены и DRM
Защита — это не один переключатель, а три уровня. Внедряйте самый дешёвый, который покрывает ваш коммерческий риск, а не все три сразу по умолчанию.
1. Подписанные URL и JWT-токены. CDN выдаёт временную HMAC-подпись для URL воспроизведения. Срок действия — 1 час для манифестов, 24 часа для сегментов. Это останавливает бытовой шеринг ссылок и тех, кто хочет залить URL в Telegram-чат. На реализацию уходит примерно 1 инженеро-неделя; эксплуатация фактически бесплатна. Покрывает 95 % пиратских рисков в e-learning.
2. HLS с шифрованием AES-128 (ClearKey). Сегменты зашифрованы AES; ключ забирается с вашего auth-эндпоинта одновременно с подписанным URL. Дёшево, универсально, без вендорских комиссий за лицензионный сервер. Останавливает тех, кто пытается скачивать сегменты напрямую. На добавление поверх подписанных URL уходит примерно 2 инженеро-недели.
3. Мульти-DRM CENC (Widevine + FairPlay + PlayReady). Защита ключей на уровне аппаратного безопасного анклава устройства; обойти без специализированного инструментария почти невозможно. Применяйте, когда продаёте премиальные сертификационные курсы, корпоративное обучение под NDA или ценный контент, который нельзя позволить себе потерять. Закладывайте лицензионные платежи за key-сервер, 4–8 недель интеграции и постоянное сертификационное тестирование.
Правило большого пальца: подписанные URL — для бесплатных и недорогих курсов, AES-128 — для среднего ценового сегмента (курсы за 7 500–75 000 ₽), полный CENC — только при цене свыше 75 000 ₽ за место или под жёстким корпоративным NDA.
Слой плеера: веб, iOS, Android, React Native
В вебе Video.js в e-learning по-прежнему дефолт: зрелая экосистема плагинов, главы, субтитры, переключатель качества, расширения для DRM. Используйте hls.js напрямую, если нужен минимальный бандл или вы встраиваете видео в React Native WebView. Берите Shaka Player, когда основной протокол — DASH и нужно офлайн-кэширование с отзываемыми лицензиями.
На нативной iOS AVPlayer сразу из коробки умеет HLS и FairPlay — сторонний SDK для большинства e-learning-приложений не нужен. На Android стандарт — ExoPlayer (Media3): поддерживает HLS, DASH, SmoothStreaming, Widevine и офлайн-загрузки. Для React Native пакет react-native-video оборачивает оба натива; для Flutter связка video_player + better_player покрывает 95 % случаев.
Минимальная интеграция Video.js (под капотом hls.js)
import videojs from 'video.js';
import 'video.js/dist/video-js.css';
const player = videojs('lecture', {
controls: true,
fluid: true,
playbackRates: [0.75, 1, 1.25, 1.5, 2],
html5: { vhs: { overrideNative: true } },
sources: [{
src: 'https://cdn.example.com/course-42/lecture-03/master.m3u8?token=...',
type: 'application/x-mpegURL',
}],
});
player.on('error', () => analytics.capture('video_error', player.error()));
player.on('waiting', () => analytics.capture('rebuffer_start', { t: player.currentTime() }));
player.on('playing', () => analytics.capture('rebuffer_end', { t: player.currentTime() }));
Переключатель скорости (от 0,75× до 2×) — неожиданно высокоэффективная функция: по нашим продакшен-данным, больше 40 % e-learning-зрителей включают её уже в первой сессии, и она поднимает долю завершения курса на 10–15 процентных пунктов. Выкатывайте её с первого дня.
Интерактивные функции виртуального класса поверх видео
Сам видеопоток — это базовый минимум. Конкуренция между e-learning-платформами идёт за то, что сверху.
1. Live и VOD одновременно. Энкодер раздваивает выход: один поток уходит в HLS-ориджин (живое воспроизведение), второй — в S3-бакет (архив сегментов). Лёгкая Lambda собирает сегменты в VOD-мастер через 60 секунд после окончания трансляции. Студенты, пропустившие занятие, получают чистую запись, в которой уже есть главы и субтитры.
2. Главы и транскрипты. HLS поддерживает маркеры EXT-X-DATERANGE; в DASH для этого есть EventStream. Заполняйте их из метаданных учебной программы (заголовки слайдов → названия глав) на этапе кодирования. Сочетайте с дорожками субтитров WebVTT, сгенерированными AWS Transcribe, Deepgram или AssemblyAI (в 2026 году точность 95+ %). Строка поиска внутри архива лекций превращается в киллер-фичу.
3. Тесты и контрольные точки прямо в видео. На определённой секунде ставится пауза, поверх показывается вопрос с вариантами, ответы уходят в LMS через xAPI. Этот паттерн популяризовал Edpuzzle; в Video.js его реализует плагин overlays — он даёт нужный хук на паузу и инъекцию контента. Особенно мощно работает, когда прохождение контрольной точки разблокирует следующую главу — это заставляет внимательно смотреть обязательный материал.
4. Доска, демонстрация экрана и синхронизированный чат. Доску и шаринг экрана выносите на отдельную WebRTC-дорожку (или в выделенную SFU-комнату), а не пихайте в HLS-манифест. Сохраняйте события чата как { video_time, user, message }, чтобы при просмотре VOD-записи чат проматывался синхронно. Именно так BrainCert реализует «исторический» повтор урока.
5. ИИ-субтитры, перевод и резюме. Стандарт 2026 — субтитры в реальном времени плюс субтитры на нескольких языках по запросу и резюме лекции в один клик. Какой вендорский стек закрывает это меньше чем за 0,75 ₽ за минуту обработанного аудио, мы разбираем в нашем гайде по ИИ-инструментам для e-learning-видео.
Аналитика: метрики QoE и вовлечённости, которые имеют значение
Стриминговая аналитика делится на два стека: QoE (здоров ли видеопровод?) и вовлечённость (учатся ли студенты на самом деле?). Подключайте и то и то с первого релиза; докручивать потом — втрое дороже.
Качество воспроизведения (QoE)
Время старта. От нажатия «play» до первого кадра. Целевое значение — меньше 2 с на широкополосной сети, меньше 4 с на мобильной. Выше 5 с — и вы мгновенно теряете 20 % зрителей.
Доля ребуферизации. Суммарное время буферизации, делённое на общее время воспроизведения. Цель — меньше 1 %; индустриальная медиана около 0,5 %. Выше 2 % — и доля завершения курса обрушивается.
Вариативность и средний битрейт. Стабильный битрейт → стабильное воспринимаемое качество. Большой разброс означает, что ABR-алгоритм «дёргается» — обычно это промах кэша CDN или неправильная длительность сегмента в энкодере.
Доля провалов запуска видео. Меньше 0,5 % — здоровый показатель; выше — это проблемы с токенами, CORS-конфигом или плохими манифестами. Если хотите глубже разобраться в QoE-мониторинге с помощью ИИ, посмотрите наш гайд по ИИ-видеоаналитике.
Вовлечённость (специфика e-learning)
Доля проигрываний (play-through rate). Процент студентов, нажавших «play» после загрузки страницы. Если на лекции PTR ниже 70 %, обычно виноваты плохая обложка или непонятный заголовок.
Доля завершения. 50–70 % — норма для самостоятельного e-learning; ниже 40 % — проблема в контенте, а не в технологии.
Точки повторных просмотров. Тайм-коды, к которым большинство студентов перематывает заново. Это те 90 секунд, где ваша учебная программа непонятна — собирайте их и переписывайте материал.
Распределение скоростей воспроизведения. Если больше 30 % смотрят на 1,5× или 2× — материал слишком растянут. Если больше 20 % — на 0,75×, он слишком плотный.
Модель стоимости: разбор на 1 000 студентов
Сценарий. 1 000 активных студентов, каждый смотрит 10 часов видео в месяц, дефолтный битрейт 720p плюс резервные ступени. Месячный исходящий трафик — около 14,7 ТБ суммарно по всем ступеням лестницы.
| Стек | Кодирование | Хранение | Исходящий | Итого в месяц |
|---|---|---|---|---|
| DIY AWS (MediaConvert + S3 + CloudFront) | ~3 300 ₽ | ~220 ₽ | ~93 700 ₽ | ~97 500 ₽ |
| Bunny Stream (всё в одном) | Бесплатно | ~1 300 ₽ | ~11 000 ₽ | ~12 300 ₽ |
| Cloudflare Stream | Бесплатно | ~2 200 ₽ | включено | ~2 200–30 000 ₽ (зависит от масштаба) |
| Mux (в пределах бесплатного тарифа) | Бесплатно | ~1 300 ₽ | Бесплатно (до 100 тыс. мин) | ~1 300–45 000 ₽ |
Вывод: не выбирайте стек, пока не построили модель стоимости на студенто-час под ваш прогноз масштаба. DIY на AWS — это 9,75 ₽ за студенто-час; Bunny Stream — около 1,2 ₽ за студенто-час — разница в 8 раз, которая за три года превращается в десятки миллионов рублей. Полный шаблон расчёта смотрите в нашем гайде по стоимости разработки стримингового приложения.
Мини-кейс: BrainCert — WebRTC-класс на миллион учеников
Ситуация. BrainCert пришёл в Фора Софт с задачей построить первый в мире виртуальный класс на WebRTC + HTML5: живые занятия с преподавателем и интерактивной доской, запланированные трансляции на большую аудиторию и полностью архивный VOD для повторения — и всё это в одной платформе с поддержкой мультиарендности.
Что мы построили. Гибридный стек: WebRTC SFU для малых живых комнат (10–50 студентов, задержка меньше 500 мс), HLS-ориджин + CDN для запланированных «стадионных» трансляций (1000+ зрителей с задержкой 2–5 с), автоматическая упаковка live в VOD, по-арендаторные подписанные URL и плеер на базе Video.js с маркерами глав, мульти-скоростным воспроизведением и синхронизированным повтором чата.
Результат. Сегодня платформа обслуживает 1 млн+ учеников, генерирует 750 млн ₽+ годовой выручки и проходит аудиты на соответствие требованиям K–12 в нескольких регионах. Доля завершения VOD-курсов выросла с 42 % до 67 % после того, как мы выкатили главы в видео, транскрипты и воспроизведение на 1,5×/2× — этот паттерн мы теперь по умолчанию ставим каждому e-learning-клиенту. Хотите такую же оценку вашей платформы? Позвоните или напишите — пройдёмся по стеку вместе.
Шаг за шагом: запускаем VOD в e-learning-приложении за 6 недель
Это минимальный план, по которому одна команда Agent Engineering (2 сениор-инженера + 1 QA) выводит в продакшен полноценный VOD-конвейер. Сроки рассчитаны на HLS-only, защиту AES-128, без мульти-DRM.
Неделя 1 — Решения и каркас. Фиксируем протокол (HLS), кодек (H.264), ступени (360p/480p/720p/1080p), вендора (Mux или Bunny), CDN (в составе вендора) и плеер (Video.js). Заводим аккаунты, прикручиваем генерацию подписанных URL на бэкенде, поднимаем dev-бакет под тестовые ассеты.
Неделя 2 — Загрузка и конвейер кодирования. Преподаватель заливает MP4 через возобновляемую загрузку (tus.io или multipart на S3). Бэкенд запускает задачу кодирования. Вебхук обновляет статус лекции, когда мастер-HLS готов. Сохраняем URL манифеста и длительность в БД.
Неделя 3 — Клиент воспроизведения. Встраиваем Video.js, забираем подписанный URL с auth-эндпоинта, обновляем токен по истечении, отправляем события ребуферизации и ошибок в аналитический пайплайн.
Неделя 4 — Субтитры и главы. Автоматически транскрибируем каждое загруженное видео, кладём WebVTT рядом с манифестом, добавляем маркеры глав из слайдов преподавателя. Выкатываем переключатель скорости.
Неделя 5 — Телеметрия QoE и админ-дашборд. Строим воронку событий QoE (старт, ребуфер, ошибки) и админ-дашборд с долей ребуферизации по странам, дням и лекциям.
Неделя 6 — Закаливание и запуск. Прогоняем нагрузочный тест на 5-кратной от целевой конкурентности, неделю бета-тестируем с 50 реальными студентами, чиним топ-3 всплывших QoE-проблемы, выкатываемся в продакшен.
Добавление живого класса поверх этого (недели 7–12) грубо удваивает усилия: ингест RTMP/WHIP, упаковка LL-HLS, UI расписания, чат в трансляции, задача live-to-VOD. Добавление интерактивных комнат на WebRTC SFU — это ещё 6–10 недель в зависимости от того, выберете ли вы LiveKit или будете собирать на mediasoup.
Пять граблей, которые топят запуск видео в e-learning
1. Отдаёте MP4 без сегментации. Паттерн <video src="file.mp4"> скачивает весь файл целиком, игнорирует изменения сети и сжигает трафик на тех, кто посмотрел только начало. Используйте HLS или DASH с первого дня, даже для коротких видео.
2. Нет CDN перед ориджином. Вы платите за исходящий трафик S3 за каждый сегмент, каждого студента, каждый раз. CDN с 24-часовым TTL кэша отбивает 90+ % запросов за пятую часть цены. В 2026 году нет ни одного сценария, где «просто S3» — правильный ответ.
3. Неправильная длина сегмента под сценарий. 1-секундные сегменты на VOD бомбят ваш ориджин; 10-секундные сегменты на живом занятии замораживают переключение качества на 10 секунд каждый раз. Подбирайте длину под нагрузку: 6 с для VOD, 2–4 с для интерактивного live, 6 с — для массового live.
4. Нет ABR, нет QoE-телеметрии. Без адаптивной лестницы студенты на мобильной сети буферизуются. Без событий QoE вы не узнаете о проседающем CDN, пока NPS не рухнет. И то и другое — задачи первой недели, а не двенадцатой.
5. Жёстко зашитые публичные URL. Если студент может скопировать URL манифеста в Telegram-чат, ваш платный курс становится бесплатным для всего мира. Подписанные URL и временные токены закрывают эту дыру за полдня.
Когда стримить самим не нужно
Есть платформы, где встроить YouTube или Vimeo и двинуться дальше — правильное решение: бесплатная контент-маркетинговая «академия» при SaaS-продукте, бизнес одного преподавателя, который ещё ищет product-market fit, или когортный буткемп, где все живут в Zoom, а VOD-архив — это вторично. Не стройте собственный стриминговый стек, если ваш 12-месячный план монетизации не требует подписанных URL, DRM, кастомной аналитики и брендированного плеера. Возвращайтесь к этому решению, когда переходите рубеж в 1 000 платящих учеников или поднимаете цену места выше 22 500 ₽.
Каркас решений — выбираем стек за пять вопросов
В1. Какая задержка нужна преподавателю? Меньше 500 мс → WebRTC. 2–5 с → LL-HLS или CMAF-LL. 10+ с → классический HLS. Если ответ зависит от типа занятия, вам нужен гибридный стек.
В2. Какая максимальная одновременная аудитория на одно занятие? Меньше 50 → только SFU. 50–500 → SFU + выборочная раздача через HLS. 500+ → LL-HLS-ориджин + CDN, при желании с небольшой WebRTC-«сценой» для спикеров.
В3. Насколько ценен каждый курс? Бесплатно/недорого → подписанные URL. 7 500–75 000 ₽ → AES-128. От 75 000 ₽ за место или корпоративный NDA → мульти-DRM CENC.
В4. Какой прогнозный исходящий трафик в месяц на втором году? Меньше 1 ТБ → Mux или Cloudflare Stream. 1–50 ТБ → Bunny Stream или Cloudflare Stream. 50+ ТБ → контракт с CDN или DIY на AWS MediaPackage.
В5. Кто отвечает за эксплуатацию? Нет выделенного видео-инженера → управляемый вендор (Mux, Kaltura, Cloudflare). Полноценная видео-команда внутри → DIY на AWS/GCP в долгую — самый экономичный финал.
Нужен партнёр, который выпустил это 20+ раз?
Мы строили видео для BrainCert, Instaclass, Scholarly, Perspire и десятков других продуктов. Расскажите про план — мы посчитаем фикс-MVP; наш Agent Engineering делает это быстрее и дешевле, чем у большинства подрядчиков.
Комплаенс, доступность и региональные особенности
У видео в e-learning есть комплаенс-нагрузка, которой нет у других категорий. FERPA (школы и вузы США) и COPPA (ученики младше 13 лет) требуют строгой работы с ПДн в логах просмотров. GDPR распространяет это на ЕС: ваш CDN и аналитический стек должны поддерживать региональное хранение и DPA. WCAG 2.2 AA по доступности означает закрытые субтитры (а не «вшитые» в кадр), управление воспроизведением с клавиатуры и совместимость элементов управления плеера со скрин-ридером. Video.js проходит WCAG из коробки; большинству нативных плееров нужен аудит доступности.
Региональные нюансы тоже важны: Индия и ЮВА смотрят с Android (DASH + Widevine или HLS-полифилл); в Латинской Америке окупается точечный выбор POP под 360p на мобильном; на Ближнем Востоке часто нужны серверы внутри региона ради малой задержки в live и соответствия местному регулированию. Эти уроки мы сложили на Instaclass — он работает в школах ОАЭ и ЮАР.
FAQ
Можно просто встроить YouTube в e-learning-приложение?
Технически — да, для бесплатного контента, но вы отдаёте брендинг, аналитику, контроль доступа и не можете прятать контент за пейволлом. Как только начинаете монетизировать уроки или нужна QoE-телеметрия — переходите на HLS у себя на CDN или к управляемому вендору вроде Mux или Cloudflare Stream.
HLS или DASH — с чего лучше начинать?
Почти во всех e-learning-кейсах — HLS. Нативная поддержка на iOS, первоклассная поддержка через hls.js везде остальном, и отлаживать его дешевле, чем DASH. Добавляйте DASH, только если у вас исключительно Android/Chromium-парк или нужны функции LL-DASH, которые ваш CDN отдаёт только через DASH.
Нужен ли DRM с первого дня?
Нет. Подписанные URL покрывают около 95 % пиратских рисков в e-learning. Добавляйте AES-128, когда контент становится платным, а полный мульти-DRM CENC — только когда продаёте курсы дороже 75 000 ₽ за место или работаете под корпоративный NDA, который этого требует.
Сколько стоит видеостриминг на студенто-час в 2026?
При 720p и адекватной ABR-лестнице: 9–11 ₽ на голом AWS (CloudFront + MediaConvert + S3), 1,1–1,5 ₽ на Bunny Stream и от нуля до 1,5 ₽ на Mux/Cloudflare Stream в пределах их бесплатных тарифов. Сверху — 4–8 недель разработки на поднятие всего этого.
Как реализовать live и VOD с одного энкодера?
Раздваиваем выход энкодера: один уходит в ваш HLS/LL-HLS-ориджин live, второй пишет сегменты (или целый мастер) в архивный бакет. Задача упаковки склеивает сегменты в чистый VOD-мастер вскоре после окончания трансляции и регистрирует его в каталоге лекций. AWS MediaLive + MediaPackage делают это нативно; в Mux Live-to-VOD — один вызов API.
Сколько одновременных live-зрителей вытянет WebRTC?
Хорошо настроенный SFU (LiveKit, mediasoup, Jitsi) масштабируется до нескольких тысяч зрителей на кластер, прежде чем цена и сложность побеждают HLS. После ~500 одновременных зрителей экономика обычно переворачивается — берите WebRTC для интерактивной «сцены» (преподаватель + спикеры) и LL-HLS для пассивной «аудитории».
Какая аналитика важнее всего для e-learning-видео?
Две группы. QoE: время старта, доля ребуферизации, доля провалов запуска видео, пропущенные кадры. Вовлечённость: доля завершения, точки повторных просмотров, распределение скоростей воспроизведения, длина сессии. QoE говорит, что конвейер здоров; вовлечённость — что учебная программа работает.
Может ли Фора Софт встроить видео в нашу существующую e-learning-платформу?
Да — это один из самых частых типов наших проектов. Мы подключаемся к Canvas, Moodle, Blackboard, Thinkific, кастомным LMS и внутренним обучающим порталам. Типовой объём — 4–10 недель на HLS VOD, 10–16 недель на VOD + live и 16–24 недели на WebRTC-классы. Наш подход Agent Engineering сжимает эти сроки — позвоните или напишите, и мы оценим вашу задачу.
Что почитать дальше
Архитектура
P2P, SFU, MCU, гибрид: гайд по архитектуре WebRTC на 2026
Парный каркас решений для классов в реальном времени и репетиторства 1:1.
Стоимость
Как оценить серверную стоимость видеоплатформы
Полная инфраструктурная таблица: ориджины, транскодеры, CDN, авторизация, мониторинг.
ИИ и e-learning
ИИ для e-learning-видео: срезаем стоимость на 60 %
Субтитры, резюме и перевод на ИИ-стеке 2026.
Плеер
Разработка кастомного видеоплеера — гайд 2026
Build-vs-buy для клиента воспроизведения: Video.js, Shaka, Bitmovin, нативные плееры.
Кейс
BrainCert — WebRTC-класс для миллиона учеников
Как гибридный стек WebRTC + HLS вырастает до 750 млн ₽ годовой выручки и 1 млн+ студентов.
Готовы реализовать видеостриминг в своём e-learning-приложении?
Снаружи видеостриминг выглядит как одно техническое решение; изнутри — это цепочка из шести решений, и все они должны сойтись: протокол, кодек, битрейтная лестница, CDN, защита, плеер. Берите HLS, когда нужен масштаб; CMAF — когда нужны live и VOD под одним DRM; WebRTC — только ради взаимодействия с задержкой меньше секунды; и всегда ставьте дружественный к кэшу CDN между ориджином и студентами. Просчитайте исходящий трафик на ваш масштаб второго года до выбора вендора — обычно именно здесь проходит граница между жизнеспособной юнит-экономикой и убыточной.
Сделайте три базовые вещи с первого дня: адаптивную битрейтную лестницу (четыре ступени), подписанные URL с AES-128 там, где это нужно, и QoE-телеметрию с долей ребуферизации и долей завершения на дашборде, который ваша продуктовая команда смотрит еженедельно. Только эти три вещи отделяют платформы, на которых студенты заканчивают курс, от тех, где бросают. Если хотите команду, которая делала это 20+ раз — от LMS на миллион учеников до нишевых EdTech-стартапов — позвоните или напишите, и мы разберём ваш план за полчаса.
Реализуем видеостриминг в вашем e-learning-приложении
Фора Софт выпустила 625+ продуктов за 21 год — включая BrainCert, Instaclass, Scholarly и Perspire. За 30 минут созвона вы уйдёте с подобранным протоколом, вендором и планом по стоимости.

