Webrtc 如何修改应答SDP以仅使用Kurento录制音频?

Webrtc 如何修改应答SDP以仅使用Kurento录制音频?,webrtc,sdp,kurento,Webrtc,Sdp,Kurento,我可以使用Kurento媒体服务器录制视频和音频。我在录制纯音频流时遇到问题。从中可以理解,必须修改SDP的答案 目前,我正在向PeerConnection添加只有音频曲目的MediaStream。在服务器端,在返回应答SDP之前,我修改了它。我试着搬走了 以下任何内容(包括)m=video 以下任何内容(包括)a=mid:video 在这两种情况下,浏览器端的PeerConnection#signalingState保持在本地提供的状态 在回答SDP中,媒体流将开始流动,而Kurento将开始

我可以使用Kurento媒体服务器录制视频和音频。我在录制纯音频流时遇到问题。从中可以理解,必须修改SDP的答案

目前,我正在向PeerConnection添加只有音频曲目的MediaStream。在服务器端,在返回应答SDP之前,我修改了它。我试着搬走了

  • 以下任何内容(包括)
    m=video
  • 以下任何内容(包括)
    a=mid:video
  • 在这两种情况下,浏览器端的PeerConnection#signalingState保持在
    本地提供的状态

    在回答SDP中,媒体流将开始流动,而Kurento将开始录制纯音频流,该如何更改

    以下是WebRtcEndpoint#processoffer中的原始答案SDP(从中删除):

    编辑:

    根据库兰托谷歌集团的建议,似乎没有必要修改SDP。至少是库兰托6号。 我只使用音频(使用浏览器中的音频媒体流和浏览器中的音频+视频媒体流)。为此(Ruby中的示例代码):

  • 在RecorderEndpoint builder中指定MediaProfileSpecType
    RecorderEndpoint::builder.new(@pipeline,location)。使用MediaProfile(org.kurento.client.MediaProfileSpecType::WEBM_AUDIO)。build()
  • 连接记录器终结点时指定MediaType(@source为WebRtcEndpoint):
    @source.connect(@recorder,org.kurento.client.MediaType::AUDIO)

  • 您可以将视频流的端口设置为零。这应该表明该流在会话期间被拒绝或禁止进一步使用


    m=video 0 RTP/SAVPF 100

    您必须在此处选择不同的选项。我假设您有一个
    webrtcEp
    和一个
    recoderEp

    • 从客户端发送音频和视频,但仅录制视频:您将同时发送音频和视频,但必须指示录音机仅存储音频

      RecorderEndpoint recoderEp = new RecorderEndpoint.Builder(pipeline, "URI_HERE").withMediaProfile(MediaProfileSpecType.WEBM_AUDIO_ONLY).build();
      webrtcEp.connect(recorderEp, MediaProfile.AUDIO);
      
    • 仅发送音频:将
      getUserMedia
      选项的
      video
      属性设置为false应仅发送音频。如果没有,则表示媒体服务器中webrtc端点的协商中存在错误。我们有一个类似的场景,但只发送视频,它正在工作。如果没有,请报告,以便我们可以修复它

    编辑#1:在任何情况下,都可以方便地指定要录制的媒体类型,或者指定两个端点将通过connect方法进行交换,因此第一个项目符号中写入的内容适用于这两个端点


    编辑#2在创建记录器时,您肯定需要指定
    MediaProfileSpecType

    在建议的更改后,PeerConnection#signalingState进入
    稳定状态。这是一个进步。RecorderEndpoint生成的记录文件仍然没有获得任何数据(大小保持为零)。你还有其他建议吗?是否有方法观察与录制相关的错误事件?我尝试了RecorderEndpoint#addErrorListener,但我没有报告任何内容。在这一点上,我认为它与Kurento Stack的关系比其他任何东西都要大。理想情况下,这应该得到尊重。除非他们忘记检查禁用流的条件。很抱歉我想不出其他任何东西。我必须选择第二个选项:仅从
    getUserMedia
    (即约束
    {video:false,audio:true}
    )请求麦克风,因为当用户期望仅音频通话且请求摄像头访问时,用户可能会感到困惑。这似乎是Kurento WebRTC端点或RecorderEndpoint中的错误,因为录制视频+音频与仅录制视频一样有效。当仅请求麦克风时,录制文件的大小保持为0,并且不会报告任何错误。将向Kurento google group报告问题。开始讨论Kurento google group上的错误:在任何情况下,您都应该在记录器中设置媒体配置文件,并使用
    connect
    方法中最显式的媒体配置文件进行连接。你查过了吗?我查过了。仅发送音频流时使用MediaType.AUDIO,从浏览器发送视频+音频时也尝试使用MediaType.AUDIO。在这两种情况下都不起作用-录制文件一直是空的。@MadisNõmme谢谢,我编辑了这篇文章以添加基于该线程的信息,突出显示媒体配置文件。它已经在那里了,但我想似乎并不明显。
    RecorderEndpoint recoderEp = new RecorderEndpoint.Builder(pipeline, "URI_HERE").withMediaProfile(MediaProfileSpecType.WEBM_AUDIO_ONLY).build();
    webrtcEp.connect(recorderEp, MediaProfile.AUDIO);