iOS WebRTC Как заменить входной звук на пользовательский источник - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь заменить источник аудио / видео с помощью встроенного Google WebRTC.Я использую последнюю версию модуля 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, которые используют микрофон в качестве CaptureDevice через CMSampleBufferRef.Я обнаружил поток захвата AVAudioSession, но подключиться к нему не приходится.

Состояние последних заметок о выпуске

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

Похоже, что это состояние любых внешних аудиоустройств (как я хочу сделать)по умолчанию не принимается, поэтому, если я правильно понимаю, я должен изменить библиотеки.

Есть ли ЛЮБОЙ способ, которым я могу легко поменять источник звука?И если нет, то любое руководство о том, где в первую очередь искать изменения библиотек WebRTC, было бы чрезвычайно полезно.

...