Skip to content
xinbaicheng edited this page Aug 24, 2016 · 10 revisions

接口定义

// v1.4.6 or earlier
/**
 * @param url 播放地址
 * @param flushBuffer 是否丢弃播放器中旧的数据
 */
public void reload(String url, boolean flushBuffer)

Reload模式定义

// v1.4.7 or later
public enum KSYReloadMode {
    // 选择该模式能更快速的reload
    // 可能存在的问题是在音视频交织不正常的情况下,可能忽略某路流
    KSY_RELOAD_MODE_FAST,
    // 选择该模式reload速度可能较慢,但是更为精确
    KSY_RELOAD_MODE_ACCURATE
}

/**
 * v1.4.7或更新版本,默认使用KSY_RELOAD_MODE_FAST模式
 * @param url 播放地址
 * @param flushBuffer 是否丢弃播放器中旧的数据
 */
public void reload(String url, boolean flushBuffer)

/**
 * v1.4.7或更新版本,flushBuffer默认值为TRUE,会flush播放器旧有数据
 * @param url 播放地址
 * @param reloadMode reload模式
 */
public void reload(String url, KSYReloadMode reloadMode)

使用场景

建议在直播场景下使用

  1. 发起重连的行为
  2. 播放新的视频
  3. 收到onInfo消息:MEDIA_INFO_SUGGEST_RELOAD

注意

当收到onInfo消息:MEDIA_INFO_SUGGEST_RELOAD时建议调用

ksyMediaPlayer.reload(url, KSYReloadMode.KSY_RELOAD_MODE_ACCURATE)

使用示例

KSYMediaPlayer ksyMediaPlayer;

// 假设最初播放地址为mVideoUrl1
String mVideoUrl1 = "http://test.rtmplive.com/live/test1.flv";
String mVideoUrl2 = "http://test.rtmplive.com/live/test2.flv";

// 重新链接
ksyMediaPlayer.reload(mVideoUrl1, false);

// 播放新的视频
ksyMediaPlayer.reload(mVideoUrl2, true);

// v1.4.7 or later
// 播放新视频并快速reload
ksyMediaPlayer.reload(mVideoUrl2, KSYReloadMode.KSY_RELOAD_MODE_FAST);

// reload成功后会有消息回调
public IMediaPlayer.OnInfoListener mOnInfoListener = new IMediaPlayer.OnInfoListener() {
    @Override
    public boolean onInfo(IMediaPlayer iMediaPlayer, int info, int extra) {
        if(info == IMediaPlayer.MEDIA_INFO_RELOADED)
            Log.d(TAG, "Succeed to reload video.");
        return false;
    }
};
Clone this wiki locally