可以在app浏览器中使用Kurento-client.js而不在浏览器中使用kurento-utils.js吗?

时间:2016-05-04 19:24:42

标签: webrtc kurento

我想将Kurento主要用作WebRTC到RTP网关和一些过滤器。在浏览器中,我使用的是浏览器的原生WebRTC API。

我想在我的Node应用服务器中创建一个WebRTCEndpoint(在Kurento中使用该术语),并通过Kurento管道将其连接到RTPEndpoint(该术语在Kurento中使用)。我知道这在Kurento中很简单,但我的问题是,是否可以通过在应用服务器中使用Kurento-client.js来实现这一点,但在浏览器中没有使用Kurento-utils.js?我想要这样做有很多原因,其中一个原因是我有自己的信号,还有其他问题我需要直接控制浏览器中的低级WebRTC API,这是kurento-utils.js所做的事情。不允许我这样做。

我还认为,如果确实这就是Kurento正在实施的那样,那么在没有后备的情况下与ws联系就不是理想的设计。

1 个答案:

答案 0 :(得分:2)

当然! Kurento-utils-js只是一个RTCPeerConnection包装器,用于管理视频标签,缓冲ICE候选者,在PlanB或UnifiedPlan的情况下重写SDP以及更多内容。该库与特殊信令没有任何联系:来自您将信令输入的方法的回调对于RTCPeerConnectionWebRtcPeer对象都是相同的。例如,您可以这样做,创建WebRtcPeer,以及如何发送由其生成的SDP优惠

var options = {
    onicecandidate : onIceCandidate,
    localVideo : localMedia,
    remoteVideo : remoteMedia
}

var webRtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv(options, function(error) {
    if (error) return console.error(error)
    webRtcPeer.generateOffer(function (error, sdpOffer) {
        if (error) return console.error(error)
        sendMessageToServerApp("sdpOfferMessage", sdpOffer)
    })
})

sendMessageToServerApp是您需要实施的。

您还可以访问包装对象。假设您从库中获得了webRtcPeer个对象,则可以使用属性RTCPeerConnection获取webRtcPeer.peerConnection

使用websockets的目的是支持从媒体服务器到服务器应用程序中定义的代理元素的事件。虽然您可以使用长轮询和其他技巧,但您可能不会在需要它们的环境中部署服务器应用程序和KMS,因为您应该完全控制该部分。建议使媒体服务器的信令端口仅对您的服务器应用程序可用。

为了在客户端和服务器应用程序之间建立回退机制,我建议使用SockJS。我们过去曾使用过它并且运行正常。