Kurento media server windows установка

Обзор медиасервера Kurento

Kurento — это бесплатный WebRTC медиасервер с открытым исходным кодом. Он распределяет медиапотоки между пользователями, транскодирует видео, делает запись.

В предыдущих статьях мы рассматривали архитектуру групповых видеочатов. Решение с использованием медиасервера в таких случаях самое надежное, но значительно увеличивает накладные расходы на сервер.

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

Когда видео транслирует один клиент, например в приложение для проведения вебинаров, можно передавать потоки по цепочке между всеми клиентами.

Но у этих решений есть недостатки, которые станут критичными при большом числе подключенных клиентов.

  • Лишняя нагрузка на ресурсы и трафик клиента из-за дублирования исходящего потока.
  • Низкое качество видео при большом количестве пользователей.
  • Реализация записи на клиенте — более трудоемкая задача. Если мы хотим сохранить файл на сервере, пользователю придется ждать окончания его загрузки.

Медиасервер решает эти проблемы. Он управляет, маршрутизирует и записывает медиапотоки. С ним наше приложение будет работать быстрее у пользователей.

Kurento и другие медиасервера

Существует несколько медиа серверов, которые поддерживают WebRTC.

Wowza Media Server

Wowza Media Server с 2004 года используется вместе с Flash. Передача медиапотоков осуществляется по RTMP протоколу. Летом 2016 года у Wowza Media Server вышло обновление с поддержкой WebRTC. Новая версия находится в стадии beta-тестирования. Для использования Wowza Media Server без ограничений необходима платная лицензия.

Jitsi Videobridge

Jitsi Videobridge является частью большого проекта Jitsi, который начал разрабатываться еще в 2005 году, как SIP-коммутатор. В 2014 разработчики добавили поддержку WebRTC.

Jitsi Videobridge — это маршрутизатор WebRTC потоков. Он перенаправляет медиа потоки между участниками чата. Jitsi Videobridge обладает меньшей функциональностью по сравнению с медиасерверами. Решения на его основе требуют меньше системных ресурсов. В отличие от медиасерверов Jitsi Videobridge не умеет записывать, транскодировать или смешивать медиапотоки вместе.

Kurento Media Server

Kurento — это бесплатный WebRTC медиа сервер, который начал разрабатываться в мадридском университете Rey Juan Carlos в 2010 году. В его основе лежала простая идея — создать медиасервер с открытым исходным кодом, который будет состоять из подключаемых модулей, обрабатывающих медиа потоки, а также предоставить простое API разработчикам приложений.

За последний год Kurento скачали более 20 000 раз и открыли на его основе более 200 проектов на GitHub. В сентябре 2016 года команды Twilio и Kurento объединились и теперь совместно работают над разработкой новой функциональности и повышением стабильности работы.

Читайте также:  Пдф принтер для windows 10

Возможности

Kurento Media Server предоставляет следующий функционал из коробки:

Этот функционал обеспечивают встроенные модули.

Разработчик может написать собственный модуль и подключить его к Kurento. Также в состав Kurento входит набор клиентских API для управления медиа сервером.

Kurento Media Server и его компоненты написаны на C/C++ и оптимизированы с точки зрения потребления ресурсов системы. Для фильтрации используются библиотеки Gstreamer или OpenCV. Один экземпляр Kurento Media Server (8 ядер, 2.4 ГГц, 16Гб RAM) может поддерживать порядка 1000 одновременных соединений пользователей.

Как работать с Kurento

Основной идеей Kurento являются медиа элементы — это программные блоки, каждый из которых выполняет одну определенную функцию. Медиа элемент имеет вход и выход и выполняет операцию над фреймами видео или частями аудио.

Kurento содержит множество различных медиа элементов в комплекте. Например, медиа элемент WebRtcEndpoint используется для получения и отправления WebRTC медиа потоков, а медиа элемент RecorderEndpoint записывает все входящие медиа потоки в файловую систему.

