我试图在视图控制器中运行AVCaptureSession,但在同一控制器中,我也正在从使用AVAudioSession的库中调用函数。我似乎无法从调试器中获取很多信息,除了它在我调用此特定库的函数时完全崩溃之外。该库为libpd:
https://github.com/libpd
并将AVAudioSession称为sharedInstance。我称libpd为:
[self.audioController configurePlaybackWithSampleRate:44100 numberChannels:2 inputEnabled:YES mixingEnabled:YES]
因此启用了混合,但以防万一,我已经对其进行了重新编译,以便在初始化时执行:
UInt32 doSetProperty = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doSetProperty), &doSetProperty);
但是,没有运气。在视图控制器中将对libpd的调用移动到viewWillAppear也不起作用。但是,如果我从视图控制器中取出调用libpd的代码,并将其放在didFinishLaunchingWithOptions中的应用程序委托中,则它会很好地启动,并且两个会话似乎并存而不会崩溃。
我是否缺少有关AVCaptureSession和混合的东西?我如何进行两个会话的共存?我不是使用AVCapture来捕获音频,而只是使用摄像机输入来捕获音频,所以我不应该以某种方式同时进行这两种捕获吗?
最佳答案
开始摄像头会话后,开始音频会话(可以将其设置为支持混音)。我尝试过,并且您需要在开始音频会话之前等待摄像机的设置(例如,等待几秒钟)