Webrtc kurento:如何将网络摄像头同时记录到webm和mp4 recordendpoint?

Webrtc kurento:如何将网络摄像头同时记录到webm和mp4 recordendpoint?,webrtc,webcam-capture,kurento,Webrtc,Webcam Capture,Kurento,我修改了kurento的one2many教程()示例,将网络摄像头流记录到mp4或webm文件中,如下所示 在这里,我注释了编写mp4的RecorderEndpoint 我的问题是,如何从一个WebRTC端点编写两个文件(webm和mp4)? 我曾考虑使用dispatcheronotomy(),但setSource需要一个hubbort,而我没有使用我的WebRTC端点masterWebRtc。 那么,如何将masterWebRtc分派到两个RecorderEndpoint 谢谢你的帮助 pri

我修改了kurento的one2many教程()示例,将网络摄像头流记录到mp4或webm文件中,如下所示

在这里,我注释了编写mp4的RecorderEndpoint

我的问题是,如何从一个WebRTC端点编写两个文件(webm和mp4)? 我曾考虑使用dispatcheronotomy(),但setSource需要一个hubbort,而我没有使用我的WebRTC端点masterWebRtc。 那么,如何将masterWebRtc分派到两个RecorderEndpoint

谢谢你的帮助

private synchronized void master(WebSocketSession session,
        JsonObject jsonMessage) throws IOException {
    if (masterUserSession == null) {
        masterUserSession = new UserSession(session);

        pipeline = kurento.createMediaPipeline();
        masterUserSession.setWebRtcEndpoint(new WebRtcEndpoint.Builder(
                pipeline).build());

        WebRtcEndpoint masterWebRtc = masterUserSession.getWebRtcEndpoint();
        String sdpOffer = jsonMessage.getAsJsonPrimitive("sdpOffer")
                .getAsString();
        String sdpAnswer = masterWebRtc.processOffer(sdpOffer);

        JsonObject response = new JsonObject();
        response.addProperty("id", "masterResponse");
        response.addProperty("response", "accepted");
        response.addProperty("sdpAnswer", sdpAnswer);
        masterUserSession.sendMessage(response);

        //RecorderEndpoint recorderEndpoint =  new RecorderEndpoint.Builder(pipeline,"file:///tmp/recording.mp4").withMediaProfile(MediaProfileSpecType.MP4).build();
       RecorderEndpoint recorderEndpoint =  new RecorderEndpoint.Builder(pipeline,"file:///tmp/recording.webm").withMediaProfile(MediaProfileSpecType.WEBM).build();
        masterWebRtc.connect(recorderEndpoint);
        recorderEndpoint.record();

    } else {
        JsonObject response = new JsonObject();
        response.addProperty("id", "masterResponse");
        response.addProperty("response", "rejected");
        response.addProperty("message",
                "Another user is currently acting as sender. Try again later ...");
        session.sendMessage(new TextMessage(response.toString()));
    }
}

在Kuranto中,所有媒体元素都是“一对多”的,这意味着您可以将源媒体元素连接到任意多个接收媒体元素。以下是您的代码:

RecorderEndpoint recorderEndpointA =  new RecorderEndpoint.Builder(pipeline,"file:///tmp/recording.mp4").withMediaProfile(MediaProfileSpecType.MP4).build();
RecorderEndpoint recorderEndpointB =  new RecorderEndpoint.Builder(pipeline,"file:///tmp/recording.webm").withMediaProfile(MediaProfileSpecType.WEBM).build();

masterWebRtc.connect(recorderEndpointA); //masterWebRtc is source, recorderEndpointA is sink
masterWebRtc.connect(recorderEndpointB); //masterWebRtc is source, recorderEndpointB is sink

//you could connect masterWebRtc to other additional elements here if you want.

recorderEndpointA.record();
recorderEndpointB.record();

非常感谢,它正在工作。我的一个问题是,我在稍后的测试中添加了.withMediaProfile(MediaProfileSpecType.MP4)。这意味着如果您不使用MediaProfileSpecType,默认情况下,kurento会保存webm内容,尽管文件的扩展名是mp4,但我不知道为什么我认为编码取决于文件扩展名。我的错。