书接上回:kurento 6.14.0文档翻译 第六章(第三部分)Node.js版 教程
这个web应用包括一个WebRTC环回视频通信,添加了一个有趣的帽子到检测到人脸,这个例子是一个视觉例子和增强现实。
6.2.1Java-WebRTC魔镜
这个web应用继承这个HelloWorld教程,添加一个媒体处理基于WebRTC回环
提示:这个教程已经配置了https,跟道这个教程(file:///features/security.html#configure-java-applications-to-use-https)
你可以配置你的加密应用
对于不耐烦:运行这个例子
首先,你应该在运行这个演示程序前安装kurento媒体服务,请访问安装教程(ps:第四章)了解更多信息。
运行这个应用,你需要克隆这个github项目,当你运行在本主机
git clone https://github.com/Kurento/kurento-tutorial-java.git cd kurento-tutorial-java/kurento-magic-mirror git checkout master mvn -U clean spring-boot:run |
这个web应用在端口8443本主机启动,因此在一个符合webrtc浏览器(chrome,firefox)打开这个URL“https://localhost:8443/”。
提示:仅当Kurento Media Server在与本教程相同的机器上启动并运行时,这些说明才有效,你也可以连接远程KMS,可以添加kms.url到这个JVM执行中我们也会用maven,你应该执行以下命令:
mvn -U clean spring-boot:run \ -Dspring-boot.run.jvmArguments="-Dkms.url=ws://{KMS_HOST}:8888/kurento" |
理解这个例子:
这个应用计算机视觉和增强现实技术去添加一个有趣的帽子到脸部上方,以下图片显示浏览器的演示程序截图。
这个应用接口(一个HTML web页面)由两个html5 video标签,一个为了摄像视频流(本地客户流)另一个是镜像(远程流),这个摄像视频流发送到KMS服务,处理并作为远程流将其发送回客户端,实现这个,我们需要创建一个媒体管道由以下媒体元素组成。
• WebRtcEndpoint: 提供全工(双向)WebRTC 能力。
FaceOverlay 过滤器: 计算机视觉过滤器侦测到视频流中存在脸,就把一个图片放到这个脸的上方,这个演示程序过滤器配置了一个超级马里奥帽子。
这个web应用,是一个C/S架构,在客户端实现逻辑是javascript,在服务器我们使用了基于spring-boot应用服务使用Kurento Java客户端API去控制kurnto媒体服务,此演示的高层架构是三层的去传输这些实体,两个websocket被使用了,第一个websocket创建客户端与应用服务去实现通用的信令协议,第二个websocket 用于在Kurento Java客户端和Kurento媒体服务器之间执行通信。这个通信使用kurento协议,更多相关的信息可以看第16章相应的文档。
客户端与应用服务相互通信是在websocket之上传输JSON消息,正常的客户端与服务之前的序列是1)客户端开始这个魔镜2)客户端结束这个魔镜
如果有任何异常发送,服务发送一个错误信息到客户端,客户端和应用程序服务器之间的详细消息序列如下图所示:
从这个图你可以看到,在Kurento客户端和服务器之间建立WebRTC会话中需要在客户端和服务器之间交换SDP和ICE候选对象,。特别,这个SDP协商连接浏览器的webrtcpeer和服务器的webrtcendpoint,完整的原码可以在github上找到(https://github.com/Kurento/kurento-tutorial-java/tree/master/kurento-magic-mirror)。
应用服务方面
这个演示程序服务器用java语言开发,基于spring-boot框架,嵌入一个Tomcat服务,这样可以更简单的开发和部署
提示:你可以用其它的java技术服务器,比如javaee,sip servlet,play