logologo
售前咨询
点播云
产品简介
购买指南
快速入门
控制台指南
服务端API
SDK文档
播放器SDK
Web端播放器
Android端播放器
iOS端播放器
上传SDK
服务端SDK
相关协议
文档中心SDK文档播放器SDKAndroid端播放器快速开始

快速开始


1 SDK初始化

相关定义均在KSMediaPlayerConfig类中

init接口

    /**
* @param app Application必填项
* @param appId appID 需要后台申请
* @param deviceId 设备ID
* @param cachePath setHodorRootPathExtraDirName("some_dir")后,media的缓存路径是:/data/user/0/com.smile.gifmaker/files/.hodor/some_dir/media
* @param listener 初始化结果回调
*/
public static void init(@NonNull final Application app, @NonNull String appId, String deviceId,
String cachePath,
OnInitListener listener) {
KSMediaPlayerConfigInternal.init(app, appId, deviceId, cachePath, listener);
}

日志回调

    /**
* 设置日志回调
*
* @param listener
*/
public static void setLogListener(KSMediaPlayerLogListener listener) {
}

isSupportHDR

    /**
* 当前是否支持HDR
*
* @return
*/
public static boolean isSupportHDR() {
}

isSupportHwDecode

    /**
* 判断机型是否支持硬解
*
* @return 1支持硬解 0只支持软解
*/
public static boolean isSupportHwDecode() {
}

setLogListener

    /**
* 设置日志回调
*
* @param listener
*/
public static void setLogListener(KSMediaPlayerLogListener listener) {
}


generateDeviceId

如果业务不想自己生成deviceid,可以使用sdk提供的生成deviceid的api:

    /**
* 获取当前设备唯一标识符
*
* @param context
* @return string
*/
public static String generateDeviceId(Context context) {
}


2、播放器使用

播放器初始状态为Initialized,生命周期内其状态变迁如下图所示(其中单箭头代表方法触发状态变化,双箭头表示状态变化时有事件回调):


2.1 创建播放器对象

其相关定义在KSMediaPlayerBuilder类中,通过builder设计模式构造播放器实例:

	  @Keep
public KSMediaPlayerBuilder(Context context) {
}

/**
* 强制设置解码器类型, 不设置的默认走播放器的自适应决策树逻辑
* @param decodeType
* @return
*/
@Keep
public KSMediaPlayerBuilder setForceDecodeType(@VideoCodecType int decodeType) {
}

/**
* 设置点播播放地址
*
* @param url 播放地址
*/
@Keep
public KSMediaPlayerBuilder setDataSource(String url) {
}

/**
* 当前url是否允许p2sp播放
* @param enableP2sp
* @return
*/
@Keep
public KSMediaPlayerBuilder enableP2sp(boolean enableP2sp) {
}


@Keep
public KSMediaPlayerBuilder setDataSource(String url, String cacheKey) {
}


/**
* 强制开启TV端的硬解
* @param enable
* @return
*/
@Keep
public KSMediaPlayerBuilder setUseHwTvPlay(boolean enable) {
}

/**
* 设置点播播放地址列表,与setDataSource互斥
*
* @param urlList 播放地址
*/
@Keep
public KSMediaPlayerBuilder setDataSource(List<String> urlList) {
}

/**
* 支持输入快手多码率manifest(多个码率/分辨率档位清单),sdk会根据机型能力、当前网络决策使用某一个码率/分辨率档位
*
* @param manifest
* @return
*/
@Keep
public KSMediaPlayerBuilder setKwaiManifest(String manifest) {
}

/**
* 支持playToken播放
*
* @param source
* @return
*/
@Keep
public KSMediaPlayerBuilder setPlayTokenSource(KSPlayTokenSource source) {
}


/**
* 设置多码率的manifest启播档位
*
* @param id 对应manifest-representation-id字段
* @return
*/
@Keep
public KSMediaPlayerBuilder setKwaiManifestRepId(int id) {
}

