关于AVCaptureSession与AVAudioSession导致AVPlayer播放暂停的技术问询
iOS 11.3中AVPlayer与AVCaptureSession切换时的播放暂停问题
我最近排查到一个棘手的兼容性问题,在这里跟大家同步下细节:
当调用-[AVPlayer play]方法后,立即执行两个操作——停止AVCaptureSession并修改AVAudioSession的类别,会导致AVPlayer意外暂停播放。
预期与实际行为差异
- 预期逻辑:Capture会话和Player应该交替切换,同一时间只保持其中一个处于活跃状态
- 实际问题:在iOS 11.3中,停止Capture会话的操作会连带导致正在播放的Player停止;而在iOS 9.3中,这个逻辑运行完全符合预期
复现代码示例
// 启动AVPlayer播放 [self.player play]; // 立即停止AVCaptureSession [self.captureSession stopRunning]; // 修改AVAudioSession类别为播放模式 AVAudioSession *audioSession = [AVAudioSession sharedInstance]; NSError *sessionError = nil; [audioSession setCategory:AVAudioSessionCategoryPlayback error:&sessionError]; if (sessionError) { NSLog(@"Audio session category change failed: %@", sessionError.localizedDescription); }
目前有视频可以直观展示这个问题:正常情况下应该在Capture和Player之间顺畅切换,但iOS 11.3中每次停止Capture时,Player都会被意外暂停。
内容的提问来源于stack exchange,提问作者jft0m
相关产品推荐
相关产品推荐

