Разработка образовательной платформы для хранения, обработки, просмотра видеоматериалов
Журнал: Научный журнал «Студенческий форум» выпуск №1(52)
Рубрика: Технические науки
Научный журнал «Студенческий форум» выпуск №1(52)
Разработка образовательной платформы для хранения, обработки, просмотра видеоматериалов
В современном мире профессиональные знания быстро устаревают, необходимо их постоянное совершенствование. Дистанционная форма обучения дает сегодня возможность создания систем массового непрерывного самообучения, всеобщего обмена информацией, коммуникации студентов и преподавателей, независимо от наличия временных и пространственных поясов. Прослушать лекции знаменитых профессоров, получить повышение квалификации в ведущих университетах мира, воспользоваться обширными электронными библиотеками или поучаствовать в вебинаре – все это становится доступным благодаря дистанционному обучению [3].
В настоящее время существует большое количество образовательных проектов, сайтов, где можно послушать лекции именитых профессоров. Одна из задач, которая ставилась в данной работе – разработать простую, интуитивно понятную систему, в которой была бы возможность не только просмотреть видео лекции, но и пообщаться, задать вопросы преподавателю, оставить комментарий. Отличительной особенностью является то, что и сам лектор и любой студент могут оставлять комментарии прямо при просмотре лекции. Комментарий сохранится с привязкой к таймфрейму и будет отображен при просмотре соответствующего фрагмента видео. Это может быть как пояснение к сложному моменту лекции, сделанное лектором, так и заданный студентом вопрос, с ответом на который сможет помочь любой желающий.
Использование современных технологий при разработке платформы должно позволять с минимальными затратами расширять данную систему под нужды конкретного университета. При разработке программного обеспечения для серверной части был выбран язык программирования Python совместно с Django. Django - это свободный фреймворк для веб-приложений, использующий шаблон проектирования MVC. Данный фреймворк является не только быстрым решением в веб разработке, включающим все необходимое для качественного кода и прозрачного написания, но также и отличной платформой для работы с клиентурой того или иного бизнеса, а также разработчиков. С помощью Django можно гибко настроить панель управления контентом (админку сайта) под любой конкретный проект - управление видеоматериалами, комментариями и пользовательскими данными в данном случае.
Обработка видео является трудоемкой задачей, для которой требуется большое количество временных и вычислительных ресурсов. Такого рода манипуляции не требуют участия конечного пользователя вашего проекта, то есть их можно выполнять в фоновом режиме. При этом важно, чтобы весь процесс оставался управляемым.
Рисунок 1. Очередь обработки видеофайлов
На рисунке 1 представлена общая схема очереди обработки видеофайлов. Файлы, загруженные пользователями (“Producer” на схеме) из разных мест, поступают в единую очередь “Queue”. Далее они обрабатываются обработчиками (“Сonsumer” на схеме) в порядке поступления в очередь. Обработчик очереди может быть и один. Для нашего приложения важно, чтобы очередь поддерживала следующий функционал:
- выполнение заданий асинхронно или синхронно
- выполнение периодических заданий
- распределенное выполнение (может быть запущен на нескольких серверах)
- выполнение задание повторно, если произошла ошибка
- мониторинг выполнения заданий
- проверка выполнения задания (уведомить пользователя о том, что видео прошло обработку)
В разработанном приложении было решено использовать распределенную очередь Celery, которая является одним из самых популярных проектов для решения подобных задач в мире python и Django [2]. Это распределенная асинхронная очередь заданий, которая обладает перечисленным выше функционалом, легко интегрируема и удобна в использовании.
Скорость загрузки любого сайта достаточно важный и существенный параметр, который определяет качество и надежность ресурса. Для образовательной платформы это вдвойне важно. При просмотре видео не должны возникать существенные задержки в загрузке контента, иначе это негативно скажется на общем впечатлении пользователей. Оптимизировать сайт можно многими способами, и если каждый из них уже себя исчерпал, нужно подключать сторонние сервисы в помощь, например, сервис CDN. Данная аббревиатура расшифровывается как Content Delivery Network – сеть доставки контента. Чаще всего это множество серверов со специализированным ПО, которые ускоряют доставку (“отдачу”) контента конечному пользователю. Сервера расположены по всему миру таким образом, чтобы время ответа посетителям сайта было минимальным [1]. Под “контентом” чаще всего подразумевают видео и статические элементы веб-сайтов (не требующие выполнения кода на сервере или запросов в базу данных, такие как css/js).
Рисунок 2. Content Delivery Network
На рисунке 2 представлена одна из возможных схем распределения серверов CDN по миру. Все современные CDN размещают копии контента на разных серверах по всему миру и направляют клиента на ближайший (к клиенту) сервер. Результат — сокращение “latency”, то есть задержки между запросом и ответом. Если на странице много изображений (пусть даже мелких картинок), то чем быстрее они окажутся у клиента, тем быстрее клиент увидит страницу.
В разработанном приложении в качестве CDN было решено использовать Amazon CloudFront. Это это удобный для разработчиков сервис глобальной сети доставки контента, обеспечивающий быструю и безопасную передачу данных, видео, приложений и API клиентам по всему миру с низкими задержками и высокой скоростью.
Таким образом в ходе работы была разработана образовательная платформа со следующим функционалом:
- регистрация и авторизация пользователя в роли студента или лектора
- создание тематических каналов
- загрузка видео на выбранном канале
- разбивка видео на тематические блоки и секции
- возможность написания комментария для определенного таймфрейма видео
- навигация по блокам и секциям при просмотре видео
- просмотр комментариев для текущего блока/секции видео
- управление пользователями, видео материалами, комментариями через панель администрирования платформы
Интерфейс приложения не перегружен сложными элементами, что позволяет начать работать с приложением без дополнительной подготовки. В то же время функциональные возможности, реализованные по умолчанию, покрывают основные задачи образовательной платформы и при необходимости могут быть расширены, за счет модульной структуры.