我有一个应用程序使用AVPlayer
(或AVQueuePLayer
)播放由应用程序录制的本地文件。一切都很好。但我也希望它在通话进行时在 iPhone 上工作(视频是事件记录)。我发现在通话期间,视频输入avplayerLayer
变为空白,AVPlayer
速率更改为 0(停止),并且所有将速率更改为非零(播放)的尝试都被忽略(速率保持为 0)。似乎没有任何文档,并且在播放器中检测到这种情况的唯一方法是播放器已停止并且不会开始播放。当然,我还会检查音频中断和正在进行的呼叫中心呼叫。
显然,在这种情况下,中断是由调用引起的,因此总是存在非活动/恢复或intactive/background/foreground/resume
转换。以及音频路由通知、音频中断。所以间接地我知道这种情况可能正在发生。
所以问题是:(1)是否有任何直接方法(特定于AVPlayer
, )在这种非播放模式下AVPlayerLayer
被通知。AVPlayer
我现在使用“avplayer.rate 无法将速率从 0 更改为非零”,但这似乎很奇怪(而且“越界”太多了!)我想通知用户视频暂时无法播放或预览,所以他们不认为应用程序坏了。并在 iPhone 通话结束时通知他们或自动继续播放。(没有不断尝试每 500 毫秒开始播放的循环过程!)
(2)AVPlayer
在 iPhone 通话(绿条)过程中可以播放任何内容吗?还是这只是苹果设计AVPlayer
SDK 的方式?(如果是这样,则没有关于此的文档)显然,其他应用程序可以在 iPhone 通话期间播放视频,但我怀疑它们使用的是较低级别的 SDK 而不是AVPlayer
.