Дистанционное обучение: доставляем видео без задержек

19.05.2020

4мин. чтения

Сейчас школы и университеты перешли на удалённое обучение. Обнаружилось, что к этому были готовы не все. Учителя пытаются связаться с целым классом учеников по Skype или Zoom, где сейчас огромный трафик, и, соотвественно, большое количество задержек и помех. То, насколько беспроблемно пройдёт урок, зависит и от того, насколько хороший интернет у участников процесса. Если у ученика плохой интернет, это скажется только на нём. Если же плохой интернет у учителя, проблемы будут у всего класса.

Дистанционное_обучение

Как учителю максимально обойти задержки видеосигнала, даже если качество интернета у него дома оставляет желать лучшего? Лучшим выходом будет организация доставки видеосигнала с низкой задержкой (low latency). Для этого отлично подходит протокол передачи видео WebRTC (Web Real Time Communications).

Есть три способа передачи данных: unicast (от одного хоста к другому), multicast (от одной хоста к ограниченной группе хостов) и broadcast (от одного хоста ко всем хостам в сети). Изначально протокол WebRTC был создан именно для unicast, то есть для связи двух пользователей. В такой схеме веб-камера учителя может передать сигнал в 2 Мбит одному ученику, и это вписывается в возможности стандартной камеры. Но если учителю необходимо передать сигнал в 2 Мбит двадцати ученикам, начинаются проблемы: далеко не у всех есть настолько качественное и быстрое соединение. Что с этим делать?

Организовываем multicast-рассылку по WebRTC

Сложность построения масштабируемой потоковой unicast-рассылки заключается в том, что источник видео не может установить прямое соединение с каждым одноранговым узлом - у него просто не будет достаточной пропускной способности и мощности ЦП для поддержания такого количества соединений. Мы реализовали доставку видео, используя протокол WebRTC, при котором появляется возможность отправлять сигнал с камеры учителя не непосредственно ученикам, а в облако, на сервер, который и будет заниматься последующей рассылкой сигнала.

У сервера по умолчанию будет более качественное и стабильное соединение с интернетом. Кроме этого, есть возможность подключить целый кластер серверов, находящихся в разных странах, если речь идёт об обучении студентов из разных стран.

Помимо этого мы реализовали ряд интересных возможностей. Если канал нестабилен, камере может отдаваться команда снизить битрейт. И снижать его можно сколько угодно - мы в режиме реального времени подстраиваемся под ширину нужного нам канала. Точно таким же образом мы можем и увеличивать битрейт, и всё это происходит очень плавно, с точностью до килобита.

видео_без_задержек

Мы работаем над похожей системой для получателя: транскодирование в три профиля в облаке. Это даст возможность ученикам менять качество принимаемого от учителя сигнала, но не плавно, а в три профиля - низкое, среднее и высокое качество. Таким образом, ученики даже с самым слабым сигналом смогут получать видео от учителя с максимально низкой задержкой, пусть даже при этом будет страдать качество видеосигнала. При некоторых услових можно добиться задержки в 500 мс от захвата кадра в источнике до рендеринга его на экране приемника.

Даже в случае, если сигнал пропадёт на какое-то время, на непрерывности трансляции это не скажется: благодаря облаку у нас есть возможность сохранять небольшие, в 10-15 секунд, отрывки видео во временном хранилище. А впоследствии появится возможность вести запись урока и выгружать полученные видео, на основе которых учитель сможет сделать готовую лекцию для последующего применения.

Как создать свою платформу дистанционного образования

Главное преимущество WebRTC перед другими протоколами - чтобы начать транслировать видео через браузер, не требуется установки каких-то дополнительных драйверов и утилит. Учитель просто открывает браузер и начинает трансляцию для своего класса.

Но, разумеется, для организации полноценной платформы для дистанционного образования, нужно больше, чем просто браузер. Нужен понятный интерфейс, в котором ученики смогут поднять руку, оставить комментарий, поставить видео на паузу или включить перемотку (например, в случае опоздания на урок). Такую платформу, конечно, можно собрать “на коленке” из разных опенсорсных компонентов, но это многократно повысит сложность продукта и его поддержки. Кроме того, не факт, что все компоненты будут работать сообща и как по маслу.

Самый оптимальный и качественный вариант - пакетное решение для хранения, доставки и транскодирования видео. Таким решением может стать наш Flussonic Media Server. Конечно, необходимо будет добавить дополнительные функции, собрать понятный интерфейс, но это уже гораздо проще и эффективнее, чем собирать все компоненты с нуля.

Итак, мы делаем WebRTC, стандартный протокол передачи видео, нашим надёжным инструментом. А учителя и ученики могут получить надёжный и удобный канал связи, где не придётся переживать о плохом качестве интернета и возможных задержках в сигнале.

img
Автор:
Максим Лапшин
CTO и основатель Flussonic
Профессионал в области разработки высоконагруженных систем. Лауреат премии HighLoad ++

Бесплатный триал Flussonic Media Server

Отправляя заявку, вы соглашаетесь с правилами и условиями

Пожалуйста, заполните форму для получения бесплатного тестового ключа.

Если вы не получите от нас письмо в течение 30 мин, проверьте в спаме и добавьте наш адрес в избранные контакты.

Email: support@flussonic.com Phone: +7 (717) 272-78-21