Servicios Java, Spring, Kurento y Media



Ya hay muchos servicios de medios, pero la gente continúa creándolos. Decidí retomar la invención de mi bicicleta.

Al encontrarme con el proyecto Kurento , me di cuenta de que esto es lo que necesito. Este artículo es en parte una traducción de la Documentación de Kurento , en parte notas sobre mis experimentos con el Tutorial de Kurento. Espero que los desarrolladores que comienzan a estudiar este tema, este material ayude a dominar rápidamente el tema de la creación de servicios de medios.

Kurento c Esperanto se traduce como "corriente". Diseñado por Rey Spanish University
Juan Carlos Universidad . Kurento es WebRTC Media Server y un conjunto de API de cliente que simplifica la creación de aplicaciones para la Web y los teléfonos inteligentes. Puede ser telefonía por video, servicios de videoconferencia, monitoreo de imágenes desde cámaras con reconocimiento de movimiento, puede reproducir contenido de audio y video desde un archivo o desde una red, reconocer números de personas o automóviles, y mucho más. El código de Kurento es de código abierto, distribuido bajo los términos de la versión 2.0 de la licencia de Apache y está disponible en el github . Según los creadores de Kurento, es similar a Lego, se pueden hacer muchas aplicaciones útiles desde sus bloques de programa. Los bloques se pueden usar directamente "listos para usar", pero también puede desarrollar sus propios complementos si lo desea.

Se dan ejemplos de aplicaciones web en Java, Node.js, JavaScript, aunque se puede desarrollar en cualquier idioma, lo principal es que el intercambio con Kurento Media Server debe realizarse en el protocolo Kurento que entiende. Es cierto que las bibliotecas ya se han inventado para los idiomas anteriores, por lo que habrá menos problemas. Y como estoy aprendiendo Java y Spring, mis comentarios serán para estos ejemplos.

Cada tutorial respetuoso comienza con la aplicación HelloWorld. Esto no fue una excepción. Pero antes de escribir la primera aplicación, debe instalar KMS: Kurento Media Server, que está escrito en C ++ e instalado solo en Ubuntu o Linux Mint, y la versión (en el momento de la escritura) debe estar entre 14 y 18. Instalé inmediatamente la versión de Linux Mint 19 y KMS no estaba instalado, tuve que retroceder al 18.

Bueno, instalamos el sistema, Intellij Idea, agregamos el repositorio de Kurento e instalamos KMS:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83 

 sudo tee "/etc/apt/sources.list.d/kurento.list" >/dev/null <<EOF # Kurento Media Server - Release packages deb [arch=amd64] http://ubuntu.openvidu.io/6.7.1 $DISTRO kms6 EOF 

 sudo apt-get update 

 sudo apt-get install kurento-media-server 

Comenzamos el equipo de KMS:

 sudo service kurento-media-server start 

Clone el tutorial completo para Java:

 git clone https://github.com/Kurento/kurento-tutorial-java.git 

Ir al directorio deseado

 cd kurento-tutorial-java/kurento-hello-world 

Lanzamos la aplicación bajo Maven o, como en mi caso, a través de la Idea. Después de iniciar la aplicación web, pasamos por el navegador Firefox en localhost : 8443 / vemos una página donde, después de hacer clic en el botón "Inicio", obtenemos algo similar a esto

imagen

En el elemento de video de la izquierda, se muestra una imagen de la cámara web, y en la derecha, la misma imagen, pero la imagen se pasa a través del bucle de retorno de KMS.

Con base en esta experiencia, concluimos: HelloWorld se ejecuta casi siempre.
Ahora veamos cómo funciona. Esta figura muestra el diagrama de conexión de partes de nuestra experiencia.

imagen

Esquemáticamente se parece a lo que describí. Lógicamente, nuestra experiencia consta de tres partes principales: alojado en el navegador del Cliente JavaScript, recién compilado Servidor de aplicaciones e instalado al comienzo de Kurento Media Server. La interacción de estas partes se muestra en la figura a continuación.

imagen

imagen

El cliente de JavaScript envía al servidor de aplicaciones un mensaje de texto "Inicio". El servidor de aplicaciones realiza tres acciones principales en esta aplicación:

 final MediaPipeline pipeline = kurento.createMediaPipeline(); user.setMediaPipeline(pipeline); final WebRtcEndpoint webRtcEp = new WebRtcEndpoint.Builder(pipeline).build(); user.setWebRtcEndpoint(webRtcEp); webRtcEp.connect(webRtcEp); 

Crea una MediaPipeline a través de la cual se transmitirá el tráfico de medios, crea un objeto WebRtcEndpoint que procesa el tráfico de medios y envuelve la transmisión de este bloque para su recepción.

Esto concluye mi breve introducción a la aplicación HelloWorld usando Kurento. Le deseo la creación exitosa de servicios de medios.
Artículo siguiente

Source: https://habr.com/ru/post/es435580/


All Articles