@Keep
public KSMediaPlayerBuilder setExtraHeaders(Map<String, String> extraHeaders) {
}

/**
* 设置起播seek
*
* @param seekMs
*/
@Keep
public KSMediaPlayerBuilder seekAtStart(long seekMs) {
}

/**
* 是否在onPrepared后自动起播,启用后不再需要在OnPrepared调用start
*
* @param startOnPrepared
* @return
*/
@Keep
public KSMediaPlayerBuilder setStartOnPrepared(boolean startOnPrepared) {
}

/**
* 是否开启变速不变调
*
* @param enableAdjustRateVoice
* @return
*/
@Keep
public KSMediaPlayerBuilder setEnableAdjustRateVoice(boolean enableAdjustRateVoice) {
}

/**
* 是否从播放历史进行播放
*
* @param enable
* @return
*/
@Keep
public KSMediaPlayerBuilder setPlayFromHistory(boolean enable) {
}

/**
* 设置videoId
*
* @param videoId
* @return
*/
@Keep
public KSMediaPlayerBuilder setVideoId(String videoId) {
}

/**
* 是否开启弹幕防挡
*
* @param enable
* @return
*/
@Keep
public KSMediaPlayerBuilder enableDanmakuMask(boolean enable) {
}

/**
* 设置弹幕防挡render
*
* @param render 在绘制弹幕使用当前render处理,详情见demo使用
* @return
*/
@Keep
public KSMediaPlayerBuilder setDanmakuMaskRender(KSMediaMaskRender render) {
}

/**
* 添加外挂字幕
*
* @param url 字幕对应url
* @param selectIndex 当前字幕添加选中index
* @return 字幕对应index, 关联 KSVodSubtitle.index
*/
@Keep
public KSMediaPlayerBuilder setSubtitle(String[] url, int selectIndex) {
}


/**
* 标识视频view渲染方式,用于校准弹幕防挡
*
* @param renderType
* @return
*/
@Keep
public KSMediaPlayerBuilder setVideoRenderType(KSMediaRenderType renderType) {
}

/**
* 标识弹幕view渲染方式,用于校准弹幕防挡
*
* @param renderType
* @return
*/
@Keep
public KSMediaPlayerBuilder setMaskRenderType(KSMediaRenderType renderType) {
}

/**
* 当前屏幕刷新率,用于校准弹幕防挡
*
* @param frameRate
* @return
*/
@Keep
public KSMediaPlayerBuilder setFrameRate(float frameRate) {
}

/**
* 设置播放器类型,so加载失败会强制使用系统播放器
*
* @param playerType 支持系统播放器和快手播放器
* @return
* @see KSMediaPlayerConstants KS_MEDIA_PLAYER_TYPE_KWAI or KS_MEDIA_PLAYER_TYPE_SYSTEM
*/
@Keep
public KSMediaPlayerBuilder setPlayerType(int playerType) {
}

/**
* 设置首帧预渲染
*
* @param enable
* @return
*/
@Keep
public KSMediaPlayerBuilder enableFirstFrameRender(boolean enable) {
}

/**
* 设置关闭本地缓存,true代表视频不会缓存到本地,默认false
*
* @param disable
* @return
*/
@Keep
public KSMediaPlayerBuilder setDisableLocalCache(boolean disable) {
}

/**
* 视频质量类型,HDR/SDR+必须设置
*
* @param type
* @return
* @see KSMediaPlayerConstants.KSMediaPlayerQualityType
*/
@Keep
public KSMediaPlayerBuilder setVideoQualityType(String type) {
}

/**
* 设置视频类型
* 0 普通
* 1 vr
*
* @param type
* @return
*/
@Keep
public KSMediaPlayerBuilder setStereoType(@KSMediaPlayerConstants.StereoType int type) {
}

/**
* 是否开启精准seek,默认true,一般在纯音频场景使用false
* @param enable 开启
* @return builder
*/
@Keep
public KSMediaPlayerBuilder enableAccurateSeek(boolean enable) {
}

