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



我正在尝试使用本机谷歌WebRTC替换A/V源。我正在使用GoogleWebRTC的最新pod,并使用当前的谷歌演示项目。

更换视频源非常简单快捷,音频输入不那么多。

默认的麦克风输入是在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库中找不到通过CMSampleBufferRef将麦克风用作CaptureDevice的任何地方。我发现了一个AVAudioSession捕获流,但还没有实现。

最近的发行说明状态

Bug
8466
Objc interface for peer connection factory does not allow external    audio device module to be used.
PeerConnection (iOS)

这似乎表明任何外部音频设备(就像我想做的那样(在默认情况下都不被接受,所以如果我正确理解这一点,我必须更改libs。

有没有任何方式可以轻松地交换音频源?如果没有,任何关于更改WebRTC库的第一步指南都将非常有用。

您可以使用WebRTC的这个分叉,它是专门为解决这个问题而创建的:~(

https://github.com/pixiv/webrtc/blob/87.0.4280.142-pixiv0/README.pixiv.en.md

最新更新