【问题标题】:Kurento: multiple mediapipeline muxKurento:多媒体管道复用器
【发布时间】:2016-04-11 10:37:54
【问题描述】:

我正在考虑创建一个 kms 过滤器,它将输入作为 2 个媒体管道 (A) (B) 并输出一个媒体管道 (C),其中包含来自第一个媒体管道 (A) 的视频和来自第二个媒体管道 (B) 的音频。

我很困惑,我应该在 java 级别执行此操作还是在 KMS 过滤级别执行此操作,甚至可以在 Java/KMS 过滤层中实现此目标吗?

【问题讨论】:

    标签: kurento


    【解决方案1】:

    最简单的方法是在一个管道中创建所有内容,因为不同的媒体管道无法轻松共享媒体。所有都可以从客户端(java或js)实现。

    您可以从两个Endpoints(例如WebRtcEndpoints)、webRtcEp1webRtcEp2 接收媒体并使用webRtcEpOut 发射。然后像这样连接它们:

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

    此时,WebRctOut 正在从 webRtcEp1 发射音频,从 webRtcEp2 发射视频。

    【讨论】:

      【解决方案2】:

      通过媒体管道,我认为您指的是媒体来源,对吗?无法混合来自不同管道的媒体。

      您可以使用Composite 混合器元素进行检查。它从未经过测试,但它应该可以工作。混合来自 B 的音频和来自 A 的视频将非常简单。假设您通过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 创建和协商。


      编辑 1

      认为您可能想要混合更多,但正如@santoscadenas 指出的那样,如果您只想混合两种不同类型的流,您可以直接使用WebRtcEndpoint。这也将节省资源并更好地扩展,因为Composite 是一个非常饥饿的东西。取自另一个答案,并根据您的命名约定进行调整,它将是

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

      【讨论】:

      • 是的 mediapipeline 我的意思是媒体源,如果我想尝试使用 kms 过滤器,你能指出任何可以使用的具体方法吗?我应该考虑这样做
      • @SagarPilkhwal 我认为复合材料可能会按您的预期工作。立即尝试一下,您可能可以跳过创建自己的过滤器。
      • 您不需要为此合成,请参阅我的回复
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      相关资源
      最近更新 更多