-
Notifications
You must be signed in to change notification settings - Fork 146
call
shixuemei edited this page Sep 13, 2017
·
1 revision
一般情况下,播放过程中来电不需要用户进行额外处理,SDK内部会暂停住播放,挂断或结束通话后,自动恢复播放。
在iOS系统中,AudioSession被打断,系统会发出AVAudioSessionInterruptionNotification通知,打断类型分为以下两种:
typedef NS_ENUM(NSUInteger, AVAudioSessionInterruptionType)
{
AVAudioSessionInterruptionTypeBegan = 1, /* the system has interrupted your audio session */
AVAudioSessionInterruptionTypeEnded = 0, /* the interruption has ended */
}
播放器内部会监听AVAudioSessionInterruptionNotification消息:
- 打断类型为AVAudioSessionInterruptionTypeBegan时,播放器内部调用pause方法,暂停住播放;
- 打断类型为AVAudioSessionInterruptionTypeEnded时,播放器内部检测到处于被打断的暂停状态,则调用play方法恢复;
由此可以看出,SDK内部的处理,适用于所有AudioSession被打断的场景,并不局限于来电这种情况。
AudioSession被打断的后,恢复播放的效果是什么样子的呢?
暂停时SDK会继续下载数据,但是由于直播延时的控制,延时时间之外的数据会被丢弃。因此如果打断的时间低于设置的延时时间,恢复播放后,用户看到的内容依然是连续的;如果打断的时间超过设置的延时时间,用户看到的内容会有不连续的情况。
有关直播延时的控制,请看这里:https://github.com/ksvc/KSYMediaPlayer_iOS/wiki/liveDelay
暂停时SDK会继续下载数据,直到缓冲区满无法再接收数据,此时网络链接不会被断开,直到恢复播放后,继续下载数据,用户看到的内容是连续的,不会出现中断的情况。
有关缓冲区大小的设置,请看这里:https://github.com/ksvc/KSYMediaPlayer_iOS/wiki/vodBuffer