ios - iOS 视频应用程序的背景音频

标签 ios objective-c audio avcapturesession

所以我正在开发一个播放背景音频(来自 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;

最佳答案

我认为中断的原因是您在每种情况下都在更新类别。您可以仅在需要时使用以下功能来检查和更新类别。

-(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;
}

关于ios - iOS 视频应用程序的背景音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979485/

相关文章:

objective-c - iOS 钥匙串(keychain)问题。作为 SecItemCopyMatching() 的结果,SecKeyRef 始终为 null

ios - 如何在 Swift 3 的子类中覆盖 Init()

ios - UIView 框架在 UIViewControllerContextTransitioning animateTransition : 中移动时重置

ios - NSObject增加指针

ios - 将数据从 ViewController 传递到 AppDelegate

objective-c - NSInteger = NSInteger -1?

ios - AVAudioPlayer 没有快速播放音频

ios - 音频不在 AVCaptureSession 中录制

iphone - 如何设置 UISegmentedControl 的背景图片

unity3d - 使统一音频播放与原始WAV文件完全相同的高频音频以进行听力测试