iOS视频应用的背景音频

8

我正在开发一个视频录制应用,其中播放了背景音乐(来自Spotify或Apple Music)。当我打开我的应用程序并播放音频时,会出现小的音频中断问题。

下面是我在AppDelegate类中的didFinishLaunchingWithOptions方法中允许后台音频播放的代码:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
                                 withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker |     AVAudioSessionCategoryOptionMixWithOthers
                                       error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

有什么方法可以停止这个起始的干扰吗?谢谢!!
编辑
我还要提一下,在设置 AVAudioSession 之后,我设置了我的 AVCaptureSession。我先初始化它再设置属性。
self.session.usesApplicationAudioSession = YES;
self.session.automaticallyConfiguresApplicationAudioSession = NO;

1
为什么不使用 NSError 并查看是否返回了错误,而不是将 nil 传递给错误? - JAL
@JAL 没有出现任何错误。 - yun
你有没有注意到这个问题只出现在 Spotify 上? - NeverHopeless
@NeverHopeless 不,我也在 Apple Music 上听得到。 - yun
1个回答

2
我认为中断的原因是在每个案例中都更新类别。您可以使用以下函数仅在需要时检查并更新类别。
-(BOOL) checkAndUpdateCategory {
    NSError *error;
    AVAudioSession *session = [AVAudioSession sharedInstance];
    BOOL result = [session.category isEqualToString:AVAudioSessionCategoryPlayAndRecord];
    if(!result) {
        result = [session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker |  AVAudioSessionCategoryOptionMixWithOthers error:&error];
        if(error) {
            //Handle Error
            NSLOG(@"Error:%@", error);
        }
    }
    return result;
}

你知道打开应用时 session.category 的值是什么吗? - Okan Kurtuluş
它保持为AVAudioSessionCategoryPlayAndRecord - yun
在这种情况下,似乎[[AVAudioSession sharedInstance] setActive:YES error:nil];部分某种程度上引起了问题,但我不确定为什么?是否有可能从应用程序中访问代码,我怀疑其他原因导致了问题的发生。 - Okan Kurtuluş
请发送至okankurtulus@gmail.com - Okan Kurtuluş

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接