Skip to content
Franken Zeng edited this page Jul 27, 2017 · 17 revisions

1. 描述

reload功能可以实现在不销毁播放器的情况下,重新启动拉流。需要注意的是播放内部不会主动调用该方法,建议在发生如下场景时调用该方法:

  • 当播放器调用方发现卡顿时,可以主动调用
  • 当估计出更优质的拉流ip时,可以主动调用
  • 当发生WiFi/3G网络切换时,可以主动调用
  • 快速切换播放内容时,可以主动调用
  • 接收到MPMoviePlayerSuggestReloadNotification消息时,可以主动调用

2. 方法

  • 对是否清除缓冲区及加载模式无要求的情况下,建议使用该方法
  • 该方法会默认清除上一次播放的缓冲区
  • 该方法默认采用的加载方式为MPMovieReloadMode_Fast
  • 对是否清除缓冲区有不同要求的情况下,建议使用该方法
  • 如果reload前后的播放地址相同,建议将flush参数设置为NO,这样不清除缓冲区,可起到继续播放的效果;如果reload前后播放地址不同,建议将flush参数设置为YES,防止播放下个节目时出现上个节目的画面;APP开发可根据实际需要自行选择
  • 该方法默认采用的加载方式为MPMovieReloadMode_Fast
  • APP开发可根据实际情况自行选择reload时是否清除缓冲区以及加载模式
  • 当APP监听到MPMoviePlayerSuggestReloadNotification通知时,请务必调用此方法,并将Mode设置为MPMovieReloadMode_Accurate重新加载码流

3. 加载模式说明

当前reload支持两种加载模式:

typedef NS_ENUM(NSUInteger, MPMovieReloadMode ) {
   MPMovieReloadMode_Fast,
   MPMovieReloadMode_Accurate,
};
  • MPMovieReloadMode_Fast:快速模式,可加快起播速度,但在码流音视频交织较差的情况下,可能无法检测所有音视频流,造成播放时某路流的缺失
  • MPMovieReloadMode_Accurate:精准模式,起播速度会比快速模式有所降低,但可以保证检测到所有音视频流,APP在监听到MPMoviePlayerSuggestReloadNotification通知时调用reload接口,需要将mode设置为精准模式

4.注意事项

该方法通常用于直播场景,点播播放建议使用点播续播来完成重新加载的功能,直接使用该方法会从头开始播放

5. 示例代码

if (_player) {
   [_player reload:_reloadUrl flush:FALSE];
}
Clone this wiki locally