Kurento записывает поток вызывающего абонента и вызываемого абонента в node.js

Я использую kurento для записи потока на серверный диск. Я следил за изменением урока kurento здесь, где учебник hello-world в node.js был изменен для записи потока на диск. Теперь я хочу изменить tutorial4 один -to-one call для записи вызывающего и вызываемого потоков в 2 файла.

Как я понял куренто регистратор подключен к пайплайну. Конвейер представляет собой соединение между двумя одноранговыми узлами. Как я могу записать поток одного однорангового узла в конвейере, соответственно, оба потока — один из вызывающего и один из вызываемого?

Я много пробовал, но не мог найти решение.


person Mandi    schedule 23.12.2014    source источник


Ответы (1)


Возможно, вам следует прочитать базовую документацию Kurento, в которой рассказывается, что такое медиаэлемент. и что такое конвейер, чтобы иметь более четкое представление о том, как работает API Kurento.

Для вашего конкретного вопроса RecorerEndpoint - это просто элемент мультимедиа, способный записывать в файл поток, предлагаемый в качестве его ввода. Это означает, что вы можете подключить RecorderEndpoint к любому другому исходному элементу. Например, если у вас есть вызов B2B между двумя одноранговыми узлами, каждый одноранговый узел будет связан с WebRtcEndpoint, так что результирующий конвейер будет примерно таким:

Peer A <--------->webRtcEndpointA<==>webRtcEndpointB<---------->Peer B

Для записи потоков, исходящих как от Peer A, так и от Peer B, вам просто нужно создать две RecorderEndpoints и соединить их соответствующим образом, чтобы конечный конвейер выглядел примерно так:

                             ------>recorderEndpointA
                             |
 Peer A <--------->webRtcEndpointA<==>webRtcEndpointB<---------->Peer B
                                        |
                                        --->recorderEndpointB

Исходный код для этого должен включать (я опускаю шаблонный код, который у вас уже есть в учебниках, которые вы цитируете):

pipeline.create('RecorderEndpoint', {uri: "file:///tmp/fileA.webm"}, function(error, recorderEndpointA ...
...
webRtcEndpointA.connect(recorderEndpointA);
recorderEndpointA.record();

pipeline.create('RecorderEndpoint', {uri: "file:///tmp/fileB.webm"}, function(error, recoderEndpointB ...
...
webRtcEndpointB.connect(recorderEndpointB);
recorderEndpointB.record();
person lulop    schedule 23.12.2014