/**
* 是否循环播放
* @param isLoop 循环
* @return builder
*/
@Keep
public KSMediaPlayerBuilder setIsLoop(boolean isLoop) {
}


/**
* 创建点播播放器
*
* @return KSMediaPlayer
*/
@Keep
public IKSMediaPlayer build() throws KSMediaPlayerException {
}


2.2 基础功能

设置渲染目标

    /**
* 设置渲染目标
*
* @param surface
*/
void setSurface(Surface surface);


设置videoContext

    /**
* 设置videoContext
* 上下滑时提前创建播放器进行preload,在下滑时更新更新videoContext.clickTime计算用户首屏
* 业务层需要上报的其他信息,可添加到mExtra字段
*
* @param videoContext
* @see KSMediaPlayerVideoContext
*/
void setVideoContext(KSMediaPlayerVideoContext videoContext);


Prepare准备阶段

    /**
* 异步准备播放器
*
* @return 0 if success, else return a negative number
*/
void prepareAsync();


Play

    /**
* 开始播放,在prepared状态后调用
*/
void start() throws Exception;


Pause

    /**
* 暂停播放
*/
void pause() throws Exception;


Seek

    /**
* 改变视频播放位置到某个时间点
*/
void seekTo(long msec);


设置倍速播放

    /**
* 倍速播放功能
* @param speed 小于1慢速,大于1快速
*/
void setSpeed(float speed);


设置播放音量

    /**
* 设置播放音量
*
* @param leftVolume 左声道音量(0-1)
* @param rightVolume 右声道音量(0-1)
*/
void setVolume(float leftVolume, float rightVolume);


是否prepare完成

    /**
* @description 是否准备完成
* @return true 代表播放器已准备完成,false代表未准备完成
*/
boolean isPrepared();


是否正在播放

    /**
* 检查当前播放器是否处于播放状态
*
* @return true or false
*/
boolean isPlaying();


是否循环播放

    /**
* 返回是否开启loop
*
* @return true代表loop,默认false
*/
boolean isLooping();


获取当前播放url

    /**
* 获取当前播放url
* @return
*/
String getCurrentPlayUrl();


获取视频时长

    /**
* 获取视频时长
*
* @return
*/
long getDuration();


获取播放器类型

    /**
* 获取播放器类型
* @see KSMediaPlayerConstants
* KS_MEDIA_PLAYER_TYPE_SYSTEM 系统播放器
* KS_MEDIA_PLAYER_TYPE_KWAI kwaiplayer
* @return
*/
int getPlayerType();


获取播放进度

    /**
* 获取当前播放位置
*
* @return 单位毫秒
*/
long getCurrentPosition();


获取debugInfo

    /**
* 获取调试信息
* @see KSMediaPlayerDebugInfo
* @return
*/
KSMediaPlayerDebugInfo getDebugInfo();


停止播放

    /**
* 停止播放
*/
void stop() throws Exception;


异步释放播放器

    /**
* 异步释放播放器并上报播放埋点
*/
void releaseAsync(OnPlayerReleaseListener listener);


2.3 高级功能

Cache

    /**
* 获取针对url对应的cache文件缓存的字节数
*
* @param url 数据源
* @return 返回缓存字节数Byte
*/
public static long getCachedSizeWithUrl(String url) {
}
    /**
* 针对url对应的cache文件是否缓存完整
*
* @param url 数据源
* @return true 代表缓存完整
*/
public static boolean isFullyCached(String url) {
}
    /**
* 获取目录的一共缓存了多大的文件
*
* @return 返回缓存字节数Byte
*/

public static long getTotalCachedSize() {
}
    /**
* 清理缓存
*/
public static void clearCache() {
}
		/**
* 自定义生成cacheKey
* @param ksCacheKeyGenerator cache生成器
*/
public static void setCacheKeyGenerator(final KSCacheKeyGenerator ksCacheKeyGenerator) {
}


