Skip to content

reconnectAndRestart

xinbaicheng edited this page Mar 17, 2017 · 9 revisions

使用场景

  1. onError或者onCompletion回调
  2. 播放一个新视频

方法

可根据实际情况选择使用以下方法

1.使用reload
2.重置播放器(重连)

需要注意的是,reload接口没有清屏的功能

清屏

在播放新的视频时,部分用户希望清除屏幕内容,屏幕变为黑屏
可以使用播放器提供的reset接口,具体例子如下所示:

Surface mSurface;

ksyMediaPlayer.reset();
ksyMediaPlayer.setDataSource(mUrl);
ksyMediaPlayer.prepareAsync();

ksyMediaPlayer.setSurface(mSurface); // 非常重要,reset之后需重新设置Surface,播放器才能渲染

// 在onPrepared回调里
ksyMediaPlayer.start()

不清屏

部分用户只是重连,不需要清屏,可以使用播放器提供的softReset接口,例子如下所示:

Surface mSurface;

ksyMediaPlayer.softReset();

ksyMediaPlayer.setDataSource(mUrl);
ksyMediaPlayer.prepareAsync();

ksyMediaPlayer.setSurface(mSurface); // 非常重要,reset之后需重新设置Surface,播放器才能渲染

// 在onPrepared回调里
ksyMediaPlayer.start()

3.播放新的视频

Surface mSurface;
// 释放播放器
ksyMediaPlayer.release();
ksyMediaPlayer = null;

// 创建播放器
ksyMediaPlayer = KSYMediaPlayer.Builder(mContext).build();
ksyMediaPlayer.setDataSource(mUrl);
ksyMediaPlayer.prepareAsync();
ksyMediaPlayer.setSurface(mSurface); // 非常重要,reset之后需重新设置Surface,播放器才能渲染

// 在onPrepared回调里
ksyMediaPlayer.start()

重连建议

1.收到MEDIA_INFO_SUGGEST_RELOAD事件时,需要请进reload行重连操作; 2.在直播过程中主播保持推流的情况下收到-1004(超时或IO错误)可进行重连。 3.其它错误-10002,-10004在保证有推流的情况下也可适当进行重连。

Clone this wiki locally