基础概念
理解 Video Schema 的核心概念
基础概念
在开始创建视频之前,了解 Video Schema 的核心概念非常重要。
Schema 结构
视频 Schema 由几个主要部分组成:
{
"meta": { ... }, // 元数据
"video": { ... }, // 视频配置
"audio": { ... }, // 音频配置(可选)
"assets": { ... }, // 资源引用(可选)
"tracks": [ ... ] // 内容轨道
}Meta
关于 Schema 本身的元数据:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
version | string | 是 | Schema 版本(如 "2.0.0") |
title | string | 否 | 项目标题 |
description | string | 否 | 项目描述 |
author | string | 否 | 作者名称 |
tags | string[] | 否 | 分类标签 |
视频配置
定义输出视频的属性:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
width | number | 是 | 视频宽度(像素) |
height | number | 是 | 视频高度(像素) |
fps | number | 是 | 每秒帧数 |
duration | number | 是 | 总时长(秒) |
background | string | 否 | 背景颜色(十六进制) |
常用分辨率
| 名称 | 宽度 | 高度 | 宽高比 |
|---|---|---|---|
| 1080p | 1920 | 1080 | 16:9 |
| 720p | 1280 | 720 | 16:9 |
| 4K | 3840 | 2160 | 16:9 |
| 竖屏 | 1080 | 1920 | 9:16 |
| 方形 | 1080 | 1080 | 1:1 |
轨道
轨道是包含片段的图层。可以把它想象成视频编辑软件中的图层:
- 视觉轨道:包含文本、图片、视频、形状
- 音频轨道:包含背景音乐、配音
- 字幕轨道:包含字幕数据
{
"id": "main",
"type": "visual",
"clips": [ ... ]
}片段
片段是轨道内的独立元素。每个片段包含:
- 类型:元素类型(文本、图片、视频等)
- 时间:何时出现以及持续多久
- 变换:位置和大小
- 样式:视觉外观
- 动画:动态效果
片段类型
| 类型 | 描述 |
|---|---|
text | 文本内容 |
image | 静态图片 |
video | 视频内容 |
rect | 矩形形状 |
circle | 圆形形状 |
layout | 子片段容器 |
subtitle | 字幕内容 |
时间
每个片段都有时间属性:
{
"start": 0, // 片段出现的时间(秒)
"duration": 5 // 可见时长(秒)
}变换
控制位置和大小:
{
"transform": {
"x": "50%", // 水平位置
"y": "50%", // 垂直位置
"width": 400, // 宽度(像素或百分比)
"height": 300, // 高度(像素或百分比)
"rotation": 0, // 旋转角度
"anchor": "center" // 锚点
}
}锚点
center、top、bottom、left、righttop-left、top-right、bottom-left、bottom-right
样式
控制视觉外观:
{
"style": {
"fill": "#ffffff", // 填充颜色
"opacity": 1, // 透明度 0-1
"fontSize": 48, // 字体大小(文本用)
"fontWeight": 700, // 字重(文本用)
"shadowColor": "#000", // 阴影颜色
"shadowBlur": 10 // 阴影模糊
}
}动画
为片段添加动态效果:
{
"animations": [
{ "type": "fadeIn", "duration": 0.5 },
{ "type": "slideIn", "direction": "up", "duration": 0.8 }
]
}动画类型
| 类型 | 描述 |
|---|---|
fadeIn | 从透明淡入 |
fadeOut | 淡出到透明 |
slideIn | 从某个方向滑入 |
slideOut | 滑出到某个方向 |
zoomIn | 从小放大 |
zoomOut | 缩小 |
scale | 动画缩放属性 |
move | 动画位置 |
rotate | 动画旋转 |
Z-Index
控制片段的堆叠顺序。数值越大,越显示在顶层:
{
"zIndex": 10 // 会显示在 zIndex 较低的片段之上
}