播放重试

    /**
* 重试播放,由于断网或网络切换导致的播放错误可调用该接口重试播放,重试成功后自动从出错位置开始播放
*
* @return true 重试成功,false 重试失败
*/
void retryPlayback();


清晰度切换

    /**
* 切换清晰度,会恢复进度,有相应事件回调
*
* @param url
* @see KSMediaPlayerConstants
* KS_MEDIA_PLAYER_INFO_VIDEO_QUALITY_SWITCH_START。开始切换
* KS_MEDIA_PLAYER_INFO_VIDEO_QUALITY_SWITCH_END。结束切换,错误则在extra携带
*/
void switchVideoQuality(String url);
    /**
* 自定义cacheKey切换清晰度(自定义cacheKey播放时使用),会恢复进度,有相应事件回调
* @param url
* @param cacheKey 自定义cacheKey,为空使用默认实现
* @see KSMediaPlayerConstants
* KS_MEDIA_PLAYER_INFO_VIDEO_QUALITY_SWITCH_START。开始切换
* KS_MEDIA_PLAYER_INFO_VIDEO_QUALITY_SWITCH_END。结束切换,错误则在extra携带
*
*/
void switchVideoQuality(String url, String cacheKey);
    /**
* manifest切换清晰度,会恢复进度,有相应事件回调
*
* @param qualityType 清晰度类型
* @see KSMediaPlayerConstants
* KS_MEDIA_PLAYER_INFO_VIDEO_QUALITY_SWITCH_START。开始切换
* KS_MEDIA_PLAYER_INFO_VIDEO_QUALITY_SWITCH_END。结束切换,错误则在extra携带
*/
void switchVideoQualityWithType(String qualityType);


网络状态打分

		/**
* 获得网络质量等级level
*
* @return int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_UNKNOWN = 0;
* int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_VERYBAD = 1;
* int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_BAD = 2;
* int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_MEDIUM = 3;
* int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_GOOD = 4;
* @see com.kwai.video.ksmediaplayerkit.KSMediaPlayerConstants
*/
@Keep
public static int getNetworkQuality() {
}


弹幕防挡

特别注意:在使用过程中存在移除弹幕view并重建,需要更新弹幕Rect和视频Rect再进行渲染

相关定义在KSMediaPlayerBuilder

    /**
* 是否开启弹幕防挡
*
* @param enable
* @return
*/
@Keep
public KSMediaPlayerBuilder enableDanmakuMask(boolean enable) {
}
    /**
* 设置弹幕防挡render
*
* @param render 在绘制弹幕使用当前render处理,详情见demo使用
* @return
*/
@Keep
public KSMediaPlayerBuilder setDanmakuMaskRender(KSMediaMaskRender render) {
}
    /**
* 标识视频view渲染方式,用于校准弹幕防挡
*
* @param renderType
* @return
*/
@Keep
public KSMediaPlayerBuilder setVideoRenderType(KSMediaRenderType renderType) {
}
    /**
* 标识弹幕view渲染方式,用于校准弹幕防挡
*
* @param renderType
* @return
*/
@Keep
public KSMediaPlayerBuilder setMaskRenderType(KSMediaRenderType renderType) {
}
    /**
* 当前屏幕刷新率,用于校准弹幕防挡
*
* @param frameRate
* @return
*/
@Keep
public KSMediaPlayerBuilder setFrameRate(float frameRate) {
}
    /**
* 设置vtt文件下载地址
* 由于使用hodor作为内部下载器,所以需要保证在hodor初始化之后调用
*
* @param url vtt地址
* @return 是否设置成功
*/
boolean setDanmakuMaskVttUrl(String url);
    /**
* 更新弹幕View Rect,使用弹幕自身坐标系,
*
* @param danmakuRect
*/
void updateDanmakuRect(RectF danmakuRect);
    /**
* 更新视频显示区域 Rect,为相对弹幕坐标的相对位置
*
* @param videoRect
*/
void updateVideoRect(RectF videoRect);