Архитектура приложений Kurento

Архитектура приложений Kurento состоит из двух уровней:

Медиа уровень непосредственно передает данные медиа потоков и осуществляет кодирование/декодирование.

Сигнальный уровень реализует бизнес-логику приложения — определяет, какие медиа элементы обрабатывают медиа потоки, управляет коммуникациями между компонентами системы и связывает клиента и Kurento.

Kurento API

Сигнальный уровень управляет медиасервером посредством Kurento API. Для Node.js и Java есть официальные SDK. Можно написать свое SDK под любую платформу, так как коммуникация между сигнальным уровнем и Kurento Media Server происходит через протокол Kurento, который основан на WebSockets и JSON-RPC. Например, мы можем управлять медиасервером напрямую и из браузера, но это не самое гибкое решение. С помощью отдельного сигнального сервера приложение масштабируется и, в зависимости от нагрузки, подключать пользователей к разным экземплярам Kurento Media Server. Этого не получилось бы при управлении медиасервером с клиента.

Медиа элементы

Разработка приложений с Kurento подобна игре в конструктор Lego — необходимо собрать из медиа элементов цепочку. Разработчик определяет, какие медиа элементы ему нужны, и собирает их в нужной последовательности. Соединяются элементы одинаково — у элемента-источника вызывается метод connect, а его аргументом является элемент, который нужно добавить в цепочку следующим:

Пример

Для начала работы нужно установить медиа сервер. Создадим приложение, которое запишет WebRTC потоки на сервере. Для этого понадобится два медиа элемента: WebRtcEndpoint и RecorderEndpoint. При подключении пользователя, мы получим его медиапоток из WebRTCEndpoint и запишем в видеофайл на сервере с помощью RecorderEndpoint.

Медиа элементы соединяем так:

Возможности медиасервера не ограничены видеочатами или записью — можно передать по WebRTC на клиент видео с сетевой камеры или поток с SIP сервера для VoIP звонков. В документации Kurento много примеров на Node.js и Java, которые подойдут для более подробного изучения работы с медиасервером.

Читайте также:  Genius ilook 317 windows 10

Итоги

Kurento является решением для реализации сложных мультимедийных проектов в области видеотехнологий.

Kurento включает обширный набор инструментов для разработки и предоставляет разработчику возможность дополнять и расширять его.

После объединения с командой Twilio у Kurento появились большие перспективы развития в сторону гибкой облачной масштабируемой медиа системы.

Kurento является стабильной и зрелой технологией для создания приложений. Мы используем Kurento в нескольких наших проектах, один из которых — система для онлайн образования, призер DC Tech Day 2014 — BrainCert.

Kurento media server windows установка

Kurento Media Server


Kurento Media Server is Kurento’s core element. It is responsible for media transmission, processing, loading and recording. It is implemented in low level technologies based on GStreamer to optimize the resource consumption. It provides the following features:

  • Networked streaming protocols, including HTTP, RTP and WebRTC.
  • Group communications (MCUs and SFUs functionality) supporting both media mixing and media routing/dispatching.
  • Generic support for computational vision and augmented reality filters.
  • Media storage supporting writing operations for WebM and MP4 and playing in all formats supported by GStreamer.
  • Automatic media transcoding between any of the codecs supported by GStreamer including VP8, H.264, H.263, AMR, OPUS, Speex, G.711, etc.

This project is part of FIWARE. For more information check the FIWARE Catalogue entry for Context Processing, Analysis and Visualization.

Kurento is an open source software project providing a platform suitable for creating modular applications with advanced real-time communication capabilities. For knowing more about Kurento, please visit the Kurento project website: https://www.kurento.org/.

Kurento is part of FIWARE. For further information on the relationship of FIWARE and Kurento check the Kurento FIWARE Catalog Entry.

Kurento has been rated within FIWARE as follows:

  • Version Tested:
  • Documentation:
  • Responsiveness:
  • FIWARE Testing:

Kurento is also part of the NUBOMEDIA research initiative.

Java, Spring, Kurento и медиасервисы. Часть 2-я


В предыдущей статье я описывал мой эксперимент с приложением «HelloWorld» из Kurento-туториала. В этой статье я продолжу обзор Web приложений на Java Spring и Kurento Media Server-a.

Следующее приложение из туториала называется WebRTC Magic Mirror. Из названия следует, что зеркало отражает немного приукрашенную действительность. В этом приложении в дополнение к предыдущему применяется фильтр компьютерного зрения «FaceOverlay filter». При обнаружении в камере лица человека Kurento Media Server «надевает» на голову кепку Супер Марио. Если в обьективе несколько лиц, каждому надевается кепка.

Читайте также:  Windows mobile no data app

Запускаем Kurento Media Server

Если вы уже склонировали Kurento Java tutorial, не выполняйте следующую команду:

Переходим в директорию с проектом

Компилируем проект командой Maven

Или, как в моем случае, запустим из Идеи.

В браузере Firefox заходим по адресу https:// localhost:8443/

В открывшемся окне нажимаем на кнопку «Start», должны увидеть картинку:


Из этого опыта делаем вывод: морда моего кота совсем не похожа на человеческую, поэтому кепка Супер Марио ему не положена.

Разберемся, как работает этот пример.

Структура приложения повторяет предыдущее приложение HelloWorld. Так же в приложении взаимодействуют три программных блока: на стороне браузера код Java Script, на стороне сервера Spring-Boot Web приложение, которое управляет Kurento Media Server-ом. Эти программные блоки обмениваются друг с другом сообщениями на базе Json протокола.

На схеме показано, что в KMS программный блок WebRtcEndpoint теперь не заворачивает передачу мультимедийного сигнала на прием, а предварительно пропускает его через FaceOverlayFilter, который определяет наличие лица на картинке.

Обмен сигналами между программными блоками примерно такой же, как в приложении HelloWorld.

Основные действия в приложении выполняются при нажатии на кнопку «Start». Создается MediaPipeline, через которую будет передаваться медиа траффик, создаются медиа элементы WebRtcEndpoint и FaceOverlayFilter, создается соединение между ними.

Здесь упрощенная последовательность операторов, которая формирует цепочку программных блоков для данного приложения.

Рассмотрим следующее приложение из Kurento туториала под названием RTP Receiver.

Если не запущен, запускаем Kurento Media Server

Если вы уже склонировали Kurento Java tutorial, не выполняйте следующую команду:

Переходим в директорию с проектом

Компилируем проект командой Maven

или, как в моем случае, запустим из Идеи.

В браузере Firefox заходим по адресу https:// localhost:8443/

в открывшемся окне нажимаем на кнопку «Start»

В окне KMS connection info появляются данные для настройки команды для Gstreamer-а: аудио, видео порт, IP-адрес. Эти данные, а так же путь к файлу нужно указать в команде.

Кстати, проверьте установлен ли у вас Gstreamer

Подставили порты и прочее, в консоли запустили команду Gstreamer-a.

Теперь, внимание играем в лотерею. Я не знаю будет или нет у вас проигрываться файл. У меня из моей небогатой коллекции клипов стали проигрываться файлы с расширением *.mpg

Здесь проигрывается клип Натальи Могилевской. Клипы с другим расширением либо не проигрываются, либо проигрываются с искажением звука.

Из этого опыта делаем вывод: не все йогурты одинаково полезны.

Разберем работу этого приложения. Вначале создается Media Pipeline для передачи медиа траффика, а также RtpEndpoint и WebRtcEndpoint, последний выполняет работу приемника RTP пакетов и применяется для показа видео ролика.

Здесь упрощенная последовательность операторов этой части Java приложения:

На этом завершаю обзор этой части Kurento туториала. Удачного программирования!

Оцените статью