我有一个使用 AVPlayer (或 AVQueuePLayer )来播放应用程序记录的本地文件的应用程序 . 一切都很棒 . 但我也希望这可以在正在进行通话时在iPhone上运行(视频是事件录音) . 我发现在电话呼叫期间, avplayerLayer 的视频输入变为空白, AVPlayer 速率变为0(停止),并且忽略所有将速率更改为非零(PLAY)的尝试(速率保持为0) . 似乎没有关于此的任何文档,并且在播放器中检测此条件的唯一方法是播放器已停止并且不会开始播放播放 . 当然,我还检查音频中断和正在进行的呼叫中心呼叫 .

显然,在这种情况下,中断是由呼叫引起的,因此始终存在非活动/恢复或 intactive/background/foreground/resume 转换 . 以及音频路由通知,音频中断 . 所以间接地我知道病情可能正在发生 .

所以问题是:(1)是否有任何直接方法(特定于 AVPlayerAVPlayerLayer )被通知 AVPlayer 处于此非播放模式 . 我现在用"avplayer.rate failed to change rate from 0 to non-zero",但这似乎哈克(和太多"crossing the streams"!)我要通知用户该视频暂时无法播放或者预览,所以他们不认为在App坏了 . 并在iPhone通话结束时通知他们或自动继续播放 . (没有循环过程,每隔500毫秒继续尝试开始播放!)

(2)当iPhone通话(绿条)正在进行时,_2917691可以播放任何内容吗?或者这只是苹果设计 AVPlayer SDK的方式? (如果没有这方面的文件)显然,其他应用程序可以在iPhone通话期间播放视频,但我怀疑他们使用的是较低级别的SDK而不是 AVPlayer .