外挂字幕

目前支持字幕文件格式有ass、srt、vtt。

相关定义在KSMediaPlayerBuilder

    /**
* 添加外挂字幕
*
* @param url 字幕对应url
* @param selectIndex 当前字幕添加选中index
* @return 字幕对应index, 关联 KSVodSubtitle.index
*/
@Keep
public KSMediaPlayerBuilder setSubtitle(String[] url, int selectIndex) {
}

设置字幕选中状态,相关定义在IKSMediaPlayer

    /**
* 设置字幕选中状态
*
* @param index 字幕对应index,关联KSVodSubtitle.index
*/
void setSubtitleSelected(int index, boolean selected);


2.4 预加载

在播放视频前进行数据下载,为后续视频播放提供数据缓存,提升播放体验。通常只下载备选视频的头部数据,从而实现快速起播的同时避免带宽的浪费。

预加载的实现只需创建PrefetchTask后交由单例KSPrefetcher进行add、remove等操作即可。

构造预加载任务

    /**
* 预加载任务
* @param url 媒体文件地址
* @param videoId id
*
* // 进入下载队列,以高优先级执行
* int Priority_HIGH = 3000;
* // 进入下载队列,以中优先级执行
* int Priority_MEDIUM = 2000;
* // 进入下载队列,以低优先级执行
* int Priority_LOW = 1000;
* @param priority 优先级
*/
@Keep
public PrefetchTask(String url, String videoId, int priority) {
}
    /**
* 预加载任务
* @param url 媒体文件地址
* @param customizeCacheKey 自定义cacheKey,媒体文件唯一标识,传null使用默认实现
* @param videoId id
* @param priority 优先级
*/
@Keep
public PrefetchTask(String url, String customizeCacheKey, String videoId, int priority) {
}
    /**
* 预加载任务
* @param urlList 媒体文件地址列表
* @param videoId id
* @param priority 优先级
*/
@Keep
public PrefetchTask(List<String> urlList, String videoId, int priority) {
}
	  /**
* @param manifest 视频manifest
* @param qualityType 指定预加载档位,不需要可传空
* @param videoId 视频id
* @param priority 优先级高的任务,优先进行下载
* @description 构造manifest预加载任务
*/
@Keep
public ManifestPrefetchTask(String manifest, String qualityType, String videoId, int priority) {
}


设置预加载进度回调监听

    /**
* @param listener 回调
* @description 下载进度回调监听
*/
public void setDownloadListener(KSMediaPlayerDownloadListener listener) {
}


获取预加载管理类

相关定义在KSPrefetcher


/**
* @description 预加载管理类,获取KSPrefetcher单例对象
* @return KSPrefetcher对象
*/
@Keep
public static KSPrefetcher getInstance() {
}


管理预加载任务

    /**
* 添加预加载任务
* @param task
* @see AdaptivePrefetchModel
* @see NomalPrefetchModel
* @return 0:成功,< 0:失败
*/
@Keep
public int addTask(BasePrefetchTask task) {}
    /**
* 添加多个预加载任务
* @param taskList 多任务列表
* @see BasePrefetchTask
*/
@Keep
public void addMulTask(List<BasePrefetchTask> taskList) {}
    /**
* 设置当前场景页面名称,用来区分不同页面的统计数据
* @param videoContext 上下文
*/
@Keep
public void setVideoContext(KSPrefetcherVideoContext videoContext){}
    /**
* 暂停所有预加载任务
*/
@Keep
public void pauseAllTasks() {}
    /**
* 恢复所有预加载任务
*/
@Keep
public void resumeAllTasks() {}
    /**
* 移除预加载任务
* @param task
*/
@Keep
public void removePrefetchTask(BasePrefetchTask task) {}
    /**
* 移除所有预加载任务
*/
@Keep
public void removeAll() {}


2.5 videoId播放

播放SDK使用快手转码的videoId向快手播放服务请求媒资信息进行播放,接入方无需关注更多实现细节即可低成本接入整套播放方案。

