
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

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.

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.


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