Skip to content
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

Clone this wiki locally