videoId播放方案在创建播放器和预加载任务和url播放方案的方案不同,其余可参考url播放实现

通过videoId创建播放器

相关定义在KSMediaPlayerBuilder

    /**
* 支持playToken播放
*
* @param source
* @return
*/
@Keep
public KSMediaPlayerBuilder setPlayTokenSource(KSPlayTokenSource source) {}


通过videoId创建预加载

相关定义在PlayTokenPrefetchTask

    /**
* 构造videoId预加载任务
* @param source 数据源
* @param priority 优先级
*/
public PlayTokenPrefetchTask(KSPlayTokenSource source, int priority) {}


videoId播放数据源

    /**
* videoId播放数据源
* @param videoId 快手转码视频id
* @param playToken token
*/
public KSPlayTokenSource(String videoId, String playToken) {}


2.6 设置监听

设置播放prepare监听

    /**
* 设置点播播放prepare监听
*
* @param listener
*/
void setOnPreparedListener(OnPreparedListener listener);


设置播放相关事件监听

    /**
* 设置点播播放相关事件监听
*
* @param listener
*/
void setOnEventListener(OnEventListener listener);


设置播放错误监听器

    /**
* 设置点播播放错误监听器
*
* @param listener
*/
void setOnErrorListener(OnErrorListener listener);


设置播放视频分辨率变化监听

    /**
* 设置点播播放视频分辨率变化监听
*
* @param listener
*/
void setVideoSizeChangedListener(OnVideoSizeChangedListener listener);


设置视频缓冲加载进度监听

    /**
* 设置点播视频缓冲加载进度监听
*
* @param listener
*/
void setBufferingUpdateListener(OnBufferingUpdateListener listener);


设置Url替换回调监听

    /**
* 设置Url刷新监听
*
* @param listener
* @see OnErrorRefreshUrlInternalListener
*/
void setOnErrorRefreshUrlListener(OnErrorRefreshUrlListener listener);


设置manifest播放回调监听

    /**
* 设置manifest档位选择监听
*
* @param listener
* @see OnRepresentationSelectListener
*/
void setOnRepresentationSelectListener(OnRepresentationSelectListener listener);


设置下载进度回调监听

    /**
* 设置下载监听
*
* @param listener
* @see OnCacheListener
*/
void setOnDownloadListener(KSMediaPlayerDownloadListener listener);


设置外挂字幕事件监听

    /**
* 设置字幕相关回调
*
* @param listener
*/
void setOnSubtitleListener(OnSubtitleListener listener);


2.7 其他

音频中断

参考demo音频焦点申请释放逻辑

获取设备Id

其相关定义在KSMediaPlayerUtils类中

    /**
* 获取deviceid
* @return deviceid
*/
@Keep
public static String getDeviceId() {}


获取manifest解析结果

其相关定义在KSManifestUtil类中。如果开启so动态下发,需要在构建播放器传入相应播放器类型,不开启可忽略。

    /**
* 获取快手播放器档位列表
* @param manifest string
* @return 快手档位
*/
@Keep
public static KSManifest getKSManifest(String manifest) {}


3、直播播放器使用

3.1 创建播放器对象

定义在KSLivePlayerBuilder

    /**
* Builder的构造函数
* 必须传入应用的上下文
*/
public KSLivePlayerBuilder(Context context) {}
    /**
* 设置播放地址
*
* @param dataSource 直播地址
*/
public KSLivePlayerBuilder setDataSource(KSLiveDataSource dataSource) {}
    /**
* 设置直播请求头
*
* @param headers
* @return
*/
public KSLivePlayerBuilder setHeaders(Map<String, String> headers) {}
    /**
*
* @param retryCount
* @return 播放器错误重试次数
*/
public KSLivePlayerBuilder setRetryCount(int retryCount) {}
    /**
* 设置播放器重试间隔
* @param retryInterval ms
* @return
*/
public KSLivePlayerBuilder setRetryInterval(long retryInterval) {}
    /**
* 创建LivePlayer实例
*/
public IKSLivePlayer build() {}


