该SDK的大部分API设计方式与Android端播放器SDK类似。
从初始化以及播放器使用两方面来说的话,目前提供的接口主要在6个文件中,这6个文件都可以从sdk的har包中读到。
初始化以及点播直播父类:
./src/main/ets/ksmediaplayer/KSMediaPlayerConfig
./src/main/ets/ksmediaplayer/IKSMediaPlayer
点播相关:
./src/main/ets/ksmediaplayer/vod/IKSVodPlayer
./src/main/ets/ksmediaplayer/vod/KSMediaPlayerBuilder
直播相关:
./src/main/ets/ksmediaplayer/live/IKSLivePlayer
./src/main/ets/ksmediaplayer/live/KSLivePlayerBuilder
当前这6个文件提供的代码和接口如下:
/**
* 设置日志回调监听,可以在回调里搜集日志
* @param level 设置日志级别,小于此级别的日志不会回调
* @param listener 监听器
*/
static setLogConfig(level: KSLogLevel, listener?: KSMediaPlayerLogListener): void;
/**
* 初始化播放器sdk
* @param ctx Context上下文
* @param appId 唯一appId,不能为空,否则初始化失败
* @param did 唯一设备id,如果传空,sdk内部会自己生成一个唯一设备id
*/
static init(ctx: Context, appId: string, did?: string): void;
/**
* 绑定鸿蒙渲染唯一ID
* @param xComponentId 渲染ID
*/
setXComponentId(xComponentId: string): void;
/**
* 是否正在播放
*/
isPlaying(): boolean;
/**
* 获取当前播放url
* @returns 当前播放url
*/
getCurrentPlayUrl(): string;
/**
* 获取当前播放位置, ms
* @returns cur pos
*/
getCurrentPosition(): number;
/**
* 获取播放器实例id
* @returns 播放器实例id
*/
getPlayerId(): number
/**
* 获取播放器内核实例id
* @returns 播放器核实例id
*/
getKernelPlayerId(): number
/**
* 设置音量
* @param leftVolume 左声道音量(0-1)
* @param rightVolume 右声道音量(0-1)
*/
setVolume(leftVolume: number, rightVolume: number): void
/**
* 开启关闭静音
* @param mute 是否静音
*/
setMute(mute: boolean): void;
/**
* 是否是静音
* @returns 是否是静音
*/
getIsMute(): boolean;
/**
* 开始播放
*/
start: () => void;
/**
* 停止播放
* @param cb
*/
stop: (cb?: KSOnStopCompleteListener) => void;
/**
* 销毁播放器
*/
releaseAsync: () => void;
/**
* 设置播放视频分辨率变化监听
* @param listener 监听器
*/
setOnVideoSizeChangedListener(listener: KSOnVideoSizeChangedListener): void;
/**
* 设置错误监听
* @param listener 监听器
*/
setOnErrorListener(listener: KSOnErrorListener): void;
/**
* 设置播放结束监听
* @param listener 监听器
*/
setOnCompletionListener(listener: KSOnCompletionListener): void;
/**
* 是否已经prepared
*/
isPrepared(): boolean;
/**
* 准备播放
*/
prepareAsync: () => void;
/**
* 改变视频播放位置到某个时间点 单位ms
* @param msPos ms位置
*/
seekTo: (msPos: number) => void;
/**
* 从 stop | completion 中恢复,仍是同一次vse
*/
reStart: (msPos: number) => void;
/**
* 倍速播放功能
* @param speed 小于1慢速,大于1快速
*/
setSpeed(speed: number): void;
/**
* 获取当前播放速度
*/
getSpeed(): number
/**
* 暂停
*/
pause: () => void
/**
* 是否暂停
*/
isPaused(): boolean;
/**
* 是否循环播放
*/
isLooping: () => boolean
/**
* 设置循环播放
*/
setLooping(isLooping: boolean): void;
/**
* 主动重试
*/
retryPlayback: () => void
/**
* 视频时常,ms
* @returns duration
*/
getDuration(): number
/**
* 获取调试信息
* @returns debuginfo
*/
getDebugInfo(): KwaiPlayerDebugInfo | undefined;
/**
* 设置字幕选中状态
* @param index 选中的字幕index
* @param selected 是否选中
*/
setSubtitleSelected: (index: number, selected: boolean) => void;
/**
* 设置字幕相关回调
* @param listener 监听
*/
setOnSubtitleListener: (listener: KSOnSubtitleListener) => void;
/**
* 设置播放器准备完成监听
* @param listener 监听
*/
setOnPreparedListener(listener: KSOnPreparedListener): void
/**
* 设置播放器进度改变监听
* @param listener 监听
*/
setOnProgressChangeListener(listener: KSOnProgressChangeListener): void
/**
* 设置首帧回调监听
* @param listener 监听
*/
setOnFirstFrameRenderingStart(listener: KSOnFirstFrameRenderingStart): void
/**
* 设置渲染开始的监听
* @param listener 监听
*/
setOnRenderingStartListener(listener: KSOnRenderingStart): void
/**
* 设置第一帧解码完成监听
* @param listener 监听
*/
setOnDecodeFirstFrame(listener: KSOnDecodeFirstFrame): void
/**
* 设置事件监听
* @param listener 监听
*/
setOnEventListener(listener: KSOnEventListener): void
/**
* 设置buffer进度监听
* @param listener 监听
*/
setOnBufferingUpdate(listener: KSOnBufferingUpdate): void
// 多码率相关接口
/**
* 切换url
* @param url 新的播放地址
* @param cacheKey 自定义cacheKey
*/
switchVideoQuality(url: string, cacheKey?: string): void
/**
* 设置多码率列表回调
* @param listener 多码率监听器
*/
setOnRepresentationListReadyListener(listener: KSOnRepresentationListReadyListener): void
/**
* 获取视频的宽度
* @returns width
*/
getVideoWidth(): number | undefined
/**
* 获取视频的高度
* @returns height
*/
getVideoHeight(): number | undefined
/**
* 设置数据源 单url
* @param url 单播放地址
* @param cacheKey 自定义cacheKey
* @returns this
*/
setDataSourceUrl(url: string, cacheKey?: string): KSMediaPlayerBuilder;
/**
* 设置数据源url列表
* @param reps 播放列表
* @param defaultUrl 默认播放的url
* @returns this
*/
setDataSourceList(z9: Array<KSRepresentation>, a10?: string): KSMediaPlayerBuilder;
/**
* 设置数据源
* @param str 符合快手多码率manifest json结构的字符串
* @returns this
*/
setDataSourceManifest(str: string): KSMediaPlayerBuilder;
/**
* 获取数据源
* @returns 数据源
*/
getDataSource(): IVodDatasource | undefined;
/**
* 设置视频id
* @param id
* @returns this
*/
setVideoId(id: string): KSMediaPlayerBuilder;
/**
* 获取视频id
* @returns videoId
*/
getVideoId(): string | undefined;
/**
* 设置拉取数据源接口,在播放器报错403时会重新拉取数据源
* @param fetcher 数据源拉取实现
* @returns this
*/
setDataSourceFetcher(x9: KSVodDataSourceFetcher): KSMediaPlayerBuilder;
/**
* 获取拉取数据源实现
* @returns 拉取数据源实现
*/
getDataSourceFetcher(): KSVodDataSourceFetcher | undefined;
/**
* 设置开播位置
* @param msPos 开播位置(ms)
* @returns this
*/
setStartPosition(w9: number): KSMediaPlayerBuilder;
/**
* 获取设置的开播位置参数(ms)
* @returns 开播位置(ms)
*/
getStartPosition(): number;
/**
* 设置开播类型:
* @param type 0:预读数据 + 提前准备解码器和解码线程,推荐用这个模式; 1:只预读数据,不开启解码和解码线程; 2:自动开播(默认)
* @returns this
*/
setStartType(type: KSStartPlayType): KSMediaPlayerBuilder;
/**
* 获取设置过的开播类型
* @returns
*/
getStartType(): number;
/**
* 设置是否从上次播放历史进度起播
* @param enable true开启 false关闭
* @returns this
*/
setStartFromHistory(enable: boolean): KSMediaPlayerBuilder;
/**
* 获取设置的是否从上次播放历史进度起播的值
* @returns startFromHistory
*/
getStartFromHistory(): boolean;
/**
* 设置是否循环播放
* @param loop true循环 false不循环
* @returns this
*/
setLoop(loop: boolean): KSMediaPlayerBuilder;
/**
* 获取设置的是否循环播放
* @returns 是否循环播放
*/
getLoop(): boolean;
/**
* 设置静音起播
* @param mute true静音 false不静音
* @returns this
*/
setMute(mute: boolean): KSMediaPlayerBuilder;
/**
* 获取设置的是否静音起播
* @returns 静音起播开关
*/
getMute(): boolean;
/**
* 强制软硬解
* @param type 0默认 1强制硬解 2强制软解
* @returns this
*/
setForceDecodeType(type: VideoCodecType): KSMediaPlayerBuilder;
/**
* 获取设置的软硬解设置
* @returns 软硬解设置
*/
getForceDecodeType(): VideoCodecType;
/**
* 设置是否精准seek
* @param enable 开关
* @returns this
*/
setEnableAccurateSeek(enable: boolean): KSMediaPlayerBuilder;
/**
* 获取设置过的精准seek开关
* @returns 精准seek开关
*/
getEnableAccurateSeek(): boolean;
/**
* 设置关闭本地缓存,true代表视频不会缓存到本地,默认false
* @param disable 是否关闭
* @returns this
*/
setDisableLocalCache(disable: boolean): KSMediaPlayerBuilder;
/**
* 获取设置的disableLocalCache开关
* @returns disableLocalCache
*/
getDisableLocalCache(): boolean;
/**
* 多码率
* @returns 档位id(>=0)或者策略值(固定的小于0的枚举值KSSwitchCode)
*/
getRepId(): number;
/**
* 设置多码率档位id,必须是>=0
* @param id 档位id
* @returns this
*/
setRepresentationId(id: number): KSMediaPlayerBuilder;
/**
* 设置多码率策略,必须是固定的小于0的枚举值KSSwitchCode
* @param policy 策略
* @returns this
*/
setRepresentationPolicy(policy: KSSwitchCode): KSMediaPlayerBuilder;
/**
* 设置字幕列表
* @param subtitles 字幕列表
* @param selectIndex 默认的选中的index
* @returns this
*/
setSubtitle(u9: string[], v9: number): KSMediaPlayerBuilder;
/**
* 获取设置的字幕列表
* @returns 字幕列表
*/
getSubtitle(): [
string[],
number
];
/**
* 是否开启强制首帧渲染
* @param enable true开启 false关闭
* @returns this
*/
setEnableFirstFrameForceRender(enable: boolean): KSMediaPlayerBuilder;
/**
* 获取设置过的强制首帧渲染开关
* @returns 强制首帧渲染开关
*/
getEnableFirstFrameForceRender(): boolean;
/**
* 设置buffer相关水位, 主要分为开播前和开播后两个阶段, 以首帧为分割
* @param config 配置
* @returns this
*/
setPlayBufferConfig(config: PlayBufferConfig): KSMediaPlayerBuilder;
/**
* 获取设置的buffer相关配置
* @returns buffer配置
*/
getPlayBufferConfig(): PlayBufferConfig;
/**
* 构造播放器实例
* @returns 播放器实例
*/
build(): IKSVodPlayer;
/**
* 获取调试信息
* @returns debuginfo
*/
getDebugInfo(): KwaiPlayerDebugInfo | undefined;
/**
* 设置渲染监听
* @param listener 监听
*/
setRenderListener(listener: KSLivePlayerRenderListener): void
/**
* 设置播放状态变化监听
* @param listener 监听
*/
setStateChangeListener(listener: KSLiveOnStateChange): void
/**
* 直播sei信息回调
* @param listener 回调
*/
setOnSeiInfoListener(listener: KSOnSeiInfo): void
/**
* 设置缓存信息监听
* @param listener 监听
*/
setBufferListener(listener: KSOnLivePlayerBufferListener): void
/**
* 设置m3u8 url hook接口
* @param listener
*/
setLiveRequestListener(listener: KSOnLiveRequestListener): void
/**
* 设置数据源
* @param source 数据源
* @returns this
*/
setDataSource(source: o6): KSLivePlayerBuilder;
/**
* 设置数据源
* @param str 符合快手直播多码率结构的json串
* @returns this
*/
setDataSourceManifest(str: string): KSLivePlayerBuilder;
/**
* 获取设置的数据源
* @returns 数据源
*/
getDataSource(): ILiveDatasource;
/**
* 强制软硬解
* @param type 0默认 1强制硬解 2强制软解
* @returns this
*/
setLiveDecodeType(type: VideoCodecType): KSLivePlayerBuilder;
/**
* 获取设置的强制软硬解配置
* @returns 强制软硬解配置
*/
getLiveDecodeType(): VideoCodecType;
/**
* 设置数据源的拉取, 发生错误时会通过此接口重新拉取数据. 目前是无限次数拉取,业务可以限制重试次数
* @param fet
* @returns this
*/
setLiveDataSourceFetcher(e6?: KSLiveDataSourceFetcher): KSLivePlayerBuilder;
/**
* 获取设置的数据源拉取实现
* @returns 数据源拉取实现
*/
getLiveDataSourceFetcher(): KSLiveDataSourceFetcher | undefined;
/**
* 构造播放器实例
* @returns 播放器实例
*/
build(): IKSLivePlayer;