简体中文
主题
简体中文
主题
相关参考:Scene API / 视频
Web 高级 API 提供了三类视频对象创建能力:
createVideo()createAlphaVideo()createKeyingVideo()因为浏览器的媒体自动播放约束策略。会让场景中的视频,在需要播放时,可能播放失败。
因此,kivicube会在用户点击首页上的「立即体验」按钮时,让场景中的音视频媒体静默播放一下。
就可以在之后的体验中,进行任意播放。
这解决了场景中自带音视频对象的自动播放问题。但是对于使用api动态添加的视频,还是会遇到自动播放失败。
因此,插件提供apisetVideoNum来告知插件,应用层会动态添加多少个视频。
而插件就会在点击「立即体验」按钮时,去静默播放更多的视频。在后续调用createVideo或类似api时,就会自动匹配上可以自动播放的video标签,达到可自动播放的效果。
注意
必须在用户点击「立即体验」按钮之前调用,否则无效。
// 告知插件,应用层会动态添加多少个视频
await api.setVideoNum(10);const video = await api.createVideo('https://your.domain.com/ar.mp4');
await api.add(video);const alphaVideo = await api.createAlphaVideo('/assets/glow.mp4');
await api.add(alphaVideo);const keyingVideo = await api.createKeyingVideo(
'/assets/green-screen.mp4',
{
// 被抠出的颜色值,默认#00F400
color: '#00F400',
// 颜色相似度(0~1),默认0.42
similarity: 0.42,
// 柔和度(0~1),默认0.08
smoothness: 0.08,
// 饱和度下降速度(0~1),默认0
spill: 0,
}
);
await api.add(keyingVideo);虽然支持传递ArrayBuffer,但视频文件一般较大,会占用不少内存。更建议传递URL地址来创建视频类对象。
await api.playVideo(video, {
loop: true, // 是否循环播放
full_screen: false // 使其全屏播放
});后续也可以使用setVideoLoop()来修改是否循环
await api.pauseVideo(video);
await api.stopVideo(video);
await api.playbackVideo(video, { loop: false });// 获取视频时长
const duration = await api.getVideoDuration(video);
// 获取视频是否暂停播放
const paused = await api.getVideoPaused(video);
// 获取当前播放的时间点
const currentTime = await api.getVideoCurrentTime(video);
// 获取当前是否循环播放
const loop = await api.getVideoLoop(video);// 让视频跳到某一个时间
await api.setVideoCurrentTime(video, 3.2);
// 设置视频是否循环播放
await api.setVideoLoop(video, true);play - 视频播放时触发function onPlay(event) {
const { type, target } = event;
}
await api.on('play', onPlay, video);pause - 播放暂停时触发function onPause(event) {
const { type, target } = event;
}
await api.on('pause', onPause, video);ended - 自然播放完毕时触发function onEnded(event) {
const { type, target } = event;
}
await api.on('ended', onEnded, video);replay - 重新播放时触发function onReplay(event) {
const { type, target } = event;
}
await api.on('replay', onReplay, video);适合绝大多数平面视频播放场景。
适合你已经准备好了平台支持的透明视频素材(左侧正常视频,右侧透明度),希望直接叠加到场景中。
适合绿幕/蓝幕等抠色类效果,但最终视觉质量高度依赖素材质量和抠色配置。
注意
视频都是在3D场景中呈现,不是以普通的video标签形式在页面上出现。
浏览器对视频自动播放有强限制。即便 Kivicube 内部做了一些处置,以下情况仍要特别注意:
因此视频型内容上线前,务必在真实终端上做一次完整回归。