2016-04-01 14 views
4

Ich bin in der Lage, Video mit Kurento mit WebRTC zu streamen, muss ich Multi-Party-Audiokonferenz mit MCU-Funktion von Kurento Media Server zu implementieren. So wird Audio, das von allen Clients kommt, zusammengeführt und das kombinierte Audio mit WebRTC effizient an alle Clients gesendet.Wie implementiert man MCU für Audiokonferenz mit Kurento Media Server?

Wenn es funktioniert dann brauchen wir nur zwei Verbindungen (eine für send und eine für den Empfang) Ansonsten brauchen wir eine Peerverbindung zu allen Clients, die WebRTC benutzen. Es ist nicht möglich, eine Peer-Verbindung zu allen Clients herzustellen.

Bitte schlagen Sie mir einen Beispielcode vor, der eine MCU für Audio mit dem Kurento Media Server implementiert hat, oder leiten Sie ihn mit dem Kenturo Media Server ein.

+0

Bitte überprüfen Sie die Antwort bearbeitet, vielleicht könnte es für Sie nützlich sein. – santoscadenas

+0

@ santoscadenas. Soll ich das Media Element Plugin (gst-plugin) von der JavaScript API (Like Node) verwenden? –

+0

Ja, instanziieren Sie einfach ein 'Composite'-Element und verbinden Sie' HubPorts' einfach über Audio. – santoscadenas

Antwort

3

Ich fürchte, es gibt keinen Code, der das un Kurento erlaubt. Es gibt das Composite Medienelement, aber das ist normalerweise für Audio UND Video. Es kombiniert Streams in einer einzelnen Stream-Matrix der erforderlichen Größe, in der Regel mehr als 9 Streams möglicherweise Leistungsprobleme haben. Wenn Sie nur Audio verarbeiten möchten, könnte es sicherlich mehr als 9 Streams verarbeiten. Um nur Audio zu verwenden, verbinden Sie den AUDIO-Stream mit HubPort.


EDIT 1

der Code die Medienelemente benötigt werden, und die richtige Art und Weise herstellen eine Nur-Audio-Verbindung zu erzeugen, ist wie folgt.

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); 

Bitte beachten Sie, dass die Verbindung von der zum HubPortWebRtcEndpoint ist. Wenn Sie es bidirektional benötigen, müssen Sie auch auf diese Weise verbinden.

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

Ist es möglich, das Composite-Media-Element zu verwenden, indem nur Audio-Streams gesendet werden (Ich versuche, Videoteile von SDP zu entfernen, die an den Server gesendet werden)? Oder gibt es Änderungen in [composite] (https://github.com/Kurento/kms-elements/blob/3c6d673ddafcce0ab23a7856b356a7de0069cf0/src/gst-plugins/kmscompositemixer.c) Media-Element-Code? –

+0

@NileshWagh Keine Notwendigkeit, etwas zu entfernen (es sei denn, Sie möchten diese Bandbreite speichern, was sehr sinnvoll ist). Denken Sie daran, die Verbindung mit dem Medientyp aufzurufen. Ich bearbeite die Antwort so, dass sie den vollständigen Befehl enthält, wie es sein sollte. – igracia

+0

Sie haben eine Referenz für die Implementierung von JavaScript (Knoten) für eine solche Audiokonferenz, die ein zusammengesetztes Medienelement verwendet. Bitte schlagen Sie mir einen Beispielcode vor. –