在libjingle_peerconnection中设置WebRTC音频媒体约束以禁用音频处理

时间:2016-04-29 19:50:11

标签: webrtc libjingle

是否可以使用libjingle提供的API禁用所有音频处理?

我试图在OS X上使用libjingle_peerconnection CocoaPod为音频流设置媒体约束。这些约束通常会在JavaScript中传递给getUserMedia()。我的目标是将几个参数设置为false,以基本上禁用所有音频处理。

    let audioPairs = [
        RTCPair(key: "echoCancellation", value: "false"),
        RTCPair(key: "googEchoCancellation", value: "false"),
        RTCPair(key: "googEchoCancellation2", value: "false"),
        RTCPair(key: "googAutoGainControl", value: "false"),
        RTCPair(key: "googAutoGainControl2", value: "false"),
        RTCPair(key: "googNoiseSuppression", value: "false"),
        RTCPair(key: "googHighpassFilter", value: "false"),
        RTCPair(key: "googTypingNoiseDetection", value: "false"),
        RTCPair(key: "googAudioMirroring", value: "false")
    ]

    let audioConstraints = RTCMediaConstraints(mandatoryConstraints: [RTCPair](), optionalConstraints: audioPairs)

我试过了:

  1. 将约束传递到RTCPeerConnectionFactory.peerConnectionWithICEServers(_, constraints, delegate)
  2. 将约束传递到RTCPeerConnection.createAnswerWithDelegate(_, constraints)
  3. 然而,没有任何限制被尊重。音频处理仍然发生。强制执行约束会导致应答/提供握手期间出现故障(因为它们不被允许作为强制参数)。

    我觉得我应该将这些约束传递给类似RTCPeerConnectionFactory.mediaStreamWithLabel(_)RTCPeerConnectionFactory.audioTrackWithID(_)的内容,但此时没有用于传递约束的API。曾经有一个名为RTCPeerConnection.addStream(_, constraints)的方法,但约束参数已被删除。

0 个答案:

没有答案