播放组件提供原生js方式接入,React组件方式接入,Vue2/Vue3组件方式接入。原生js、React、Vue的API和事件名称有差异,需要注意。
播放器的属性、API及事件参考了HTMLVideoElement的实现。
需要参考的文档:
以下属性同HTMLVideoElement
属性 | 定义 | 备注 |
---|---|---|
crossOrigin | 跨域设置 | |
preload | 当前视频预加载设置 | |
defaultPlaybackRate | 默认播放速度 | |
playbackRate | 播放速度 | |
autoplay | 自动播放 | |
loop | 循环播放开关 | |
controls | 播放控件显示开关 | |
volume | 音量 | |
muted | 静音 | |
defaultMuted | 默认静音 | |
poster | 封面图 | |
disablePictureInPicture | 画中画是否可用开关 | |
playsinline | 手机H5小窗播放开关 | |
buffered | 缓存范围 | 只读 |
duration | 视频时长 | 只读 |
ended | 是否播放结束 | 只读 |
error | 错误信息 | 只读 |
played | 已播放范围 | 只读 |
readyState | 视频状态 | 只读 |
seekable | 可seek范围 | 只读 |
seeking | 是否处于seek状态中 | 只读 |
networkState | 当前视频加载网络状态 | 只读 |
paused | 是否暂停状态 | 只读 |
videoWidth | 视频源宽 | 只读 |
videoHeight | 视频源高 | 只读 |
暂未实现的属性
width/height暂不支持,需要使用样式控制
与HTMLVideoElement有差异的属性
可传入视频URL、manifest JSON、File。可传入空字符串进入停止状态
定义同HTMLVideoElement,用于控制播放控件,可选值有不同
controls===‘origin’时是否使下载功能可用
自适应码率是否可用,默认:true
以上已实现的可写属性均可在构造函数中传入
get: 返回当前正在加载的流index
set: 立即切换至指定的流index
设置为-1,切换至自动码率
get: 返回下一个加载的流index
set: 下一个切换的视频流index
设置为-1,切换至自动码率
get: 返回当前的音频轨index
set: 立即切换至指定的音频轨index
get: 返回当前播视频总帧数
get: 返回当前播放位置对应的帧index
set: seek至指定帧
get: 设置是否显示进度条
set: 获取当前是否显示进度条
totalVideoFrames>0时可用
以下API同HTMLVideoElement
以下API暂未实现
与HTMLVideoElement有差异的API
构造函数
参数说明:
type KwaiPlayerData = {
src: any;
crossOrigin?: string;
preload?: string;
defaultPlaybackRate?: number;
playbackRate?: number;
autoplay?: boolean;
loop?: boolean;
controls?: boolean | string;
volume?: number;
muted?: boolean;
defaultMuted?: boolean;
poster?: string;
disablePictureInPicture?: boolean;
disableDownload?: boolean;
disableAdaptive?: boolean;
playsinline?: boolean;
plugins: { [key in string]: object }; // 参见插件说明
};
销毁
是否全屏
请求全屏
type?: "window" | "system"
窗口全屏 | 系统全屏
退出全屏
type?: "window" | "system" | undefined
窗口全屏 | 系统全屏 | 自动
进入画中画
以下事件同HTMLVideoElement
属性 | 定义 | 备注 |
---|---|---|
abort | 资源未完全加载时触发,非错误 | |
canplay | 可播时 | |
canplaythrough | 可播时,估计已加载足够数据 | |
durationchange | 视频总时长变更 | |
emptied | 媒体源设置为空时 | |
ended | 播放结束 | |
error | 发生错误 | |
loadeddata | 当前播放位置视频帧加载完成 | |
loadedmetadata | metadata加载完成 | |
loadstart | 开始加载 | |
pause | 进入暂停状态 puased转为true时 | |
play | 进入播放状态 puased转为false时 | |
playing | 播放准备开始时 | |
progress | 加载资源 | |
ratechange | 播放速度变更 | |
resize | 视频源尺寸变更 | |
seeked | seek完成 | |
seeking | seek开始 | |
stalled | 尝试获取数据但是为取到时触发 | |
suspend | 加载数据被挂起 | |
timeupdate | 播放时间变更 | |
volumechange | 音量变更 | |
waiting | 缺少数据导致播放暂停 |
与HTMLVideoElement有差异的事件
以下事件与多清晰度相关
{
levels: {
width: 640, // 宽,可选
height: 360, // 高,可选
qualityType: "360"
qualityLabel: "标清"
}[], // 可用流列表
currentLevel: 3, // 当前流index,
audioTracks?: {
lang: 'en', // 语言
qualityLabel: '',
qualityType: '',
}[], // 可用音频轨
audioTrack?: 0, // 当前音频轨index
}
{
bitrate: 460560, // 码率
smooth: true, // 是否平滑切换
auto: false, // 是否自动
level: 1, // level下标
id: 1, // 切换操作id
}
{
bitrate: 460560, // 码率
smooth: true, // 是否平滑切换
auto: false, // 是否自动
level: 1, // level下标
id: 1, // 切换操作id
}
{
bitrate: 460560, // 码率
smooth: true, // 是否平滑切换
auto: false, // 是否自动
level: 1, // level下标
id: 1, // 切换操作id
}
{
level: 0, // 音频轨id
smooth: false, // 是否平滑切换
auto: false, // 是否自动切换
id: 1 // 切换操作id
}
{
level: 0, // 音频轨id
smooth: false, // 是否平滑切换
auto: false, // 是否自动切换
id: 1 // 切换操作id
}
API相同
React组件事件 | 对应事件 |
---|---|
onAbout | abort |
onCanplay | canplay |
onCanplayThrough | canplaythrough |
onDurationChange | durationchange |
onEmptied | emptied |
onEnded | ended |
onError | error |
onLoadedData | loadeddata |
onLoadedMetadata | loadedmetadata |
onLoadStart | loadstart |
onPause | pause |
onPlay | play |
onPlaying | playing |
onProgress | progress |
onRateChange | ratechange |
onResize | resize |
onSeeked | seeked |
onSeeking | seeking |
onStalled | stalled |
onSuspend | suspend |
onTimeUpdate | timeupdate |
onVolumeChange | volumechange |
onWaiting | waiting |
onManifestParsed | manifestparsed |
onLevelSwitching | levelswitching |
onLevelSwitched | levelswitched |
onLevelSwitchPlaying | levelswitchplaying |
onLevelSwitchFailed | levelswitchfailed |
onAudioTrackSwitching | audiotrackswitching |
onAudioTrackSwitched | audiotrackswitched |
事件相同
以下props同HTMLVideoElement
Vue组件属性对照表
Vue组件 API | 原生js组件属性 |
---|---|
getError | error |
getNetworkState | networkState |
getBuffered | buffered |
getReadyState | readyState |
getSeeking | seeking |
getDuration | duration |
getPaused | paused |
getSeekable | seekable |
getEnded | ended |
getVideoWidth | videoWidth |
getVideoHeight | videoHeight |
getSrc / setSrc | src |
getCrossOrigin / setCrossOrigin | crossOrigin |
getPreload / setPreload | preload |
getCurrentTime / setCurrentTime | currentTime |
getDefaultPlaybackRate / setDefaultPlaybackRate | defaultPlaybackRate |
getPlaybackRate / setPlaybackRate | playbackRate |
getAutoplay / setAutoplay | autoplay |
getLoop / setLoop | loop |
getControls / setControls | controls |
getVolume / setVolume | volume |
getMuted / setMuted | muted |
getDefaultMuted / setDefaultMuted | defaultMuted |
getPoster / setPoster | poster |
getDisablePictureInPicture / setDisablePictureInPicture | disablePictureInPicture |
getPlaysinline / setPlaysinline | playsinline + webkit-playsinline + x5-playsinline |