2016-04-01 9 views
4

Я могу транслировать видео с помощью Kurento с помощью WebRTC, мне нужно реализовать многопользовательскую аудиоконференцию с использованием функции MCU сервера Kurento Media. Таким образом, звук, поступающий от всех клиентов, объединяется и отправляет обратно комбинированный звук всем клиентам эффективным образом с помощью WebRTC.Как использовать MCU для аудиоконференции с использованием медиасервера Kurento?

Если он будет работать, нам потребуется только два подключения (один для отправки и один для получения). Другим разумным мы должны одноранговое соединение со всеми клиентами, использующими WebRTC. Невозможно установить одноранговое соединение со всеми клиентами.

Пожалуйста, предложите мне какой-нибудь образец кода, который реализовал MCU для аудио с использованием сервера Kurento Media Server или поможет мне реализовать его с использованием Kurento Media Server.

+0

Пожалуйста, проверьте отредактированный ответ, возможно, он может пригодиться вам. – santoscadenas

+0

@santoscadenas. Должен ли я использовать плагин Media Element (gst-plugin) из JavaScript API (например, Node)? –

+0

Да, просто создайте элемент 'Composite' и при подключении' HubPort' просто подключите их с помощью аудио. – santoscadenas

ответ

3

Боюсь, что нет кода, который позволяет использовать этот куранто. Существует медиа-элемент Composite, но это обычно для аудио и видео. Он объединяет потоки в единую матрицу потока требуемого размера, обычно более 9 потоков могут иметь проблемы с производительностью. Если вы хотите обрабатывать только аудио, он может обрабатывать гораздо больше, чем 9 потоков. Чтобы использовать только аудио, просто подключите AUDIO-поток к HubPort.


РЕДАКТИРОВАТЬ 1

Код для создания медиа-элементы, необходимые, и правильный способ установления соединения аудио-только заключается в следующем.

WebRtcEndpoint webrtc = new WebRtcEndpoint.Builder(pipeline).build(); 
Composite composite = new Composite.Builder(pipeline).build(); 
HubPort hubport = new HubPort.Builder(composite).build(); 
webrtc.connect(hubport, MediaType.AUDIO); 

Пожалуйста, обратите внимание, что соединение с WebRtcEndpoint к HubPort. Если вам нужно, чтобы он был двунаправленным, вам также нужно подключиться к этому пути.

hubport.connect(webrtc, MediaType.AUDIO); 
+0

Возможно ли использовать композитный элемент мультимедиа, отправив только аудиопоток (я попытаюсь удалить часть видео из SDP, которая отправляется на сервер)? Или нужны ли какие-либо изменения в коде [composite] (https://github.com/Kurento/kms-elements/blob/3c6d673ddadfcce0ab23a7856b356a7de0069cf0/src/gst-plugins/kmscompositemixer.c)? –

+0

@NileshWagh Не нужно ничего удалять (если вы не хотите сохранить эту полосу пропускания, что имеет большой смысл). Просто не забудьте подключиться к типу медиа. Я редактирую ответ, чтобы включить полную команду, как и должно быть. – igracia

+0

У вас есть ссылка на реализацию JavaScript (узла) для такой аудиоконференции с использованием составного медиа-элемента. Пожалуйста, предложите мне пример кода. –