@remixmate/template-core 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API.md +167 -0
- package/LICENSE +85 -0
- package/README.md +18 -0
- package/dist/index.cjs +2211 -0
- package/dist/index.d.mts +1293 -0
- package/dist/index.d.ts +1293 -0
- package/dist/index.js +2153 -0
- package/package.json +44 -0
package/API.md
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# @remixmate/template-core@1.3.0 API 速查
|
|
2
|
+
|
|
3
|
+
> 由 `dist/index.d.ts` 自动生成,请勿手改。完整签名与 JSDoc 以包内 d.ts 为准。 共 52 个运行时导出、45 个类型导出。
|
|
4
|
+
|
|
5
|
+
## 组件 / Components
|
|
6
|
+
|
|
7
|
+
- `AudioLayer`
|
|
8
|
+
- `const AudioLayer: React.FC<AudioLayerProps>`
|
|
9
|
+
- `Background`
|
|
10
|
+
- `const Background: React.FC<BackgroundProps>`
|
|
11
|
+
- `DigitalHumanLayer` — 数字人视频图层。
|
|
12
|
+
- `const DigitalHumanLayer: React.FC<DigitalHumanLayerProps>`
|
|
13
|
+
- `DigitalHumanPoster` — 封面用的静态数字人:有 posterSrc 时按同一个盒子画图,否则不渲染。
|
|
14
|
+
- `const DigitalHumanPoster: React.FC< …`
|
|
15
|
+
- `GridParticleBackground`
|
|
16
|
+
- `const GridParticleBackground: React.FC<GridParticleBackgroundProps>`
|
|
17
|
+
- `ReservedContentScaler` — layout=reserve 时把按固定宽度排版的内容整体等比缩进剩余区域。
|
|
18
|
+
- `const ReservedContentScaler: React.FC< …`
|
|
19
|
+
- `SceneBackgroundLayer`
|
|
20
|
+
- `const SceneBackgroundLayer: React.FC<SceneBackgroundLayerProps>`
|
|
21
|
+
- `SceneTransition`
|
|
22
|
+
- `const SceneTransition: React.FC<SceneTransitionProps>`
|
|
23
|
+
- `SubtitleBar`
|
|
24
|
+
- `const SubtitleBar: React.FC<SubtitleBarProps>`
|
|
25
|
+
- `TextLayer`
|
|
26
|
+
- `const TextLayer: React.FC<TextLayerProps>`
|
|
27
|
+
- `TimelineSequencer`
|
|
28
|
+
- `const TimelineSequencer: React.FC<TimelineSequencerProps>`
|
|
29
|
+
|
|
30
|
+
## Hooks
|
|
31
|
+
|
|
32
|
+
- `useActiveSubtitle` — Return the subtitle text currently active at the playhead, or an empty string if none. Pure data hook — visual rendering is each template's responsibility (so templates can style the subtitle bar f...
|
|
33
|
+
- `function useActiveSubtitle(segments: SubtitleSegment[]): string`
|
|
34
|
+
- `useActiveSubtitleIndex` — Return the index of the currently active segment (scene-local frames), or -1 if none. Useful when a template wants to link subtitle progress to on-screen element highlighting.
|
|
35
|
+
- `function useActiveSubtitleIndex(segments: SubtitleSegment[]): number`
|
|
36
|
+
- `useAssetUrl` — Resolve an assetId to a playable URL (or local file path for public/). Returns null when the asset is unknown.
|
|
37
|
+
- `function useAssetUrl(assetId: string | undefined, resolvedAssets: ResolvedAsset[]): string | null`
|
|
38
|
+
- `useCanvasScale` — Scale factor for px constants authored against a 1920px long edge.
|
|
39
|
+
- `function useCanvasScale(): number`
|
|
40
|
+
- `useLocalSubtitles` — Hook 版本 —— 结果按 (segments, startFrame, leadFrames) 记忆化。
|
|
41
|
+
- `function useLocalSubtitles(entry: Pick<TimelineEntry, "subtitleSegments" | "startFrame">, options?: LocalizeSubtitlesOptions): SubtitleSe...`
|
|
42
|
+
|
|
43
|
+
## 函数 / Functions
|
|
44
|
+
|
|
45
|
+
- `chunkSubtitleSegments` — 把字幕段数组展开成「屏」数组。不需要切的段原样透传(同一个对象引用)。
|
|
46
|
+
- `function chunkSubtitleSegments(segments: SubtitleChunk[], options: ChunkSubtitleOptions): SubtitleChunk[]`
|
|
47
|
+
- `displayWidth` — 文本的显示宽度,单位是「全角字」。
|
|
48
|
+
- `function displayWidth(text: string): number`
|
|
49
|
+
- `estimateLineCapacity` — 从排版参数估算一行放得下多少个全角字。
|
|
50
|
+
- `function estimateLineCapacity(availableWidthPx: number, fontSizePx: number, letterSpacingPx?: number): number`
|
|
51
|
+
- `fontStack` — Normalise a metadata font value into a valid CSS `font-family` stack.
|
|
52
|
+
- `function fontStack(font?: string): string`
|
|
53
|
+
- `grainDataUri` — `noise` preset 的胶片颗粒。
|
|
54
|
+
- `function grainDataUri(blend: SceneBackgroundNoiseBlend): string`
|
|
55
|
+
- `isLegacyAvatarInput` — 旧版 image-slide 形态:只给了 `avatarAssetId`,没有任何新字段。 image-slide 据此走与改动前逐像素一致的 legacy 版式。
|
|
56
|
+
- `function isLegacyAvatarInput(input: DigitalHumanInput): boolean`
|
|
57
|
+
- `localizeSubtitles` — 纯函数版本 —— 可在循环 / 非组件上下文 / 测试里调用。
|
|
58
|
+
- `function localizeSubtitles(entry: Pick<TimelineEntry, "subtitleSegments" | "startFrame">, options?: LocalizeSubtitlesOptions): SubtitleSe...`
|
|
59
|
+
- `mergeDigitalHumanConfig` — 合并外观配置。优先级:`digitalHuman.*` > `avatarPosition / avatarScale` > 模板默认 > 内置默认。
|
|
60
|
+
- `function mergeDigitalHumanConfig(config: DigitalHumanConfig, defaults: DigitalHumanDefaults, dsl?: …`
|
|
61
|
+
- `pickDigitalHumanInput` — 从 `entry.props` 收集数字人输入。
|
|
62
|
+
- `function pickDigitalHumanInput(props: unknown): DigitalHumanInput`
|
|
63
|
+
- `reportDigitalHumanIssues` — 上报解析阶段收集到的问题。模板在决定是否渲染之前调用, 这样即便数字人最终不显示(素材解析失败)也会留下诊断。
|
|
64
|
+
- `function reportDigitalHumanIssues(dh: ResolvedDigitalHuman, box: DigitalHumanBox | null, templateId: string, sceneId?: string): void`
|
|
65
|
+
- `reportSceneDegraded`
|
|
66
|
+
- `function reportSceneDegraded(report: SceneDegradedReport): void`
|
|
67
|
+
- `resetSceneDegradedReports` — 测试专用:清空去重表。
|
|
68
|
+
- `function resetSceneDegradedReports(): void`
|
|
69
|
+
- `resolveActiveChunk` — 当前帧该显示哪一屏。
|
|
70
|
+
- `function resolveActiveChunk<T extends SubtitleChunk>(chunks: T[], frame: number, holdFrames: number): T | undefined`
|
|
71
|
+
- `resolveAsset` — Return the full ResolvedAsset (or undefined). Useful when the template needs `type`, `duration`, or other metadata in addition to the URL.
|
|
72
|
+
- `function resolveAsset(assetId: string | undefined, resolvedAssets: ResolvedAsset[]): ResolvedAsset | undefined`
|
|
73
|
+
- `resolveAssetUrl` — Non-hook variant for use inside loops / .map callbacks.
|
|
74
|
+
- `function resolveAssetUrl(assetId: string | undefined, resolvedAssets: ResolvedAsset[]): string | null`
|
|
75
|
+
- `resolveChunkFadeOpacity` — 换屏时文字的淡入不透明度(0–1)。
|
|
76
|
+
- `function resolveChunkFadeOpacity(framesIntoChunk: number): number`
|
|
77
|
+
- `resolveDigitalHuman` — 从 props 解析出这一屏的数字人。
|
|
78
|
+
- `function resolveDigitalHuman(props: unknown, resolvedAssets: ResolvedAsset[], options: ResolveDigitalHumanOptions): ResolvedDigitalHuman`
|
|
79
|
+
- `resolveDigitalHumanBox` — 计算盒子。
|
|
80
|
+
- `function resolveDigitalHumanBox(config: ResolvedDigitalHumanConfig, canvas: Canvas, options?: …`
|
|
81
|
+
- `resolveReservedRegion` — 内容让位(layout=reserve):返回让出数字人一侧后剩余的水平区间(px)。 盒子居中(side=none)时不让位,返回整幅。
|
|
82
|
+
- `function resolveReservedRegion(box: DigitalHumanBox | null, canvas: Canvas, gap?: number): …`
|
|
83
|
+
- `resolveRunFadeOpacity` — 整条字幕 run 的淡入淡出不透明度(0–1),头尾各淡 `capFrames` 帧。
|
|
84
|
+
- `function resolveRunFadeOpacity(frame: number, runStart: number, runEnd: number, capFrames: number): number`
|
|
85
|
+
- `resolveSceneBackground` — 纯函数版的 preset 解析 —— 把「给定 background 该画哪些层」的判断独立出来, 便于单测,也让组件本体只负责把结果摆成 DOM。
|
|
86
|
+
- `function resolveSceneBackground(background: SceneBackground | undefined, signaturePreset: string, defaultMediaMotion?: BackgroundMotion, ...`
|
|
87
|
+
- `resolveSubtitleBottomPx` — Resolve the caption's distance from the bottom edge, in px.
|
|
88
|
+
- `function resolveSubtitleBottomPx(mode: ResolvedSubtitleMode, canvas: …`
|
|
89
|
+
- `resolveSubtitleMaxWidthPct` — 字幕让位:居中的字幕在 [bandTop, 画面底] 这条带子里,数字人与之有交叠且偏在 一侧时,收窄字幕最大宽度(仍居中),让两侧都不碰到盒子。
|
|
90
|
+
- `function resolveSubtitleMaxWidthPct(box: DigitalHumanBox | null, canvas: Canvas, opts: …`
|
|
91
|
+
- `resolveSubtitleMode` — Pick the concrete mode to render.
|
|
92
|
+
- `function resolveSubtitleMode(mode?: SubtitleMode, captionStyle?: "pill" | "stroke", backgroundLuma?: number): ResolvedSubtitleMode`
|
|
93
|
+
- `sanitizeDiagnosticSrc` — 把一个媒体地址压成可以进日志的形态:去掉签名 query 与 hash,data URI 只保留 `data:image/png` 这样的前缀(正文可能有几百 KB)。
|
|
94
|
+
- `function sanitizeDiagnosticSrc(src: string): string`
|
|
95
|
+
- `sanitizeDigitalHumanConfig` — 校验 `customPayload.digitalHuman`:枚举不合法的丢弃、数值越界的钳制, 类型不对的丢弃。未知字段忽略(不报)。
|
|
96
|
+
- `function sanitizeDigitalHumanConfig(raw: unknown): SanitizedDigitalHumanConfig`
|
|
97
|
+
- `sentenceStartFrames` — 每**句**旁白的起拍帧 —— 给"第 i 个动作对齐第 i 句"的模板用。
|
|
98
|
+
- `function sentenceStartFrames(segments: readonly SubtitleSegment[]): number[] | null`
|
|
99
|
+
- `splitSubtitleText` — 把一条字幕文本切成若干屏,并去掉每片的行尾标点。
|
|
100
|
+
- `function splitSubtitleText(text: string, options: SplitSubtitleOptions): string[]`
|
|
101
|
+
- `spokenWeight` — 文本的**口播权重**,单位近似「音节」。片内时间按它分配,不用 `displayWidth`。
|
|
102
|
+
- `function spokenWeight(text: string): number`
|
|
103
|
+
|
|
104
|
+
## 常量 / Constants
|
|
105
|
+
|
|
106
|
+
- `DEFAULT_DIGITAL_HUMAN_ASPECT` — 没有显式宽高比、也没有视频元数据时的缺省宽高比(竖版半身)。
|
|
107
|
+
- `const DEFAULT_DIGITAL_HUMAN_ASPECT: number`
|
|
108
|
+
- `DEFAULT_MIN_CHUNK_UNITS` — 碎片下限的默认值:切出来短于它的片并回相邻片,避免闪过一个「的延迟」。
|
|
109
|
+
- `const DEFAULT_MIN_CHUNK_UNITS = 7`
|
|
110
|
+
- `DEFAULT_SPLIT_MAX_UNITS` — 单屏目标上限的默认值。
|
|
111
|
+
- `const DEFAULT_SPLIT_MAX_UNITS = 20`
|
|
112
|
+
- `DIGITAL_HUMAN_ANCHORS`
|
|
113
|
+
- `const DIGITAL_HUMAN_ANCHORS: readonly DigitalHumanAnchor[]`
|
|
114
|
+
- `DIGITAL_HUMAN_PROP_KEYS` — props 里与数字人有关的全部键。多版式模板据此把它们当 frame 级字段。
|
|
115
|
+
- `const DIGITAL_HUMAN_PROP_KEYS: readonly ["digitalHuman", "avatarAssetId", "avatarPosition", "avatarScale", "avatarOffsetFrames", "avatarS...`
|
|
116
|
+
- `DIGITAL_HUMAN_SIZE_PRESETS` — 尺寸档位:盒高 / 画面短边。
|
|
117
|
+
- `const DIGITAL_HUMAN_SIZE_PRESETS: Record<DigitalHumanSizePreset, number>`
|
|
118
|
+
- `LINE_FILL_LIMIT` — 单屏最多占一行容量的多少。
|
|
119
|
+
- `const LINE_FILL_LIMIT = 0.9`
|
|
120
|
+
|
|
121
|
+
## 类型 / Types
|
|
122
|
+
|
|
123
|
+
- `BackgroundMotion`
|
|
124
|
+
- `BgmConfig`
|
|
125
|
+
- `ChunkSubtitleOptions`
|
|
126
|
+
- `CompositionManifestEntry` — Describes a single entry in the generated COMPOSITION_MANIFEST. The manifest maps a compositionId (e.g. "ImageSlideOpening") to the React component that should render it, along with the template it...
|
|
127
|
+
- `DigitalHumanAnchor`
|
|
128
|
+
- `DigitalHumanBox` — 画面上的像素盒子。
|
|
129
|
+
- `DigitalHumanConfig` — `customPayload.digitalHuman` —— 作者可写的外观配置,全部可选。
|
|
130
|
+
- `DigitalHumanDefaults` — 模板默认值:每个模板可以有自己的默认位置 / 大小 / 形状。
|
|
131
|
+
- `DigitalHumanEnter`
|
|
132
|
+
- `DigitalHumanInput` — 从 props 里收集到的原始输入(尚未校验)。
|
|
133
|
+
- `DigitalHumanInsets` — 安全区内缩(px)。例如黑板模板的木框、字幕带。
|
|
134
|
+
- `DigitalHumanLayerProps`
|
|
135
|
+
- `DigitalHumanLayout`
|
|
136
|
+
- `DigitalHumanOnEnd`
|
|
137
|
+
- `DigitalHumanPosition`
|
|
138
|
+
- `DigitalHumanSegmentRole` — 本场景在所属连续段里的位置。段长为 1 时是 `only`。
|
|
139
|
+
- `DigitalHumanShape` — 数字人(口播 talking-head 视频)叠加层的数据契约。
|
|
140
|
+
- `DigitalHumanSizePreset`
|
|
141
|
+
- `GridParticleBackgroundProps`
|
|
142
|
+
- `GridParticleConfig` — DSL 里 `customPayload.background` 的形状(与模板 schema 同名字段)。
|
|
143
|
+
- `GridParticleTheme` — 本组件读取的主题字段。颜色都是 `"r,g,b"` 三元组,便于拼 rgba。
|
|
144
|
+
- `GridParticleTuning` — 按版面调的几何参数。不同模板的文字 / 舞台位置不同,暗角和柔光带要跟着挪。
|
|
145
|
+
- `Layer`
|
|
146
|
+
- `LocalizeSubtitlesOptions` — 把 RenderPlan 里的**全片绝对帧**字幕时间码平移成**场景局部帧**。
|
|
147
|
+
- `MainVideoProps`
|
|
148
|
+
- `RenderConfig`
|
|
149
|
+
- `ResolvedAsset`
|
|
150
|
+
- `ResolvedDigitalHuman`
|
|
151
|
+
- `ResolvedDigitalHumanConfig` — 校验、合并默认值之后的外观配置 —— 每个字段都有确定值。
|
|
152
|
+
- `ResolveDigitalHumanOptions`
|
|
153
|
+
- `ResolvedSubtitleMode` — Resolved modes — everything `auto` can collapse into.
|
|
154
|
+
- `SanitizedDigitalHumanConfig`
|
|
155
|
+
- `SceneBackground` — 场景背景的声明。
|
|
156
|
+
- `SceneBackgroundLayerProps`
|
|
157
|
+
- `SceneBackgroundNoiseBlend` — `noise` preset 的混合模式。见各模板 theme 里 noiseBlend 的注释。
|
|
158
|
+
- `SceneBackgroundSlotContext` — 传给 `signature` / `depth` 插槽的上下文。
|
|
159
|
+
- `SceneDegradedReport` — 模板降级诊断 —— `template.scene.degraded` 的唯一发射点。
|
|
160
|
+
- `SplitSubtitleOptions`
|
|
161
|
+
- `SubtitleChunk` — 一屏字幕。帧号与来源 `SubtitleSegment` 同基准(场景局部帧)。
|
|
162
|
+
- `SubtitleMode` — Subtitle presentation modes.
|
|
163
|
+
- `SubtitleSegment`
|
|
164
|
+
- `TemplateCompositionProps` — Every template Composition component must implement this function signature.
|
|
165
|
+
- `TimelineEntry` — A single scene on the timeline. The `props` field is an opaque container — each template parses it into its own strongly-typed interface. Core does NOT know what fields any given template expects.
|
|
166
|
+
- `TimelineSequencerProps` — 时间轴派发器 —— 把 timeline 的每个 entry 按 compositionId 解析成模板组件, 包进 Remotion Sequence,再叠加可选的全局 BGM。
|
|
167
|
+
- `Typography`
|
package/LICENSE
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
RemixMate Template SDK License
|
|
2
|
+
Version 0.1 (DRAFT — pending legal review / 草案,待法务审阅)
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 RemixMate. All rights reserved.
|
|
5
|
+
|
|
6
|
+
本许可适用于 @remixmate/template-core、@remixmate/template-starter 及 starter 随附的
|
|
7
|
+
示例模板(以下合称"本 SDK")。中文与英文文本具有同等效力;如有歧义,以中文文本为准。
|
|
8
|
+
|
|
9
|
+
一、授权
|
|
10
|
+
您可以下载、安装、在本地运行(包括使用 Remotion Studio 预览)本 SDK,并修改示例模板,
|
|
11
|
+
但仅限于开发、测试将在 RemixMate 平台上渲染的视频模板这一目的。
|
|
12
|
+
|
|
13
|
+
二、限制
|
|
14
|
+
1. 不得在 RemixMate 平台之外使用本 SDK 渲染并对外分发视频成品,也不得将本 SDK 作为任何
|
|
15
|
+
视频生成或渲染服务的组成部分。
|
|
16
|
+
2. 不得单独再分发本 SDK 或其中的示例模板;作为您的模板的一部分上传到 RemixMate 平台除外。
|
|
17
|
+
3. 不得反编译、反向工程或以其他方式还原 template-core 的源代码,也不得利用本 SDK 或
|
|
18
|
+
RemixMate 平台的渲染能力提取平台模板或他人模板的源代码。
|
|
19
|
+
4. 不得移除或修改本许可及版权声明。
|
|
20
|
+
|
|
21
|
+
三、您的模板
|
|
22
|
+
您自己编写的模板代码归您所有。您授予 RemixMate 为向您提供渲染服务所必需的、非独占的
|
|
23
|
+
托管、处理与渲染许可。基于示例模板修改而来的模板中,示例原有的内容仍归 RemixMate 所有。
|
|
24
|
+
|
|
25
|
+
四、终止
|
|
26
|
+
违反本许可任一条款,授权自动终止。若您在收到 RemixMate 通知后 30 日内纠正违约行为,
|
|
27
|
+
授权恢复;同一许可下再次违约的,不再给予纠正期。
|
|
28
|
+
|
|
29
|
+
五、免责与责任限制
|
|
30
|
+
本 SDK 按"现状"提供,不附带任何明示或默示的担保,包括适销性、特定用途适用性与不侵权。
|
|
31
|
+
在法律允许的最大范围内,RemixMate 对因使用本 SDK 产生的任何损失不承担责任;如法律要求
|
|
32
|
+
承担责任,责任总额以您在过去 12 个月内为 RemixMate 平台服务实际支付的费用为上限。
|
|
33
|
+
|
|
34
|
+
六、与平台服务条款的关系
|
|
35
|
+
本许可与 RemixMate 服务条款并行适用。渲染、计费、内容合规等事项以服务条款为准。
|
|
36
|
+
本许可新版本发布后,新版本适用于此后获取的 SDK 版本。
|
|
37
|
+
|
|
38
|
+
七、第三方组件
|
|
39
|
+
本 SDK 依赖的 Remotion(https://www.remotion.dev)有其独立许可:个人与小团队免费,
|
|
40
|
+
达到一定规模的公司需要购买授权。您在本地使用 Remotion 属于您与 Remotion 之间的关系,
|
|
41
|
+
条款以 Remotion 官方为准。
|
|
42
|
+
|
|
43
|
+
--------------------------------------------------------------------------------
|
|
44
|
+
|
|
45
|
+
RemixMate Template SDK License (English)
|
|
46
|
+
|
|
47
|
+
This license covers @remixmate/template-core, @remixmate/template-starter and the
|
|
48
|
+
example templates shipped with the starter (together, the "SDK").
|
|
49
|
+
|
|
50
|
+
1. Grant. You may download, install and run the SDK locally (including previewing in
|
|
51
|
+
Remotion Studio) and modify the example templates, solely to develop and test video
|
|
52
|
+
templates that will be rendered on the RemixMate platform.
|
|
53
|
+
|
|
54
|
+
2. Restrictions. You may not:
|
|
55
|
+
(a) use the SDK to render and distribute videos outside the RemixMate platform, or use
|
|
56
|
+
it as part of any video generation or rendering service;
|
|
57
|
+
(b) redistribute the SDK or the example templates on their own, except as part of your
|
|
58
|
+
template uploaded to the RemixMate platform;
|
|
59
|
+
(c) decompile, reverse engineer or otherwise reconstruct the source code of
|
|
60
|
+
template-core, or use the SDK or the RemixMate rendering service to extract the
|
|
61
|
+
source code of platform templates or other users' templates;
|
|
62
|
+
(d) remove or alter this license or any copyright notice.
|
|
63
|
+
|
|
64
|
+
3. Your templates. Template code you write yourself belongs to you. You grant RemixMate a
|
|
65
|
+
non-exclusive license to host, process and render it as needed to provide the
|
|
66
|
+
rendering service to you. In templates derived from the examples, the original example
|
|
67
|
+
content remains owned by RemixMate.
|
|
68
|
+
|
|
69
|
+
4. Termination. Your license ends automatically if you breach any term. It is reinstated
|
|
70
|
+
if you cure the breach within 30 days after notice from RemixMate; a second breach
|
|
71
|
+
under this license gets no cure period.
|
|
72
|
+
|
|
73
|
+
5. No warranty; limitation of liability. The SDK is provided "as is", without warranty of
|
|
74
|
+
any kind. To the maximum extent permitted by law, RemixMate is not liable for any loss
|
|
75
|
+
arising from use of the SDK; where liability cannot be excluded, it is capped at the
|
|
76
|
+
fees you paid for RemixMate platform services in the preceding 12 months.
|
|
77
|
+
|
|
78
|
+
6. Platform terms. This license applies alongside the RemixMate Terms of Service, which
|
|
79
|
+
govern rendering, billing and content compliance. A new version of this license applies
|
|
80
|
+
to SDK versions obtained after its release.
|
|
81
|
+
|
|
82
|
+
7. Third-party components. Remotion (https://www.remotion.dev) has its own license: free
|
|
83
|
+
for individuals and small teams, while companies above a certain size need a paid
|
|
84
|
+
license. Your local use of Remotion is between you and Remotion; Remotion's official
|
|
85
|
+
terms apply.
|
package/README.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# @remixmate/template-core
|
|
2
|
+
|
|
3
|
+
RemixMate 视频模板 SDK 的运行时与类型定义(编译产物,不含源码)。用它开发的模板在 RemixMate 平台渲染出片。
|
|
4
|
+
|
|
5
|
+
- 起步:`remixmate template init my-templates`(会安装本包与 `@remixmate/template-starter`)
|
|
6
|
+
- API 速查:见包内 `API.md`;完整签名与说明见 `dist/index.d.ts`
|
|
7
|
+
- 运行环境:React 18、Remotion 4.0.446(与平台渲染服务一致)
|
|
8
|
+
|
|
9
|
+
## 许可
|
|
10
|
+
|
|
11
|
+
本包以「RemixMate Template SDK License」发布(见 `LICENSE`),不是开源许可。白话摘要:
|
|
12
|
+
|
|
13
|
+
- 可以在本地安装、运行、预览,用来开发将在 RemixMate 平台渲染的模板;
|
|
14
|
+
- 不可以在 RemixMate 之外用它渲染并分发视频,或把它嵌进其它视频服务;
|
|
15
|
+
- 不可以单独再分发、反编译本包,或借渲染提取平台 / 他人模板的源码;
|
|
16
|
+
- 你自己写的模板归你所有。
|
|
17
|
+
|
|
18
|
+
Remotion 有独立许可(个人与小团队免费,达到一定规模的公司需购买授权),以 Remotion 官方条款为准。
|