import type { CustomEvent } from "../../constructors/events"; import { BaseProps } from "../props"; declare const videoDirection: readonly [ 0, 90, -90 ]; declare const videoObjectFit: readonly [ "contain", "fill", "cover" ]; declare const videoPlayBtnPosition: readonly [ "bottom", "center" ]; declare const videoReferrer: readonly [ "origin", "no-referrer" ]; /** * @value 0 正常竖向 * @value 90 屏幕逆时针90度 * @value -90 屏幕顺时针90度 */ declare type VideoDirection = typeof videoDirection[number]; /** * @value 'contain' 包含 * @value 'fill' 填充 * @value 'cover' 覆盖 */ declare type VideoObjectFit = typeof videoObjectFit[number]; /** * @value 'bottom' controls bar 上 * @value 'center' 视频中间 */ declare type VideoPlayBtnPosition = typeof videoPlayBtnPosition[number]; /** * @value 'origin' 发送完整的referrer * @value 'no-referrer' 不发送 */ declare type VideoReferrer = typeof videoReferrer[number]; /** * picture-in-picture-mode 的合法值 * @internal * @value '[]' 取消小窗 * @value 'push' 路由 push 时触发小窗 * @value 'pop' 路由 pop 时触发小窗 */ declare type VideoPictureInPictureMode = '' | [ ] | 'push' | 'pop' | [ 'push', 'pop' ] | [ 'pop', 'push' ]; /** * 视频。相关 api:[ks.createVideoContext](https://open.kuaishou.com/docs/develop/api-next/media/video/ks.createVideoContext.html#ks-createvideocontext) * * @version {"kma":"1.2.0","ide":"1.22.0"} * */ export declare interface VideoProps extends BaseProps { /** * 要播放视频的资源地址,支持网络路径、本地临时路径 */ src: string; /** * 指定视频时长 * @alpha */ duration?: number; /** * 控制所有的控件展示与隐藏(除了全屏的返回按钮)。 */ controls?: boolean; /** * 是否自动播放 */ autoplay?: boolean; /** * 是否循环播放 */ loop?: boolean; /** * 是否静音播放 */ muted?: boolean; /** * 指定视频初始播放位置 */ initialTime?: number; /** * 在非全屏模式下,是否开启亮度与音量调节手势(废弃,见 vslide-gesture) * @deprecated */ pageGesture?: boolean; /** * 在非全屏模式下,是否开启亮度与音量调节手势(同 page-gesture) * @version {"kma":"1.63.0"} */ vslideGesture?: boolean; /** * 设置全屏时视频的方向 * @version {"kma":"1.68.0"} * @alpha */ direction?: VideoDirection; /** * 控制进度条(包含左右两端的时间文字)的隐藏与展示,小屏和横竖屏全屏均生效。 */ showProgress?: boolean; /** * 控制整个控制条区域(包括播放/暂停、进度条、全屏按钮、静音按钮、倍速按钮等)的显示与隐藏 (仅在全屏下生效)。 */ showBottomControls?: boolean; /** * 是否显示全屏按钮,仅在小屏状态下显示,全屏状态下通过标题旁边的箭头退出全屏 */ showFullscreenBtn?: boolean; /** * 是否显示视频底部控制栏的播放按钮,仅在全屏时显示 */ showPlayBtn?: boolean; /** * 是否开启控制进度的手势 */ enableProgressGesture?: boolean; /** * 当视频大小与 video 容器大小不一致时,视频的表现形式 */ objectFit?: VideoObjectFit; /** * 视频封面的图片网络资源地址,若 controls 属性值为 false 则设置 poster 无效 */ poster?: string; /** * 是否显示静音按钮,仅在全屏时显示 */ showMuteBtn?: boolean; /** * 视频的标题,全屏时在顶部展示 */ title?: string; /** * 播放按钮的位置(仅Android支持) * @alpha */ playBtnPosition?: VideoPlayBtnPosition; /** * 是否开启播放手势,即双击切换播放/暂停 */ enablePlayGesture?: boolean; /** * 当跳转小程序其他页面时,是否自动暂停本页面的视频播放 * @alpha */ autoPauseIfNavigate?: boolean; /** * 当跳转到其它 app 原生页面时,是否自动暂停本页面的视频 * @alpha */ autoPauseIfOpenNative?: boolean; /** * 在全屏模式下,是否开启亮度与音量调节手势 */ vslideGestureInFullscreen?: boolean; /** * 视频前贴广告单元 ID,更多详情可参考开放能力 * @alpha */ adUnitId?: string; /** * 用于给搜索等场景作为视频封面展示,建议使用无播放 icon 的视频封面图,只支持网络地址 * @alpha */ posterForCrawler?: string; /** * 设置小窗模式: push, pop String | Array<'push' | 'pop'> * @alpha */ pictureInPictureMode?: VideoPictureInPictureMode; /** * 是否在小窗模式下显示播放进度 * @alpha */ pictureInPictureShowProgress?: boolean; /** * 是否显示锁屏按钮,仅在全屏时显示 */ showScreenLockButton?: boolean; /** * 是否显示倍速控件。点击倍速控件后可选择倍速,可选值: 0.5/0.75/1.0/1.25/1.5/2 */ showPlaybackRateBtn?: boolean; /** * 控制小屏场景下所有控件消失后展示的红色进度条的显示与隐藏。 */ showBottomProgress?: boolean; /** * 是否允许长按倍速功能。 */ enableLongPressForward?: boolean; /** * 是否显示视频中间的播放按钮。 */ showCenterPlayBtn?: boolean; /** * 显示投屏按钮。安卓在同层渲染下生效,支持 DLNA 协议。可以通过VideoContext的相关方法进行操作。 * @version {"kma":"1.94.0"} */ showCastingButton?: boolean; /** * 格式固定为 `https://miniapi.ksapisrv.com/{appid}/{version}/page-frame.html`,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本; */ referrerPolicy?: VideoReferrer; /** * 当开始/继续播放时触发 play 事件 */ onPlay?: (event: CustomEvent>) => void; /** * 当暂停播放时触发 pause 事件 */ onPause?: (event: CustomEvent>) => void; /** * 当播放到末尾时触发 ended 事件 */ onEnded?: (event: CustomEvent>) => void; /** * 播放进度变化时触发,event.detail = {currentTime, duration} 。触发频率 250ms 一次 */ onTimeUpdate?: (event: CustomEvent>) => void; /** * 视频进入和退出全屏时触发,event.detail = {fullScreen, direction},direction 有效值为 vertical 或 horizontal */ onFullScreenChange?: (event: CustomEvent>) => void; /** * 视频播放出错时触发 */ onError?: (event: CustomEvent>) => void; /** * 同层失败时触发 * @version {"kma":"1.40.0"} */ onRenderError?: (event: CustomEvent<{ videoPlayerId: string; errorCode: number; errMsg: string; }>) => void; /** * 用户选择投屏设备时触发 detail = { state: "success"/"fail" } * @version {"kma":"1.94.0"} */ onCastingUserSelect?: (event: CustomEvent>) => void; /** * 投屏成功/失败时触发 detail = { state: "success"/"fail" } * @version {"kma":"1.94.0"} */ onCastingStateChange?: (event: CustomEvent>) => void; /** * 投屏被中断时触发 * @version {"kma":"1.94.0"} */ onCastingInterrupt?: (event: CustomEvent>) => void; } export {};