aivee 0.1.0-alpha.0 → 0.1.0-dev.d34a6ba
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/LICENSE +21 -21
- package/README.md +120 -118
- package/docs/architecture.md +401 -401
- package/docs/aspect-ratio-presets.md +72 -72
- package/docs/releasing.md +19 -19
- package/docs/usage.md +1193 -1193
- package/package.json +52 -52
- package/requirements-otio.txt +1 -1
- package/src/capabilities.mjs +307 -307
- package/src/cli.mjs +646 -646
- package/src/doctor.mjs +133 -133
- package/src/edits/analysis-to-edl.mjs +43 -43
- package/src/edits/detect-silence.mjs +51 -51
- package/src/edits/find-mistake-candidates.mjs +42 -42
- package/src/edits/plan-shot-placements.mjs +105 -105
- package/src/edits/plan-silence-cuts.mjs +49 -49
- package/src/edits/retime-transcript.mjs +105 -105
- package/src/files.mjs +80 -80
- package/src/index.mjs +44 -44
- package/src/interchange/otio.mjs +204 -204
- package/src/interchange/otio_bridge.py +521 -521
- package/src/media/analysis-provider.mjs +75 -75
- package/src/media/compatibility.mjs +45 -45
- package/src/media/ffmpeg-capabilities.mjs +129 -129
- package/src/media/frame-rate.mjs +58 -58
- package/src/media/frame-time.mjs +22 -22
- package/src/media/preview-assets.mjs +350 -350
- package/src/media/probe.mjs +149 -149
- package/src/media/render-cuts.mjs +90 -90
- package/src/media/scene-detection.mjs +107 -107
- package/src/media/scene-review.mjs +205 -205
- package/src/project/assets.mjs +1194 -1194
- package/src/project/create.mjs +100 -100
- package/src/project/presets.mjs +44 -44
- package/src/render/checkpoints.mjs +192 -192
- package/src/render/formats.mjs +163 -163
- package/src/render/hyperframes.mjs +590 -590
- package/src/render/process.mjs +111 -111
- package/src/render/progress.mjs +46 -46
- package/src/render/timeline-control.mjs +53 -53
- package/src/timeline/assemble.mjs +119 -119
- package/src/timeline/audio-effects.mjs +75 -75
- package/src/timeline/audio-mastering.mjs +236 -236
- package/src/timeline/audio-mix.mjs +105 -105
- package/src/timeline/audio-track-effects.mjs +139 -139
- package/src/timeline/audio-volume.mjs +63 -63
- package/src/timeline/background.mjs +8 -8
- package/src/timeline/blend-mode.mjs +34 -34
- package/src/timeline/caption-layouts.mjs +62 -61
- package/src/timeline/captions.mjs +80 -80
- package/src/timeline/edit.mjs +965 -965
- package/src/timeline/fingerprint.mjs +6 -6
- package/src/timeline/from-edl.mjs +31 -31
- package/src/timeline/history-store.mjs +281 -281
- package/src/timeline/history.mjs +69 -69
- package/src/timeline/inspect.mjs +117 -117
- package/src/timeline/keyframes.mjs +158 -158
- package/src/timeline/layers.mjs +18 -18
- package/src/timeline/mask.mjs +53 -53
- package/src/timeline/project.mjs +52 -52
- package/src/timeline/render.mjs +759 -759
- package/src/timeline/sidechain-render.mjs +209 -209
- package/src/timeline/source-fit.mjs +15 -15
- package/src/timeline/speech-bubble.mjs +26 -26
- package/src/timeline/speed-ramp.mjs +188 -188
- package/src/timeline/track-state.mjs +22 -22
- package/src/timeline/transition.mjs +34 -34
- package/src/timeline/validate.mjs +322 -322
- package/src/transcript/corrections.mjs +21 -21
- package/src/transcript/normalize.mjs +17 -17
- package/src/transcript/provider.mjs +42 -42
- package/src/transcript/subtitles.mjs +57 -57
- package/src/transcript/validate.mjs +39 -39
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
# Social Video Aspect-Ratio Presets
|
|
2
|
-
|
|
3
|
-
This document defines the platform-informed aspect-ratio presets exposed by
|
|
4
|
-
AIVEE. The engine remains general-purpose: presets are
|
|
5
|
-
convenience defaults, and callers can continue to use arbitrary dimensions.
|
|
6
|
-
|
|
7
|
-
## Initial preset baseline
|
|
8
|
-
|
|
9
|
-
| Preset | Ratio | Default dimensions | Common destinations |
|
|
10
|
-
| --- | --- | --- | --- |
|
|
11
|
-
| `vertical` | 9:16 | 1080 × 1920 | TikTok, Instagram/Facebook Reels and Stories, YouTube Shorts |
|
|
12
|
-
| `portrait-feed` | 4:5 | 1080 × 1350 | Instagram feed, LinkedIn vertical feed video |
|
|
13
|
-
| `square` | 1:1 | 1080 × 1080 | TikTok, Instagram/LinkedIn feed placements |
|
|
14
|
-
| `landscape` | 16:9 | 1920 × 1080 | YouTube standard video, LinkedIn landscape feed video |
|
|
15
|
-
|
|
16
|
-
The ratio is the platform-oriented choice; the pixel dimensions are practical
|
|
17
|
-
HD defaults, not a promise that every platform requires those exact pixels.
|
|
18
|
-
Where a platform publishes a lower or different maximum, export dimensions can
|
|
19
|
-
be lowered while preserving the selected ratio. Keep dimensions configurable.
|
|
20
|
-
|
|
21
|
-
The JavaScript API exports `CANVAS_PRESETS`, `listCanvasPresets()`, and
|
|
22
|
-
`resolveCanvasPreset(id)` from the package entry point. The CLI exposes the same
|
|
23
|
-
catalog with `node src/cli.mjs presets list`; create projects with
|
|
24
|
-
`node src/cli.mjs project create <slug> --preset <id> [fps] [durationSeconds]`.
|
|
25
|
-
The selected identifier is stored as `canvasPreset` beside the resolved
|
|
26
|
-
`width` and `height` in `meta.json`. Existing custom-dimension project creation
|
|
27
|
-
remains supported.
|
|
28
|
-
|
|
29
|
-
## Selection guidance
|
|
30
|
-
|
|
31
|
-
- Recommend `vertical` for full-screen short-form video. YouTube identifies
|
|
32
|
-
Shorts as vertical; TikTok recommends 9:16 and lists 16:9 and 1:1 as other
|
|
33
|
-
supported ad shapes.
|
|
34
|
-
- Recommend `portrait-feed` for tall feed placements where a full-screen 9:16
|
|
35
|
-
canvas is not wanted. LinkedIn explicitly recommends 4:5 vertical video and
|
|
36
|
-
allows up to 1080 × 1350 pixels.
|
|
37
|
-
- Recommend `square` for flexible feed distribution. TikTok and LinkedIn list
|
|
38
|
-
1:1 as a supported video shape.
|
|
39
|
-
- Recommend `landscape` for conventional long-form video and landscape feeds.
|
|
40
|
-
YouTube's standard desktop player ratio is 16:9, with 1920 × 1080 listed as
|
|
41
|
-
its 1080p resolution.
|
|
42
|
-
- Keep 4:3 and other ratios available through custom width/height settings;
|
|
43
|
-
this initial preset list does not restrict the renderer.
|
|
44
|
-
|
|
45
|
-
## Rendering behavior
|
|
46
|
-
|
|
47
|
-
Choosing a preset sets the output canvas only. Source-to-canvas behavior is a
|
|
48
|
-
separate policy with these options:
|
|
49
|
-
|
|
50
|
-
- `contain` scales the full source frame inside the clip bounds, leaving empty
|
|
51
|
-
canvas around it when the aspect ratios differ. This is the default because
|
|
52
|
-
it preserves the full source image.
|
|
53
|
-
- `cover` fills the clip bounds and center-crops any overflow.
|
|
54
|
-
- `fill` stretches the source to the clip bounds and can distort its shape.
|
|
55
|
-
|
|
56
|
-
Set `sourceFit` on project metadata or `timeline.project` for the project-wide
|
|
57
|
-
default; a video clip's `fit` field overrides that policy. The CLI accepts
|
|
58
|
-
`--fit contain|cover|fill` during project creation. The renderer validates these
|
|
59
|
-
values rather than silently substituting a crop mode. Platform safe-area guides
|
|
60
|
-
are separate and are not implied by a ratio preset.
|
|
61
|
-
|
|
62
|
-
## Sources
|
|
63
|
-
|
|
64
|
-
- [YouTube: Video resolution and aspect ratios](https://support.google.com/youtube/answer/6375112)
|
|
65
|
-
- [YouTube: Shorts upload tips](https://support.google.com/youtube/answer/12921536)
|
|
66
|
-
- [TikTok Business Help: Reservation in-feed ad specifications](https://ads.tiktok.com/resources/help/article/tiktok-reservation-in-feed-ads-reach-frequency)
|
|
67
|
-
- [LinkedIn Help: Video ads advertising specifications](https://www.linkedin.com/help/linkedin/answer/a424737)
|
|
68
|
-
- [Vimeo Help: Instagram video aspect-ratio options](https://help.vimeo.com/hc/en-us/articles/12426476775953-How-to-select-a-ratio-in-the-video-editor-for-Instagram-posts)
|
|
69
|
-
|
|
70
|
-
Platform specifications can change and may differ between organic uploads,
|
|
71
|
-
advertising placements, and publishing tools. Recheck the destination's current
|
|
72
|
-
requirements before adding validation that rejects an export.
|
|
1
|
+
# Social Video Aspect-Ratio Presets
|
|
2
|
+
|
|
3
|
+
This document defines the platform-informed aspect-ratio presets exposed by
|
|
4
|
+
AIVEE. The engine remains general-purpose: presets are
|
|
5
|
+
convenience defaults, and callers can continue to use arbitrary dimensions.
|
|
6
|
+
|
|
7
|
+
## Initial preset baseline
|
|
8
|
+
|
|
9
|
+
| Preset | Ratio | Default dimensions | Common destinations |
|
|
10
|
+
| --- | --- | --- | --- |
|
|
11
|
+
| `vertical` | 9:16 | 1080 × 1920 | TikTok, Instagram/Facebook Reels and Stories, YouTube Shorts |
|
|
12
|
+
| `portrait-feed` | 4:5 | 1080 × 1350 | Instagram feed, LinkedIn vertical feed video |
|
|
13
|
+
| `square` | 1:1 | 1080 × 1080 | TikTok, Instagram/LinkedIn feed placements |
|
|
14
|
+
| `landscape` | 16:9 | 1920 × 1080 | YouTube standard video, LinkedIn landscape feed video |
|
|
15
|
+
|
|
16
|
+
The ratio is the platform-oriented choice; the pixel dimensions are practical
|
|
17
|
+
HD defaults, not a promise that every platform requires those exact pixels.
|
|
18
|
+
Where a platform publishes a lower or different maximum, export dimensions can
|
|
19
|
+
be lowered while preserving the selected ratio. Keep dimensions configurable.
|
|
20
|
+
|
|
21
|
+
The JavaScript API exports `CANVAS_PRESETS`, `listCanvasPresets()`, and
|
|
22
|
+
`resolveCanvasPreset(id)` from the package entry point. The CLI exposes the same
|
|
23
|
+
catalog with `node src/cli.mjs presets list`; create projects with
|
|
24
|
+
`node src/cli.mjs project create <slug> --preset <id> [fps] [durationSeconds]`.
|
|
25
|
+
The selected identifier is stored as `canvasPreset` beside the resolved
|
|
26
|
+
`width` and `height` in `meta.json`. Existing custom-dimension project creation
|
|
27
|
+
remains supported.
|
|
28
|
+
|
|
29
|
+
## Selection guidance
|
|
30
|
+
|
|
31
|
+
- Recommend `vertical` for full-screen short-form video. YouTube identifies
|
|
32
|
+
Shorts as vertical; TikTok recommends 9:16 and lists 16:9 and 1:1 as other
|
|
33
|
+
supported ad shapes.
|
|
34
|
+
- Recommend `portrait-feed` for tall feed placements where a full-screen 9:16
|
|
35
|
+
canvas is not wanted. LinkedIn explicitly recommends 4:5 vertical video and
|
|
36
|
+
allows up to 1080 × 1350 pixels.
|
|
37
|
+
- Recommend `square` for flexible feed distribution. TikTok and LinkedIn list
|
|
38
|
+
1:1 as a supported video shape.
|
|
39
|
+
- Recommend `landscape` for conventional long-form video and landscape feeds.
|
|
40
|
+
YouTube's standard desktop player ratio is 16:9, with 1920 × 1080 listed as
|
|
41
|
+
its 1080p resolution.
|
|
42
|
+
- Keep 4:3 and other ratios available through custom width/height settings;
|
|
43
|
+
this initial preset list does not restrict the renderer.
|
|
44
|
+
|
|
45
|
+
## Rendering behavior
|
|
46
|
+
|
|
47
|
+
Choosing a preset sets the output canvas only. Source-to-canvas behavior is a
|
|
48
|
+
separate policy with these options:
|
|
49
|
+
|
|
50
|
+
- `contain` scales the full source frame inside the clip bounds, leaving empty
|
|
51
|
+
canvas around it when the aspect ratios differ. This is the default because
|
|
52
|
+
it preserves the full source image.
|
|
53
|
+
- `cover` fills the clip bounds and center-crops any overflow.
|
|
54
|
+
- `fill` stretches the source to the clip bounds and can distort its shape.
|
|
55
|
+
|
|
56
|
+
Set `sourceFit` on project metadata or `timeline.project` for the project-wide
|
|
57
|
+
default; a video clip's `fit` field overrides that policy. The CLI accepts
|
|
58
|
+
`--fit contain|cover|fill` during project creation. The renderer validates these
|
|
59
|
+
values rather than silently substituting a crop mode. Platform safe-area guides
|
|
60
|
+
are separate and are not implied by a ratio preset.
|
|
61
|
+
|
|
62
|
+
## Sources
|
|
63
|
+
|
|
64
|
+
- [YouTube: Video resolution and aspect ratios](https://support.google.com/youtube/answer/6375112)
|
|
65
|
+
- [YouTube: Shorts upload tips](https://support.google.com/youtube/answer/12921536)
|
|
66
|
+
- [TikTok Business Help: Reservation in-feed ad specifications](https://ads.tiktok.com/resources/help/article/tiktok-reservation-in-feed-ads-reach-frequency)
|
|
67
|
+
- [LinkedIn Help: Video ads advertising specifications](https://www.linkedin.com/help/linkedin/answer/a424737)
|
|
68
|
+
- [Vimeo Help: Instagram video aspect-ratio options](https://help.vimeo.com/hc/en-us/articles/12426476775953-How-to-select-a-ratio-in-the-video-editor-for-Instagram-posts)
|
|
69
|
+
|
|
70
|
+
Platform specifications can change and may differ between organic uploads,
|
|
71
|
+
advertising placements, and publishing tools. Recheck the destination's current
|
|
72
|
+
requirements before adding validation that rejects an export.
|
package/docs/releasing.md
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
# Releasing AIVEE
|
|
2
|
-
|
|
3
|
-
The `Build Flow` workflow validates pull requests targeting `dev` or `main
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## One-time setup
|
|
10
|
-
|
|
11
|
-
1.
|
|
12
|
-
`
|
|
13
|
-
|
|
14
|
-
2.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
After setup, release promotion from `dev` to `main` runs the version, package,
|
|
18
|
-
and GitHub Release flow. Check both registries after the first automated release;
|
|
19
|
-
publishing to them is not atomic.
|
|
1
|
+
# Releasing AIVEE
|
|
2
|
+
|
|
3
|
+
The `Build Flow` workflow validates pull requests targeting `dev` or `main` and
|
|
4
|
+
publishes package artifacts on pull requests, pushes to `dev`, and manual runs.
|
|
5
|
+
These preview artifacts go to npm and GitHub Packages. A push to `main` after
|
|
6
|
+
merging a release PR publishes the release versions and creates a GitHub Release
|
|
7
|
+
after both registries report success. Container publishing is disabled.
|
|
8
|
+
|
|
9
|
+
## One-time setup
|
|
10
|
+
|
|
11
|
+
1. Configure npm trusted publishing for this GitHub repository and the
|
|
12
|
+
`build-flow.yml` workflow. The workflow uses OIDC; no `NPM_TOKEN` secret is
|
|
13
|
+
required.
|
|
14
|
+
2. Allow GitHub Actions to write packages. The workflow uses `GITHUB_TOKEN` to
|
|
15
|
+
publish the GitHub Packages copy.
|
|
16
|
+
|
|
17
|
+
After setup, release promotion from `dev` to `main` runs the version, package,
|
|
18
|
+
and GitHub Release flow. Check both registries after the first automated release;
|
|
19
|
+
publishing to them is not atomic.
|