iOS WebRTC如何用自定义源替换输入音频

iOS WebRTC如何用自定义源替换输入音频,ios,objective-c,webrtc,replaykit,Ios,Objective C,Webrtc,Replaykit,我正在尝试使用本机google WebRTC替换A/V源。我正在使用最新的Google WebRTC pod和当前的Google演示项目 更换视频源非常简单和快速,音频输入没有那么多 默认麦克风输入在ARDAppClient中设置,如下所示 RTCMediaConstraints *constraints = [self defaultMediaAudioConstraints]; RTCAudioSource *source = [_factory audioSourceWithCon

我正在尝试使用本机google WebRTC替换A/V源。我正在使用最新的Google WebRTC pod和当前的Google演示项目

更换视频源非常简单和快速,音频输入没有那么多

默认麦克风输入在ARDAppClient中设置,如下所示

  RTCMediaConstraints *constraints = [self defaultMediaAudioConstraints];
  RTCAudioSource *source = [_factory audioSourceWithConstraints:constraints];
  RTCAudioTrack *track = [_factory audioTrackWithSource:source
                                            trackId:kARDAudioTrackId];
  [_peerConnection addTrack:track streamIds:@[ kARDMediaStreamId ]];
我想用我想要的任何东西交换源代码,我想获取我想要的任何音频源(一首歌,ReplayKit应用程序音频),进入一个需要的格式,并连接到WebRTC管道中,而不会造成混乱

ReplayKit广播扩展似乎没有任何音频挂钩

- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer
               withType:(RPSampleBufferType)sampleBufferType {
  switch (sampleBufferType) {
    case RPSampleBufferTypeVideo:
      [self.capturer didCaptureSampleBuffer:sampleBuffer];
      break;
    case RPSampleBufferTypeAudioApp:
      break;
    case RPSampleBufferTypeAudioMic:
      break;
    default:
      break;
  }
}
看来我应该可以把AudioApp或AudioMic CMSamplebuffer发送到某个地方

我想要避免的是修改WebRTC库并编译自己的静态框架,但我似乎越来越有可能不得不这样做

我在WebRTC LIB中找不到通过CMSampleBufferRef将话筒用作CaptureDevice的任何地方。我已经找到了一个音频捕获流,但现在还没有实现

最新发行说明状态

Bug
8466
Objc interface for peer connection factory does not allow external    audio device module to be used.
PeerConnection (iOS)
这似乎表明默认情况下不接受任何外部音频设备(如我想做的),因此如果我正确理解这一点,我必须更改libs


有什么方法可以轻松地交换音频源吗?如果没有,任何关于修改WebRTC LIB的指导都将非常有用

您可以使用专门为解决此问题而创建的WebRTC分支:~)


你找到答案了吗?是的,我提交了WebRTC的一个错误。他们的回答几乎是“不可能,也不打算在将来”我很困惑,WebRTC错误8466似乎在您提出问题的几个月前就已经解决了,允许在创建PeerConnection时注入ADM:我对音频设备模块不太了解,是用另一个音频源替换,还是我可以使用任何音频流(比如组合多个音频流并让webrtc使用)