3.2 基础功能

设置渲染目标

    /**
* 设置渲染目标
*
* @param surface
*/
void setSurface(Surface surface);


播放控制

    /**
* 检查当前播放器是否处于播放状态
*
* @return true or false
*/
boolean isPlaying();
    /**
* 设置音量
*
* @param left
* @param right
*/
void setVolume(float left, float right);
    /**
* 静音播放
* @param mute true:静音 false:恢复
*/
void setPlayerMute(boolean mute);
    /**
* 开始播放
*/
void start();
    /**
* 异步释放播放器,此后播放器对象不可再用
*/
void releaseAsync();


3.3设置监听

设置播放Buffer监听

    /**
* 设置OnBufferListener
*
* @param listener
*/
void setOnBufferListener(OnBufferListener listener);


设置播放Render监听

    /**
* 设置OnRenderListener
*
* @param listener
*/
void setOnRenderListener(OnRenderListener listener);


设置播放State监听

    /**
* 设置OnStateChangeListener
*
* @param listener
*/
void setOnStateChangeListener(OnStateChangeListener listener);


设置播放SEI监听

    /**
* 设置OnSeiInfoListener
*
* @param listener
*/
void setOnSeiInfoListener(OnSeiInfoListener listener);


设置播放错误监听


/**
* 设置错误监听
*
* @param listener
*/
void setOnErrorListener(OnErrorListener listener);


设置播放视频分辨率变化监听

    /**
* 设置OnVideoSizeChangedListener
*
* @param listener
*/
void setOnVideoSizeChangedListener(OnVideoSizeChangedListener listener);


4、常量定义

以下相关定义均在KSMediaPlayerConstants类中

4.1 事件定义

//开始渲染视频

int KS_MEDIA_PLAYER_EVENT_VDIEO_RENDERING_START;

//开始渲染音频

int KS_MEDIA_PLAYER_EVENT_AUDIO_RENDERING_START;

//开始缓冲数据

int KS_MEDIA_PLAYER_EVENT_BUFFERING_START;

//结束缓冲数据

int KS_MEDIA_PLAYER_EVENT_BUFFERING_END;

//视频比例改变

int KS_MEDIA_PLAYER_INFO_VIDEO_ROTATION_CHANGED;

//结束播放

int KS_MEDIA_PLAYER_INFO_PLAY_TO_END;

//seek完开始渲染视频

int KS_MEDIA_PLAYER_INFO_VIDEO_RENDERING_START_AFTER_SEEK;

//seek完开始渲染音频

int KS_MEDIA_PLAYER_INFO_AUDIO_RENDERING_START_AFTER_SEEK;

//播放状态改变

int KS_MEDIA_PLAYER_PLAYBACK_STATE_CHANGED;

//预拉取完成

int KS_MEDIA_PLAYER_PRELOAD_FINISH;

//切换host开始

int KS_MEDIA_PLAYER_INFO_HOST_SWITCH_START;

//切换host结束

int KS_MEDIA_PLAYER_INFO_HOST_SWITCH_END;

//开始播放

int KS_MEDIA_PLAYER_INFO_PLAY_STARTED;

//结束播放

int KS_MEDIA_PLAYER_INFO_PLAY_FINISHED;

//可以预加载下个视频

int KS_MEDIA_PLAYER_INFO_PLAY_CAN_LOAD_NEXT;

//切换清晰度开始

int KS_MEDIA_PLAYER_INFO_VIDEO_QUALITY_SWITCH_START;

//切换清晰度结束

int KS_MEDIA_PLAYER_INFO_VIDEO_QUALITY_SWITCH_END;

//seek完成

int KS_MEDIA_PLAYER_INFO_MEDIA_ACCURATE_SEEK_COMPLETE;

