2016-04-11 13 views
2

Ich denke über die Erstellung eines kms-Filters, der Eingabe als 2 mediapipeline (A) (B) und Ausgabe einer mediapipeline (C) mit Video von 1. mediapipeline (A) und Audio von 2. Medienpipeline (B).Kurento: multiple mediapipeline mux

Ich bin verwirrt, soll ich dies auf Java-Ebene tun oder soll ich dies in KMS-Filter-Ebene tun, Ist es sogar möglich, dies in Java/KMS-Filter-Schicht zu erreichen?

enter image description here

Antwort

1

Der einfachste Weg, dies zu tun, ist alles in einer Pipeline zu erstellen, da verschiedene Medien Pipelines nicht Medien leicht teilen können. Alle können von der Client-Seite (Java oder Js) implementiert werden.

Sie können Medien aus zwei Endpoints (zB WebRtcEndpoints) erhalten, webRtcEp1 und webRtcEp2 und emittieren webRtcEpOut verwenden. Dann schließen Sie sie einfach wie folgt aus:

webRtcEp1.connect (webRtcEpOut, MediaType.AUDIO); 
webRtcEp2.connect (webRtcEpOut, MediaType.VIDEO); 

An diesem Punkt WebRctOut Audio wird das Ausstrahlen von webRtcEp1 und Videos von webRtcEp2.

1

von Medien-Pipeline, nehme ich es Ihnen Medienquelle beziehen, nicht wahr? Es ist nicht möglich, Medien aus verschiedenen Pipelines zu mischen.

Sie können mit dem Mischerelement Composite überprüfen. Es wurde noch nie getestet, aber es sollte funktionieren. Es wäre sehr einfach, das Audio von B und das Video von A gemischt zu bekommen. Nehmen wir an, Sie bekommen, dass Medien durch eine WebRtcEndpoint

Composite composite = new Composite.Builder(pipeline).build(); 
HubPort hubPortA = new HubPort.Builder(composite).build(); 
webRtcA.connect(hubPortA, MediaType.VIDEO); 
HubPort hubPortB = new HubPort.Builder(composite).build(); 
webRtcB.connect(hubPortB, MediaType.AUDIO); 

WebRtcEndpoint Erstellung und Verhandlung sind aus Gründen der Übersichtlichkeit nicht dargestellt.


EDIT 1

Denken Sie vielleicht mehr als nur diese beiden, sondern als @santoscadenas wies darauf hin, mischen, wenn Sie nur zwei Ströme unterschiedlicher Art mischen möchten, können Sie direkt den WebRtcEndpoint . Dies wird auch Ressourcen sparen und wird besser skalieren, wie die Composite ist ziemlich hungrig. Genommen von der anderen Antwort, und es zu einem Namenskonvention anpassen, wäre es

seinen
webRtcA.connect(webRtcOut, MediaType.VIDEO); 
webRtcB.connect(webRtOut, MediaType.AUDIO); 
+0

ja von mediapipeline Ich meine Medienquelle, können Sie zeigen, eine bestimmte Methode, die verwendet werden kann, wenn ich mit einem kms-Filter versuchen möchte, was sollte ich dabei in Betracht ziehen –

+1

@SagarPilkhwal Ich denke, dass die Zusammensetzung könnte nur funktionieren wie du es erwartest. Probieren Sie es gleich aus, und Sie können wahrscheinlich Ihren eigenen Filter erstellen. – igracia

+1

Sie brauchen dafür kein Composite, siehe meine Antwort – santoscadenas

Verwandte Themen