{
  "title": "video",
  "type": "object",
  "properties": {
    "src": {
      "type": "string",
      "description": "要播放视频的资源地址，支持网络路径、本地临时路径、云文件ID（2.3.0）"
    },
    "duration": {
      "type": "number",
      "description": "指定视频时长"
    },
    "controls": {
      "type": "boolean",
      "description": "是否显示默认播放控件（播放/暂停按钮、播放进度、时间）",
      "defaultValue": true
    },
    "danmu-list": {
      "type": "array.<object>",
      "description": "弹幕列表"
    },
    "danmu-btn": {
      "type": "boolean",
      "description": "是否显示弹幕按钮，只在初始化时有效，不能动态变更",
      "defaultValue": false
    },
    "enable-danmu": {
      "type": "boolean",
      "description": "是否展示弹幕，只在初始化时有效，不能动态变更",
      "defaultValue": false
    },
    "autoplay": {
      "type": "boolean",
      "description": "是否自动播放",
      "defaultValue": false
    },
    "loop": {
      "type": "boolean",
      "description": "是否循环播放",
      "defaultValue": false
    },
    "muted": {
      "type": "boolean",
      "description": "是否静音播放",
      "defaultValue": false
    },
    "initial-time": {
      "type": "number",
      "description": "指定视频初始播放位置",
      "defaultValue": 0
    },
    "page-gesture": {
      "type": "boolean",
      "description": "在非全屏模式下，是否开启亮度与音量调节手势（废弃，见 vslide-gesture）",
      "defaultValue": false
    },
    "direction": {
      "type": "number",
      "description": "设置全屏时视频的方向，不指定则根据宽高比自动判断",
      "enum": [
        "0",
        "90",
        "-90"
      ]
    },
    "show-progress": {
      "type": "boolean",
      "description": "若不设置，宽度大于240时才会显示",
      "defaultValue": true
    },
    "show-fullscreen-btn": {
      "type": "boolean",
      "description": "是否显示全屏按钮",
      "defaultValue": true
    },
    "show-play-btn": {
      "type": "boolean",
      "description": "是否显示视频底部控制栏的播放按钮",
      "defaultValue": true
    },
    "show-center-play-btn": {
      "type": "boolean",
      "description": "是否显示视频中间的播放按钮",
      "defaultValue": true
    },
    "enable-progress-gesture": {
      "type": "boolean",
      "description": "是否开启控制进度的手势",
      "defaultValue": true
    },
    "object-fit": {
      "type": "string",
      "description": "当视频大小与 video 容器大小不一致时，视频的表现形式",
      "defaultValue": "contain",
      "enum": [
        "contain",
        "fill",
        "cover"
      ]
    },
    "poster": {
      "type": "string",
      "description": "视频封面的图片网络资源地址或云文件ID（2.3.0）。若 controls 属性值为 false 则设置 poster 无效"
    },
    "show-mute-btn": {
      "type": "boolean",
      "description": "是否显示静音按钮",
      "defaultValue": false
    },
    "title": {
      "type": "string",
      "description": "视频的标题，全屏时在顶部展示"
    },
    "play-btn-position": {
      "type": "string",
      "description": "播放按钮的位置",
      "defaultValue": "bottom",
      "enum": [
        "bottom",
        "center"
      ]
    },
    "enable-play-gesture": {
      "type": "boolean",
      "description": "是否开启播放手势，即双击切换播放/暂停",
      "defaultValue": false
    },
    "auto-pause-if-navigate": {
      "type": "boolean",
      "description": "当跳转到本小程序的其他页面时，是否自动暂停本页面的视频播放",
      "defaultValue": true
    },
    "auto-pause-if-open-native": {
      "type": "boolean",
      "description": "当跳转到其它微信原生页面时，是否自动暂停本页面的视频",
      "defaultValue": true
    },
    "vslide-gesture": {
      "type": "boolean",
      "description": "在非全屏模式下，是否开启亮度与音量调节手势（同 page-gesture）",
      "defaultValue": false
    },
    "vslide-gesture-in-fullscreen": {
      "type": "boolean",
      "description": "在全屏模式下，是否开启亮度与音量调节手势",
      "defaultValue": true
    },
    "show-bottom-progress": {
      "type": "boolean",
      "description": "是否展示底部进度条",
      "defaultValue": true
    },
    "ad-unit-id": {
      "type": "string",
      "description": "视频前贴广告单元ID，更多详情可参考开放能力视频前贴广告"
    },
    "poster-for-crawler": {
      "type": "string",
      "description": "用于给搜索等场景作为视频封面展示，建议使用无播放 icon 的视频封面图，只支持网络地址"
    },
    "show-casting-button": {
      "type": "boolean",
      "description": "显示投屏按钮。安卓在同层渲染下生效，支持 DLNA 协议；iOS 支持 AirPlay 和 DLNA 协议。可以通过VideoContext的相关方法进行操作。",
      "defaultValue": false
    },
    "picture-in-picture-mode": {
      "type": [
        "string",
        "any[]"
      ],
      "description": "设置小窗模式： push, pop，空字符串或通过数组形式设置多种模式（如： [\"push\", \"pop\"]）",
      "enum": [
        "[]",
        "push",
        "pop"
      ]
    },
    "picture-in-picture-show-progress": {
      "type": "boolean",
      "description": "是否在小窗模式下显示播放进度",
      "defaultValue": false
    },
    "enable-auto-rotation": {
      "type": "boolean",
      "description": "是否开启手机横屏时自动全屏，当系统设置开启自动旋转时生效",
      "defaultValue": false
    },
    "show-screen-lock-button": {
      "type": "boolean",
      "description": "是否显示锁屏按钮，仅在全屏时显示，锁屏后控制栏的操作",
      "defaultValue": false
    },
    "show-snapshot-button": {
      "type": "boolean",
      "description": "是否显示截屏按钮，仅在全屏时显示",
      "defaultValue": false
    },
    "show-background-playback-button": {
      "type": "boolean",
      "description": "是否展示后台音频播放按钮",
      "defaultValue": false
    },
    "background-poster": {
      "type": "string",
      "description": "进入后台音频播放后的通知栏图标（Android 独有）"
    },
    "referrer-policy": {
      "type": "string",
      "description": "格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html，其中 {appid} 为小程序的 appid，{version} 为小程序的版本号，版本号为 0 表示为开发版、体验版以及审核版本，版本号为 devtools 表示为开发者工具，其余为正式版本；",
      "defaultValue": "no-referrer",
      "enum": [
        "origin",
        "no-referrer"
      ]
    },
    "is-drm": {
      "type": "boolean",
      "description": "是否为 DRM 视频源"
    },
    "is-live": {
      "type": "boolean",
      "description": "是否为直播源"
    },
    "provision-url": {
      "type": "string",
      "description": "DRM 设备身份认证 url，仅 is-drm 为 true 时生效 (Android)"
    },
    "certificate-url": {
      "type": "string",
      "description": "DRM 设备身份认证 url，仅 is-drm 为 true 时生效 (iOS)"
    },
    "license-url": {
      "type": "string",
      "description": "DRM 获取加密信息 url，仅 is-drm 为 true 时生效"
    },
    "preferred-peak-bit-rate": {
      "type": "number",
      "description": "指定码率上界，单位为比特每秒"
    },
    "bindPlay": {
      "tsType": "() => void",
      "description": "当开始/继续播放时触发play事件"
    },
    "bindPause": {
      "tsType": "() => void",
      "description": "当暂停播放时触发 pause 事件"
    },
    "bindEnded": {
      "tsType": "() => void",
      "description": "当播放到末尾时触发 ended 事件"
    },
    "bindTimeUpdate": {
      "tsType": "() => void",
      "description": "播放进度变化时触发，event.detail = {currentTime, duration} 。触发频率 250ms 一次"
    },
    "bindFullScreenChange": {
      "tsType": "() => void",
      "description": "视频进入和退出全屏时触发，event.detail = {fullScreen, direction}，direction 有效值为 vertical 或 horizontal"
    },
    "bindWaiting": {
      "tsType": "() => void",
      "description": "视频出现缓冲时触发"
    },
    "bindError": {
      "tsType": "() => void",
      "description": "视频播放出错时触发"
    },
    "bindProgress": {
      "tsType": "() => void",
      "description": "加载进度变化时触发，只支持一段加载。event.detail = {buffered}，百分比"
    },
    "bindLoadedMetaData": {
      "tsType": "() => void",
      "description": "视频元数据加载完成时触发。event.detail = {width, height, duration}"
    },
    "bindControlsToggle": {
      "tsType": "() => void",
      "description": "切换 controls 显示隐藏时触发。event.detail = {show}"
    },
    "bindEnterPictureInPicture": {
      "tsType": "() => void",
      "description": "播放器进入小窗"
    },
    "bindLeavePictureInPicture": {
      "tsType": "() => void",
      "description": "播放器退出小窗"
    },
    "bindSeekComplete": {
      "tsType": "() => void",
      "description": "seek 完成时触发 (position iOS 单位 s, Android 单位 ms)"
    },
    "bindCastingUserSelect": {
      "tsType": "() => void",
      "description": "用户选择投屏设备时触发 detail = { state: \"success\"/\"fail\" }"
    },
    "bindCastingStateChange": {
      "tsType": "() => void",
      "description": "投屏成功/失败时触发 detail = { type, state: \"success\"/\"fail\" }"
    },
    "bindCastingInterrupt": {
      "tsType": "() => void",
      "description": "投屏被中断时触发"
    }
  },
  "additionalProperties": false,
  "required": [
    "src",
    "ad-unit-id",
    "poster-for-crawler"
  ]
}