Java,Spring,Kurento和媒体服务



已经有许多媒体服务,但是人们仍在继续创造它们。 我决定承担我的自行车的发明。

遇到Kurento项目后,我意识到这就是我所需要的。 本文部分是Kurento Documentatin的翻译,部分是关于我使用KurentoTutorial进行的实验的注释。 我希望开发人员开始研究此问题,该材料将有助于快速掌握创建媒体服务的主题。

Kurento c世界语翻译为“流”。 由雷伊西班牙大学设计
胡安卡洛斯大学 。 Kurento是WebRTC媒体服务器,是一组客户端API,可简化为Web和智能手机创建应用程序的过程。 它可以是视频电话,视频会议服务,具有运动识别功能的摄像机图像监控,可以播放文件或网络中的音频视频内容,识别人员或汽车号码等等。 Kurento代码是开源的,根据Apache License Version 2.0的条款分发,可在github上找到 。 根据Kurento的创建者的说法,它类似于Lego,可以从其程序块中创建许多有用的应用程序。 块可以直接“开箱即用”使用,但是您也可以根据需要开发自己的插件。

Web应用程序的示例以Java,Node.js,JavaScript给出,尽管可以用任何语言开发,但主要的事情是与Kurento Media Server的交换应该在它理解的Kurento协议上进行。 的确,已经为上述语言发明了库,因此麻烦就少了。 由于我正在学习Java和Spring,因此我将针对这些示例发表评论。

每个自重教程都从HelloWorld应用程序开始。 也不例外。 但是在编写第一个应用程序之前,您需要安装KMS-Kurento Media Server,它是用C ++编写的,并且只能安装在Ubuntu或Linux Mint上,并且版本(在撰写本文时)应该在14到18之间。我立即安装了Linux Mint 19版本并且未安装KMS,我不得不回滚到18号。

好了,我们安装了系统Intellij Idea,添加了Kurento存储库并安装了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 

我们开始KMS团队:

 sudo service kurento-media-server start 

克隆整个Java教程:

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

转到所需目录

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

我们在Maven下启动应用程序,或者通过我的想法启动应用程序。 启动Web应用程序后,我们通过Firefox浏览器访问localhost :8443 /我们看到一个页面,单击“开始”按钮后,我们将获得类似的内容

图片

在左侧的视频元素中,显示了来自Web摄像机的图片,在右侧,显示了相同的图片,但是该图像通过KMS环回传递。

根据这些经验,我们得出结论:HelloWorld几乎总是运行。
现在让我们看看它是如何工作的。 该图显示了我们部分经验的连接图。

图片

示意地看起来就像我描述的那样。 从逻辑上讲,我们的经验包括三个主要部分:托管在JavaScript客户端浏览器中,刚刚编译的Application Server并安装在Kurento Media Server的最开始。 这些部分的相互作用如下图所示。

图片

图片

JavaScript客户端向应用服务器发送“开始”文本消息。 Application Server在此应用程序中执行三个主要操作:

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

创建将通过其传输媒体流量的MediaPipeline,创建一个处理媒体流量的WebRtcEndpoint对象,并将此块的传输包装到自身以进行接收。

到此结束我对使用Kurento的HelloWorld应用程序的简要介绍。 祝您成功创建媒体服务。
下一篇

Source: https://habr.com/ru/post/zh-CN435580/


All Articles