我正在尝试使用本机 google WebRTC 替换 A/V 源。我正在使用最新的 GoogleWebRTC 并使用当前的 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 Broadcast 扩展似乎没有任何音频挂钩,
- (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)
这似乎表明默认情况下不接受任何外部音频设备(就像我想做的那样),所以如果我正确理解这一点,我必须更改库。
有没有任何方法可以轻松更换音频源?如果没有,任何有关在更改 WebRTC 库时首先查看何处的指导都将非常有帮助。
您可以使用专门为解决此问题而创建的 WebRTC 分支:~)
https://github.com/pixiv/webrtc/blob/87.0.4280.142-pixiv0/README.pixiv.en.md
如何使用这个叉子。可以解释一下吗