相关定义均在KSMediaPlayerConfig类中
/**
* @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) {
}
/**
* 当前是否支持HDR
*
* @return
*/
public static boolean isSupportHDR() {
}
/**
* 判断机型是否支持硬解
*
* @return 1支持硬解 0只支持软解
*/
public static boolean isSupportHwDecode() {
}
/**
* 设置日志回调
*
* @param listener
*/
public static void setLogListener(KSMediaPlayerLogListener listener) {
}
如果业务不想自己生成deviceid,可以使用sdk提供的生成deviceid的api:
/**
* 获取当前设备唯一标识符
*
* @param context
* @return string
*/
public static String generateDeviceId(Context context) {
}
播放器初始状态为Initialized,生命周期内其状态变迁如下图所示(其中单箭头代表方法触发状态变化,双箭头表示状态变化时有事件回调):
其相关定义在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 {
}
/**
* 设置渲染目标
*
* @param surface
*/
void setSurface(Surface surface);
/**
* 设置videoContext
* 上下滑时提前创建播放器进行preload,在下滑时更新更新videoContext.clickTime计算用户首屏
* 业务层需要上报的其他信息,可添加到mExtra字段
*
* @param videoContext
* @see KSMediaPlayerVideoContext
*/
void setVideoContext(KSMediaPlayerVideoContext videoContext);
/**
* 异步准备播放器
*
* @return 0 if success, else return a negative number
*/
void prepareAsync();
/**
* 开始播放,在prepared状态后调用
*/
void start() throws Exception;
/**
* 暂停播放
*/
void pause() throws Exception;
/**
* 改变视频播放位置到某个时间点
*/
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);
/**
* @description 是否准备完成
* @return true 代表播放器已准备完成,false代表未准备完成
*/
boolean isPrepared();
/**
* 检查当前播放器是否处于播放状态
*
* @return true or false
*/
boolean isPlaying();
/**
* 返回是否开启loop
*
* @return true代表loop,默认false
*/
boolean isLooping();
/**
* 获取当前播放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();
/**
* 获取调试信息
* @see KSMediaPlayerDebugInfo
* @return
*/
KSMediaPlayerDebugInfo getDebugInfo();
/**
* 停止播放
*/
void stop() throws Exception;
/**
* 异步释放播放器并上报播放埋点
*/
void releaseAsync(OnPlayerReleaseListener listener);
/**
* 获取针对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);
在播放视频前进行数据下载,为后续视频播放提供数据缓存,提升播放体验。通常只下载备选视频的头部数据,从而实现快速起播的同时避免带宽的浪费。
预加载的实现只需创建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() {}
播放SDK使用快手转码的videoId向快手播放服务请求媒资信息进行播放,接入方无需关注更多实现细节即可低成本接入整套播放方案。
videoId播放方案在创建播放器和预加载任务和url播放方案的方案不同,其余可参考url播放实现
相关定义在KSMediaPlayerBuilder
/**
* 支持playToken播放
*
* @param source
* @return
*/
@Keep
public KSMediaPlayerBuilder setPlayTokenSource(KSPlayTokenSource source) {}
相关定义在PlayTokenPrefetchTask
/**
* 构造videoId预加载任务
* @param source 数据源
* @param priority 优先级
*/
public PlayTokenPrefetchTask(KSPlayTokenSource source, int priority) {}
/**
* videoId播放数据源
* @param videoId 快手转码视频id
* @param playToken token
*/
public KSPlayTokenSource(String videoId, String playToken) {}
/**
* 设置点播播放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刷新监听
*
* @param listener
* @see OnErrorRefreshUrlInternalListener
*/
void setOnErrorRefreshUrlListener(OnErrorRefreshUrlListener listener);
/**
* 设置manifest档位选择监听
*
* @param listener
* @see OnRepresentationSelectListener
*/
void setOnRepresentationSelectListener(OnRepresentationSelectListener listener);
/**
* 设置下载监听
*
* @param listener
* @see OnCacheListener
*/
void setOnDownloadListener(KSMediaPlayerDownloadListener listener);
/**
* 设置字幕相关回调
*
* @param listener
*/
void setOnSubtitleListener(OnSubtitleListener listener);
参考demo音频焦点申请释放逻辑
其相关定义在KSMediaPlayerUtils类中
/**
* 获取deviceid
* @return deviceid
*/
@Keep
public static String getDeviceId() {}
其相关定义在KSManifestUtil类中。如果开启so动态下发,需要在构建播放器传入相应播放器类型,不开启可忽略。
/**
* 获取快手播放器档位列表
* @param manifest string
* @return 快手档位
*/
@Keep
public static KSManifest getKSManifest(String manifest) {}
定义在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() {}
/**
* 设置渲染目标
*
* @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();
/**
* 设置OnBufferListener
*
* @param listener
*/
void setOnBufferListener(OnBufferListener listener);
/**
* 设置OnRenderListener
*
* @param listener
*/
void setOnRenderListener(OnRenderListener listener);
/**
* 设置OnStateChangeListener
*
* @param listener
*/
void setOnStateChangeListener(OnStateChangeListener listener);
/**
* 设置OnSeiInfoListener
*
* @param listener
*/
void setOnSeiInfoListener(OnSeiInfoListener listener);
/**
* 设置错误监听
*
* @param listener
*/
void setOnErrorListener(OnErrorListener listener);
/**
* 设置OnVideoSizeChangedListener
*
* @param listener
*/
void setOnVideoSizeChangedListener(OnVideoSizeChangedListener listener);
以下相关定义均在KSMediaPlayerConstants类中
//开始渲染视频
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;
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;
...
}
}
}
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;
int KS_MEDIA_PLAYER_REFRESH_URL_UNKNOWN = 0;
int KS_MEDIA_PLAYER_REFRESH_URL_HTTP403 = 403;
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;
int KS_MEDIA_PLAYER_TYPE_KWAI = 1
int KS_MEDIA_PLAYER_TYPE_SYSTEM = 2
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;
}
interface KSMediaPlayerDownloadNetworkType {
int TYPE_UNKNOWN = 0; // 未知
int TYPE_MOBILE = 1; // 移动
int TYPE_WIFI = 2; // WIFI
}
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";
}