react-native-video 使麦克风静音

react-native-video mutes the microphone

在 webRTC 调用期间播放视频时,它会导致本地流在不使轨道静音的情况下静音(音频轨道仍将 enabled 属性设置为 true)。当 Video 组件的 'muted' 属性设置为 true 或在通话开始前播放视频统计时不会发生,但在通话期间将视频静音或取消静音后,麦克风仍然断开连接。视频组件必须访问麦克风。你知道怎么修吗?发生在 IOS 14,Xcode 12.2

多亏了这个,我修复了它。 ios/Video/RTCVideo.m 中的 AVAudioSession 有问题。事实证明,AVFoundation 中的默认设置允许使用麦克风或扬声器(一次一个),因此安装视频组件或执行任何建立 AVAudioSession 的操作都会干扰其他组件使用麦克风。

我更改了这部分代码:

- (void)setPaused:(BOOL)paused
{
  if (paused) {
    [_player pause];
    [_player setRate:0.0];
  } else {
    if([_ignoreSilentSwitch isEqualToString:@"ignore"]) {
//      [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; OLD
      [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error:nil]; //NEW
    } else if([_ignoreSilentSwitch isEqualToString:@"obey"]) {
      [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
    }
    [_player play];
    [_player setRate:_rate];
  }
  
  _paused = paused;
}

此修复仅在 Video 组件中的 ignoreSilentSwitch 设置为 'ignore'

时有效