Webrtc kurento:如何将网络摄像头同时记录到webm和mp4 recordendpoint?
我修改了kurento的one2many教程()示例,将网络摄像头流记录到mp4或webm文件中,如下所示 在这里,我注释了编写mp4的RecorderEndpoint 我的问题是,如何从一个WebRTC端点编写两个文件(webm和mp4)? 我曾考虑使用dispatcheronotomy(),但setSource需要一个hubbort,而我没有使用我的WebRTC端点masterWebRtc。 那么,如何将masterWebRtc分派到两个RecorderEndpoint 谢谢你的帮助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
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,但我不知道为什么我认为编码取决于文件扩展名。我的错。