4.2 播放器状态

  • 播放状态改变 KS_MEDIA_PLAYER_PLAYBACK_STATE_CHANGED 的子事件

int KS_MEDIA_PLAYER_STATE_IDLE;

int KS_MEDIA_PLAYER_STATE_INITIALIZED;

int KS_MEDIA_PLAYER_STATE_ASYNC_PREPARING;

int KS_MEDIA_PLAYER_STATE_PREPARED;

int KS_MEDIA_PLAYER_STATE_STARTED;

int KS_MEDIA_PLAYER_STATE_PLAYING;

int KS_MEDIA_PLAYER_STATE_PAUSED;

int KS_MEDIA_PLAYER_STATE_COMPLETED;

int KS_MEDIA_PLAYER_STATE_STOPPED;

int KS_MEDIA_PLAYER_STATE_ERROR;

For eg:

mKSMediaPlayer.setOnEventListener(new IKSMediaPlayer.OnEventListener() {

@Override

public void onEvent(int what, int extra) {

  switch (what) {

    ...

    case KSMediaPlayerConstants.KS_MEDIA_PLAYER_PLAYBACK_STATE_CHANGED:

      Log.d(TAG, "KS_MEDIA_PLAYER_PLAYBACK_STATE_CHANGED state = " + extra);

      if (extra == KSMediaPlayerConstants.KS_MEDIA_PLAYER_STATE_STARTED) {

        //TODO

      }

    break;

    ...

  }

}

}

4.3 播放器场景

int KS_MEDIA_PLAYER_SCENE_UNKNOWN = 0;

int KS_MEDIA_PLAYER_SCENE_SLIDE_TOP_DOWN = 1;

int KS_MEDIA_PLAYER_SCENE_CLICK_PUSH = 2;

int KS_MEDIA_PLAYER_SCENE_SCROLL_LIST = 3;

4.4 刷新URL原因

int KS_MEDIA_PLAYER_REFRESH_URL_UNKNOWN = 0;

int KS_MEDIA_PLAYER_REFRESH_URL_HTTP403 = 403;

4.5 网络等级

int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_UNKNOWN       = 0;

int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_VERYBAD       = 1;

int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_BAD           = 2;

int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_MEDIUM        = 3;

int KS_MEDIA_PLAYER_NETWORK_QUALITY_LEVEL_GOOD          = 4;

4.6 播放器类型

int KS_MEDIA_PLAYER_TYPE_KWAI = 1

int KS_MEDIA_PLAYER_TYPE_SYSTEM = 2

4.7 下载结束原因

interface KSMediaPlayerDownloadStopReason {

  int STOP_REASON_UNSET = -1;

  int STOP_REASON_UNKNOWN = 0;

  int STOP_REASON_FINISHED = 1;

  int STOP_REASON_CANCELLED = 2;

  int STOP_REASON_FAILED = 3;

  int STOP_REASON_TIMEOUT = 4;

  int STOP_REASON_NO_CONTENT_LENGTH = 5;

  int STOP_REASON_CONTENT_LENGTH_INVALID = 6;

  int STOP_REASON_BYTE_RANGE_INVALID = 7;

  int STOP_REASON_RESOLVE_HOST_FAIL = 8;

  int STOP_REASON_END = 9;

}

4.8 下载使用网络

interface KSMediaPlayerDownloadNetworkType {

  int TYPE_UNKNOWN = 0;   // 未知

  int TYPE_MOBILE = 1;    // 移动

  int TYPE_WIFI = 2;      // WIFI

}

4.9 视频质量类型

interface KSMediaPlayerQualityType {

  String TYPE_HDR = "hdr";

  String TYPE_SDR_PLUS = "sdr+";

  String TYPE_1080P = "1080p";

  String TYPE_720P = "720p";

  String TYPE_576P = "576p";

  String TYPE_540P = "540p";

  String TYPE_480P = "480p";

}





上一篇:集成SDK下一篇:SDK API
该篇文档内容是否对您有帮助?
有帮助没帮助