dsh-remotion 0.2.0 → 0.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/README.en.md +7 -5
- package/README.md +3 -3
- package/lib/index.d.ts +2 -2
- package/lib/index.js +15 -2
- package/package.json +1 -1
- package/skills/remotion-best-practices/SKILL.md +59 -0
- package/skills/remotion-best-practices/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/assets/remotion-icon.png +0 -0
- package/skills/remotion-best-practices/remotion-captions/SKILL.md +36 -0
- package/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.png +0 -0
- package/skills/{remotion/rules → remotion-best-practices/remotion-captions}/display-captions.md +9 -3
- package/skills/{remotion/rules → remotion-best-practices/remotion-captions}/import-srt-captions.md +5 -1
- package/skills/remotion-best-practices/remotion-create/SKILL.md +68 -0
- package/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-create/assets/remotion-icon.png +0 -0
- package/skills/{remotion/rules → remotion-best-practices/remotion-create}/tailwind.md +1 -1
- package/skills/remotion-best-practices/remotion-create/video-layout.md +9 -0
- package/skills/remotion-best-practices/remotion-docs/SKILL.md +46 -0
- package/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.png +0 -0
- package/skills/remotion-best-practices/remotion-interactivity/SKILL.md +247 -0
- package/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/skills/remotion-best-practices/remotion-maps/SKILL.md +36 -0
- package/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.png +0 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/skills/remotion-best-practices/remotion-markup/SKILL.md +365 -0
- package/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.png +0 -0
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/audio.md +4 -2
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/calculate-metadata.md +4 -2
- package/skills/remotion-best-practices/remotion-markup/compositions.md +117 -0
- package/skills/remotion-best-practices/remotion-markup/cropping.md +34 -0
- package/skills/remotion-best-practices/remotion-markup/effects.md +251 -0
- package/skills/{remotion/rules/videos.md → remotion-best-practices/remotion-markup/embedding-videos.md} +6 -4
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/ffmpeg.md +5 -1
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/gifs.md +55 -9
- package/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -0
- package/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -0
- package/skills/remotion-best-practices/remotion-markup/images.md +73 -0
- package/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -0
- package/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -0
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/lottie.md +4 -1
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/measuring-dom-nodes.md +5 -1
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/measuring-text.md +8 -2
- package/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -0
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/parameters.md +3 -1
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/SKILL.md +36 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/sequencing.md +63 -12
- package/skills/remotion-best-practices/remotion-markup/sfx.md +51 -0
- package/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -0
- package/skills/remotion-best-practices/remotion-markup/timing.md +111 -0
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/transitions.md +49 -7
- package/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -0
- package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/voiceover.md +2 -2
- package/skills/remotion-best-practices/remotion-multimedia/SKILL.md +20 -0
- package/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-audio-duration.md +1 -3
- package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-video-dimensions.md +1 -3
- package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-video-duration.md +1 -3
- package/skills/remotion-best-practices/remotion-render/SKILL.md +27 -0
- package/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-render/assets/remotion-icon.png +0 -0
- package/skills/remotion-best-practices/remotion-saas/SKILL.md +33 -0
- package/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.png +0 -0
- package/skills/remotion-best-practices/remotion-saas/framework.md +21 -0
- package/skills/remotion-best-practices/remotion-saas/player.md +33 -0
- package/skills/remotion-best-practices/remotion-saas/rendering.md +69 -0
- package/skills/remotion-best-practices/remotion-studio/SKILL.md +24 -0
- package/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.png +0 -0
- package/skills/remotion-best-practices/remotion-upgrade/SKILL.md +31 -0
- package/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -0
- package/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/skills/remotion-captions/SKILL.md +36 -0
- package/skills/remotion-captions/agents/openai.yaml +7 -0
- package/skills/remotion-captions/assets/remotion-icon.png +0 -0
- package/skills/remotion-captions/display-captions.md +190 -0
- package/skills/remotion-captions/import-srt-captions.md +73 -0
- package/skills/remotion-captions/transcribe-captions.md +70 -0
- package/skills/remotion-create/SKILL.md +68 -0
- package/skills/remotion-create/agents/openai.yaml +7 -0
- package/skills/remotion-create/assets/remotion-icon.png +0 -0
- package/skills/remotion-create/tailwind.md +11 -0
- package/skills/remotion-create/video-layout.md +9 -0
- package/skills/remotion-docs/SKILL.md +46 -0
- package/skills/remotion-docs/agents/openai.yaml +7 -0
- package/skills/remotion-docs/assets/remotion-icon.png +0 -0
- package/skills/remotion-interactivity/SKILL.md +247 -0
- package/skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/skills/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/skills/remotion-maps/SKILL.md +36 -0
- package/skills/remotion-maps/agents/openai.yaml +7 -0
- package/skills/remotion-maps/assets/remotion-icon.png +0 -0
- package/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/skills/remotion-markup/3d.md +86 -0
- package/skills/remotion-markup/SKILL.md +365 -0
- package/skills/remotion-markup/agents/openai.yaml +7 -0
- package/skills/remotion-markup/assets/remotion-icon.png +0 -0
- package/skills/remotion-markup/audio-visualization.md +198 -0
- package/skills/remotion-markup/audio.md +171 -0
- package/skills/remotion-markup/calculate-metadata.md +136 -0
- package/skills/remotion-markup/compositions.md +117 -0
- package/skills/remotion-markup/cropping.md +34 -0
- package/skills/remotion-markup/effects.md +251 -0
- package/skills/remotion-markup/embedding-videos.md +173 -0
- package/skills/remotion-markup/ffmpeg.md +38 -0
- package/skills/remotion-markup/gifs.md +187 -0
- package/skills/remotion-markup/google-fonts.md +76 -0
- package/skills/remotion-markup/html-in-canvas.md +128 -0
- package/skills/remotion-markup/images.md +73 -0
- package/skills/remotion-markup/light-leaks.md +106 -0
- package/skills/remotion-markup/local-fonts.md +69 -0
- package/skills/remotion-markup/lottie.md +73 -0
- package/skills/remotion-markup/measuring-dom-nodes.md +38 -0
- package/skills/remotion-markup/measuring-text.md +146 -0
- package/skills/remotion-markup/multi-scene-video.md +81 -0
- package/skills/remotion-markup/parameters.md +111 -0
- package/skills/remotion-markup/remotion-maps/SKILL.md +36 -0
- package/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/skills/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/skills/remotion-markup/sequencing.md +169 -0
- package/skills/remotion-markup/sfx.md +51 -0
- package/skills/remotion-markup/silence-detection.md +71 -0
- package/skills/remotion-markup/text-highlights.md +56 -0
- package/skills/remotion-markup/timing.md +111 -0
- package/skills/remotion-markup/transitions.md +239 -0
- package/skills/remotion-markup/video-editing.md +90 -0
- package/skills/remotion-markup/voiceover.md +99 -0
- package/skills/remotion-multimedia/SKILL.md +20 -0
- package/skills/remotion-multimedia/agents/openai.yaml +7 -0
- package/skills/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/skills/remotion-multimedia/get-audio-duration.md +56 -0
- package/skills/remotion-multimedia/get-video-dimensions.md +66 -0
- package/skills/remotion-multimedia/get-video-duration.md +58 -0
- package/skills/remotion-render/SKILL.md +27 -0
- package/skills/remotion-render/agents/openai.yaml +7 -0
- package/skills/remotion-render/assets/remotion-icon.png +0 -0
- package/skills/remotion-render/transparent-videos.md +106 -0
- package/skills/remotion-saas/SKILL.md +33 -0
- package/skills/remotion-saas/agents/openai.yaml +7 -0
- package/skills/remotion-saas/assets/remotion-icon.png +0 -0
- package/skills/remotion-saas/framework.md +21 -0
- package/skills/remotion-saas/player.md +33 -0
- package/skills/remotion-saas/rendering.md +69 -0
- package/skills/remotion-studio/SKILL.md +24 -0
- package/skills/remotion-studio/agents/openai.yaml +7 -0
- package/skills/remotion-studio/assets/remotion-icon.png +0 -0
- package/skills/remotion-upgrade/SKILL.md +31 -0
- package/skills/remotion-upgrade/agents/openai.yaml +7 -0
- package/skills/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/skills/remotion/SKILL.md +0 -95
- package/skills/remotion/rules/animations.md +0 -31
- package/skills/remotion/rules/assets.md +0 -78
- package/skills/remotion/rules/can-decode.md +0 -81
- package/skills/remotion/rules/charts.md +0 -120
- package/skills/remotion/rules/compositions.md +0 -154
- package/skills/remotion/rules/extract-frames.md +0 -229
- package/skills/remotion/rules/fonts.md +0 -152
- package/skills/remotion/rules/images.md +0 -134
- package/skills/remotion/rules/light-leaks.md +0 -73
- package/skills/remotion/rules/maps.md +0 -412
- package/skills/remotion/rules/sfx.md +0 -30
- package/skills/remotion/rules/subtitles.md +0 -36
- package/skills/remotion/rules/text-animations.md +0 -20
- package/skills/remotion/rules/timing.md +0 -136
- package/skills/remotion/rules/trimming.md +0 -51
- /package/skills/{remotion/rules → remotion-best-practices/remotion-captions}/transcribe-captions.md +0 -0
- /package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/3d.md +0 -0
- /package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/audio-visualization.md +0 -0
- /package/skills/{remotion/rules → remotion-best-practices/remotion-markup}/silence-detection.md +0 -0
- /package/skills/{remotion/rules → remotion-best-practices/remotion-render}/transparent-videos.md +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: text-highlights
|
|
3
|
+
description: Animated text highlights and hand-drawn annotations using @remotion/rough-notation.
|
|
4
|
+
metadata:
|
|
5
|
+
tags: text, highlights, annotations, circles, rough-notation
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Text highlights
|
|
9
|
+
|
|
10
|
+
Use `@remotion/rough-notation` to draw animated annotations around or behind text. It supports highlights, circles, underlines, strike-throughs, crossed-off text, boxes, and brackets.
|
|
11
|
+
|
|
12
|
+
Docs: https://www.remotion.dev/docs/text-highlights
|
|
13
|
+
|
|
14
|
+
Install the package using the same Remotion version as the project:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
bunx remotion add @remotion/rough-notation
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Choose the component that describes the annotation: `<Highlight>`, `<Circle>`, `<Underline>`, `<StrikeThrough>`, `<CrossedOff>`, `<Box>`, or `<Bracket>`. The component determines both the annotation style and whether it renders behind or on top of the text.
|
|
21
|
+
|
|
22
|
+
Drive `progress` from `useCurrentFrame()` so the annotation is deterministic and synchronized with the video:
|
|
23
|
+
|
|
24
|
+
```tsx
|
|
25
|
+
import {Circle, Highlight} from '@remotion/rough-notation';
|
|
26
|
+
import {interpolate, useCurrentFrame} from 'remotion';
|
|
27
|
+
|
|
28
|
+
export const TextAnnotations: React.FC = () => {
|
|
29
|
+
const frame = useCurrentFrame();
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<div style={{fontSize: 80}}>
|
|
33
|
+
This is{' '}
|
|
34
|
+
<Highlight
|
|
35
|
+
color="rgba(255, 236, 79, 0.62)"
|
|
36
|
+
progress={interpolate(frame, [15, 40], [0, 1], {
|
|
37
|
+
extrapolateLeft: 'clamp',
|
|
38
|
+
extrapolateRight: 'clamp',
|
|
39
|
+
})}
|
|
40
|
+
>
|
|
41
|
+
important
|
|
42
|
+
</Highlight>
|
|
43
|
+
, and this is{' '}
|
|
44
|
+
<Circle color="#2563eb" progress={interpolate(frame, [15, 40], [0, 1], {
|
|
45
|
+
extrapolateLeft: 'clamp',
|
|
46
|
+
extrapolateRight: 'clamp',
|
|
47
|
+
})}>
|
|
48
|
+
connected
|
|
49
|
+
</Circle>
|
|
50
|
+
.
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Keep `progress` inline, hardcoded and use `interpolate` for maximum [Studio interactivity](../remotion-interactivity/SKILL.md).
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
Drive motion with `interpolate()` over an explicit frame range.
|
|
2
|
+
To customize timing, use **`Easing.bezier`** or `Easing.spring`.
|
|
3
|
+
|
|
4
|
+
A simple linear interpolation is done using the `interpolate` function.
|
|
5
|
+
|
|
6
|
+
```ts title="Going from 0 to 1 over 0.3 seconds"
|
|
7
|
+
import { interpolate } from "remotion";
|
|
8
|
+
|
|
9
|
+
const opacity = interpolate(frame, [0, 0.3 * fps], [0, 1]);
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
By default, the values are not clamped, so the value can go outside the range [0, 1].
|
|
13
|
+
Here is how they can be clamped:
|
|
14
|
+
|
|
15
|
+
```ts title="Going from 0 to 1 over 0.3 seconds with extrapolation"
|
|
16
|
+
const opacity = interpolate(frame, [0, 0.3 * fps], [0, 1], {
|
|
17
|
+
extrapolateRight: "clamp",
|
|
18
|
+
extrapolateLeft: "clamp",
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Studio-editable animation patterns
|
|
23
|
+
|
|
24
|
+
When an animation should be editable in Remotion Studio, keep the `interpolate()` call directly in the `style` prop and prefer individual CSS transform properties:
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
// 👍 Inline editable keyframes and transform shorthands
|
|
28
|
+
style={{
|
|
29
|
+
scale: interpolate(frame, [0, 100], [0, 1]),
|
|
30
|
+
translate: interpolate(frame, [0, 100], ["0px 0px", "100px 100px"]),
|
|
31
|
+
rotate: interpolate(frame, [0, 100], ["20deg", "90deg"]),
|
|
32
|
+
}}
|
|
33
|
+
|
|
34
|
+
// 👎 Hidden values and transform strings become computed in Studio
|
|
35
|
+
const translateY = interpolate(frame, [0, 100], [0, 120]);
|
|
36
|
+
const rotation = interpolate(frame, [0, 100], [0, 20]);
|
|
37
|
+
|
|
38
|
+
style={{
|
|
39
|
+
transform: `translateY(${translateY}px) rotate(${rotation}deg)`,
|
|
40
|
+
}}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Use `transform` strings only when individual CSS transform properties do not cover the effect, such as `skew()`, `perspective()`, or order-sensitive multi-transform chains.
|
|
44
|
+
|
|
45
|
+
## Spring easing
|
|
46
|
+
|
|
47
|
+
A nice push movement with no bounce:
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
import { interpolate, Easing } from "remotion";
|
|
51
|
+
|
|
52
|
+
const opacity = interpolate(frame, [0, 0.3 * fps], [0, 1], {
|
|
53
|
+
easing: Easing.spring({damping: 200}),
|
|
54
|
+
extrapolateLeft: "clamp",
|
|
55
|
+
extrapolateRight: "clamp",
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Bézier easing
|
|
60
|
+
|
|
61
|
+
Pass values like you would to a CSS cubic-bezier function.
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import { interpolate, Easing } from "remotion";
|
|
65
|
+
|
|
66
|
+
const opacity = interpolate(frame, [0, 0.3 * fps], [0, 1], {
|
|
67
|
+
easing: Easing.bezier(0.16, 1, 0.3, 1),
|
|
68
|
+
extrapolateLeft: "clamp",
|
|
69
|
+
extrapolateRight: "clamp",
|
|
70
|
+
});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Animating scale
|
|
74
|
+
|
|
75
|
+
When animating scale, if the output is linear, the perceived scale would be smaller the larger the scale gets.
|
|
76
|
+
Use this option to compensate:
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
const scale = interpolate(frame, [0, 0.3 * fps], [0, 1], {
|
|
80
|
+
easing: Easing.bezier(0.16, 1, 0.3, 1),
|
|
81
|
+
extrapolateLeft: "clamp",
|
|
82
|
+
extrapolateRight: "clamp",
|
|
83
|
+
output: 'perceptual-scale' // <- Add this to scale animations
|
|
84
|
+
});
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Multiple keyframes
|
|
88
|
+
|
|
89
|
+
Add as many keyframes as you want. For multiple easings, pass an array with `n - 1` items:
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
const scale = interpolate(frame, [0, 1 * fps, 9 * fps, 10 * fps], [0, 1, 1, 0], {
|
|
93
|
+
easing: [Easing.bezier(0.16, 1, 0.3, 1), Easing.linear, Easing.spring({damping: 200})],
|
|
94
|
+
extrapolateLeft: "clamp",
|
|
95
|
+
extrapolateRight: "clamp",
|
|
96
|
+
output: 'perceptual-scale' // <- Add this to scale animations
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Posterization
|
|
101
|
+
|
|
102
|
+
You can intentionally reduce the frame rate for artistic reason. Use if it makes sense.
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
const scale = interpolate(frame, [0, 1 * fps], [0, 1], {
|
|
106
|
+
easing: Easing.bezier(0.16, 1, 0.3, 1),
|
|
107
|
+
extrapolateLeft: "clamp",
|
|
108
|
+
extrapolateRight: "clamp",
|
|
109
|
+
posterize: 3 // Only every 3rd frame is sampled
|
|
110
|
+
});
|
|
111
|
+
```
|
|
@@ -45,15 +45,36 @@ import { fade } from "@remotion/transitions/fade";
|
|
|
45
45
|
Any React component can be used as an overlay. For a ready-made effect, see the **light-leaks** rule.
|
|
46
46
|
|
|
47
47
|
```tsx
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
48
|
+
import {lightLeak} from '@remotion/effects/light-leak';
|
|
49
|
+
import {TransitionSeries} from '@remotion/transitions';
|
|
50
|
+
import {interpolate, Solid, useCurrentFrame, useVideoConfig} from 'remotion';
|
|
51
|
+
|
|
52
|
+
const LightLeakOverlay: React.FC = () => {
|
|
53
|
+
const frame = useCurrentFrame();
|
|
54
|
+
const {durationInFrames, height, width} = useVideoConfig();
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<Solid
|
|
58
|
+
width={width}
|
|
59
|
+
height={height}
|
|
60
|
+
effects={[
|
|
61
|
+
lightLeak({
|
|
62
|
+
progress: interpolate(frame, [0, durationInFrames - 1], [0, 1], {
|
|
63
|
+
extrapolateLeft: 'clamp',
|
|
64
|
+
extrapolateRight: 'clamp',
|
|
65
|
+
}),
|
|
66
|
+
}),
|
|
67
|
+
]}
|
|
68
|
+
/>
|
|
69
|
+
);
|
|
70
|
+
};
|
|
50
71
|
|
|
51
72
|
<TransitionSeries>
|
|
52
73
|
<TransitionSeries.Sequence durationInFrames={60}>
|
|
53
74
|
<SceneA />
|
|
54
75
|
</TransitionSeries.Sequence>
|
|
55
76
|
<TransitionSeries.Overlay durationInFrames={20}>
|
|
56
|
-
<
|
|
77
|
+
<LightLeakOverlay />
|
|
57
78
|
</TransitionSeries.Overlay>
|
|
58
79
|
<TransitionSeries.Sequence durationInFrames={60}>
|
|
59
80
|
<SceneB />
|
|
@@ -66,16 +87,37 @@ import { LightLeak } from "@remotion/light-leaks";
|
|
|
66
87
|
Transitions and overlays can coexist in the same `<TransitionSeries>`, but an overlay cannot be adjacent to a transition or another overlay.
|
|
67
88
|
|
|
68
89
|
```tsx
|
|
69
|
-
import {
|
|
70
|
-
import {
|
|
71
|
-
import {
|
|
90
|
+
import {lightLeak} from '@remotion/effects/light-leak';
|
|
91
|
+
import {TransitionSeries, linearTiming} from '@remotion/transitions';
|
|
92
|
+
import {fade} from '@remotion/transitions/fade';
|
|
93
|
+
import {interpolate, Solid, useCurrentFrame, useVideoConfig} from 'remotion';
|
|
94
|
+
|
|
95
|
+
const LightLeakOverlay: React.FC = () => {
|
|
96
|
+
const frame = useCurrentFrame();
|
|
97
|
+
const {durationInFrames, height, width} = useVideoConfig();
|
|
98
|
+
|
|
99
|
+
return (
|
|
100
|
+
<Solid
|
|
101
|
+
width={width}
|
|
102
|
+
height={height}
|
|
103
|
+
effects={[
|
|
104
|
+
lightLeak({
|
|
105
|
+
progress: interpolate(frame, [0, durationInFrames - 1], [0, 1], {
|
|
106
|
+
extrapolateLeft: 'clamp',
|
|
107
|
+
extrapolateRight: 'clamp',
|
|
108
|
+
}),
|
|
109
|
+
}),
|
|
110
|
+
]}
|
|
111
|
+
/>
|
|
112
|
+
);
|
|
113
|
+
};
|
|
72
114
|
|
|
73
115
|
<TransitionSeries>
|
|
74
116
|
<TransitionSeries.Sequence durationInFrames={60}>
|
|
75
117
|
<SceneA />
|
|
76
118
|
</TransitionSeries.Sequence>
|
|
77
119
|
<TransitionSeries.Overlay durationInFrames={30}>
|
|
78
|
-
<
|
|
120
|
+
<LightLeakOverlay />
|
|
79
121
|
</TransitionSeries.Overlay>
|
|
80
122
|
<TransitionSeries.Sequence durationInFrames={60}>
|
|
81
123
|
<SceneB />
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
Remotion can be used for bare-bones video editing in the Studio. Choose the source structure based on the editing behavior you want:
|
|
2
|
+
|
|
3
|
+
- Use independently positioned clips when moving or resizing one clip should not affect any other clip.
|
|
4
|
+
- Use ripple editing when changing one clip's duration should reposition every clip after it.
|
|
5
|
+
|
|
6
|
+
Keep every editable clip as its own authored JSX node. Do not generate editable clips with `.map()` or another programmatic loop.
|
|
7
|
+
|
|
8
|
+
## Independently positioned clips
|
|
9
|
+
|
|
10
|
+
Place every `<Video>` directly in the composition and hardcode its timing props. `from={0}` may be omitted:
|
|
11
|
+
|
|
12
|
+
```tsx
|
|
13
|
+
<Video
|
|
14
|
+
src="https://remotion.media/video.mp4"
|
|
15
|
+
trimBefore={0}
|
|
16
|
+
durationInFrames={78}
|
|
17
|
+
/>
|
|
18
|
+
<Video
|
|
19
|
+
src="https://remotion.media/video.webm"
|
|
20
|
+
trimBefore={12}
|
|
21
|
+
from={78}
|
|
22
|
+
durationInFrames={66}
|
|
23
|
+
/>
|
|
24
|
+
<Video
|
|
25
|
+
src="https://remotion.media/video.mp4"
|
|
26
|
+
trimBefore={72}
|
|
27
|
+
from={144}
|
|
28
|
+
durationInFrames={90}
|
|
29
|
+
/>
|
|
30
|
+
<Video
|
|
31
|
+
src="https://remotion.media/video.webm"
|
|
32
|
+
trimBefore={58}
|
|
33
|
+
from={234}
|
|
34
|
+
durationInFrames={72}
|
|
35
|
+
/>
|
|
36
|
+
<Video
|
|
37
|
+
src="https://remotion.media/video.mp4"
|
|
38
|
+
trimBefore={180}
|
|
39
|
+
from={306}
|
|
40
|
+
durationInFrames={60}
|
|
41
|
+
/>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
- `from` is the clip's absolute start frame in its parent timeline.
|
|
45
|
+
- `durationInFrames` is how many frames the clip remains visible.
|
|
46
|
+
- `trimBefore` is how many source frames are skipped before playback begins.
|
|
47
|
+
- Each `<Video>` must be a separate JSX node. Add a descriptive `name` when useful in the Studio timeline.
|
|
48
|
+
- `from`, `durationInFrames`, and `trimBefore` must be hardcoded frame values. Do not compute them.
|
|
49
|
+
- Import `<Video>` from `@remotion/media`.
|
|
50
|
+
|
|
51
|
+
Moving or resizing one of these clips does not reposition later clips. Gaps and overlaps are therefore allowed.
|
|
52
|
+
|
|
53
|
+
## Ripple editing with `TransitionSeries`
|
|
54
|
+
|
|
55
|
+
“Ripple editing” is the standard video-editing term for changing one clip and automatically shifting everything after it.
|
|
56
|
+
In Remotion, a `<TransitionSeries>` provides this sequential, cascading timing model while also allowing transitions between clips.
|
|
57
|
+
|
|
58
|
+
Read [transitions.md](transitions.md) for transition types, timing options, installation instructions, and composition-duration calculation.
|
|
59
|
+
|
|
60
|
+
Keep the markup like this:
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
<TransitionSeries name="Video timeline">
|
|
64
|
+
<TransitionSeries.Sequence name="Clip 1" durationInFrames={39}>
|
|
65
|
+
<Video
|
|
66
|
+
src="https://remotion.media/video.mp4"
|
|
67
|
+
trimBefore={0}
|
|
68
|
+
/>
|
|
69
|
+
</TransitionSeries.Sequence>
|
|
70
|
+
<TransitionSeries.Sequence name="Clip 2" durationInFrames={45}>
|
|
71
|
+
<Video
|
|
72
|
+
src="https://remotion.media/video.webm"
|
|
73
|
+
trimBefore={8}
|
|
74
|
+
/>
|
|
75
|
+
</TransitionSeries.Sequence>
|
|
76
|
+
<TransitionSeries.Sequence name="Clip 3" durationInFrames={43}>
|
|
77
|
+
<Video
|
|
78
|
+
src="https://remotion.media/video.mp4"
|
|
79
|
+
trimBefore={60}
|
|
80
|
+
/>
|
|
81
|
+
</TransitionSeries.Sequence>
|
|
82
|
+
</TransitionSeries>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- The `<TransitionSeries.Sequence>` is the editable clip row in the Studio timeline.
|
|
86
|
+
- Dragging its right edge changes `durationInFrames` and repositions every later sequence.
|
|
87
|
+
- Do not set `from` on `<TransitionSeries.Sequence>`; the series calculates each start frame.
|
|
88
|
+
- Hardcode all numeric values.
|
|
89
|
+
- Do not programmatically create multiple `<TransitionSeries.Sequence>` (no `.map`). Each instance must be hard-coded.
|
|
90
|
+
- Import `<Video>` from `@remotion/media`. Import `<TransitionSeries>` from `@remotion/transitions`. If needing to install: `npx remotion add @remotion/media @remotion/transitions`
|
|
@@ -7,7 +7,7 @@ metadata:
|
|
|
7
7
|
|
|
8
8
|
# Adding AI voiceover to a Remotion composition
|
|
9
9
|
|
|
10
|
-
Use ElevenLabs TTS to generate speech audio per scene, then use [`calculateMetadata`](./calculate-metadata) to dynamically size the composition to match the audio.
|
|
10
|
+
Use ElevenLabs TTS to generate speech audio per scene, then use [`calculateMetadata`](./calculate-metadata.md) to dynamically size the composition to match the audio.
|
|
11
11
|
|
|
12
12
|
## Prerequisites
|
|
13
13
|
|
|
@@ -55,7 +55,7 @@ writeFileSync(`public/voiceover/${compositionId}/${scene.id}.mp3`, audioBuffer);
|
|
|
55
55
|
|
|
56
56
|
## Dynamic composition duration with calculateMetadata
|
|
57
57
|
|
|
58
|
-
Use [`calculateMetadata`](./calculate-metadata.md) to measure the [audio durations](
|
|
58
|
+
Use [`calculateMetadata`](./calculate-metadata.md) to measure the [audio durations](../remotion-multimedia/get-audio-duration.md) and set the composition length accordingly.
|
|
59
59
|
|
|
60
60
|
```tsx
|
|
61
61
|
import { CalculateMetadataFunction, staticFile } from "remotion";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: remotion-multimedia
|
|
3
|
+
description: Interacting with Mediabunny
|
|
4
|
+
version: 4.0.519
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Mediabunny is a multimedia library for dealing with audio and video in the browser.
|
|
8
|
+
Here is a compact overview of its capabilities: https://mediabunny.dev/llms.txt
|
|
9
|
+
|
|
10
|
+
## Getting audio duration
|
|
11
|
+
|
|
12
|
+
See [get-audio-duration.md](get-audio-duration.md) for getting the duration of an audio file in seconds with Mediabunny.
|
|
13
|
+
|
|
14
|
+
## Getting video dimensions
|
|
15
|
+
|
|
16
|
+
See [get-video-dimensions.md](get-video-dimensions.md) for getting the width and height of a video file with Mediabunny.
|
|
17
|
+
|
|
18
|
+
## Getting video duration
|
|
19
|
+
|
|
20
|
+
See [get-video-duration.md](get-video-duration.md) for getting the duration of a video file in seconds with Mediabunny.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: '/remotion-multimedia'
|
|
3
|
+
short_description: 'Inspect browser-based audio and video media'
|
|
4
|
+
icon_small: './assets/remotion-icon.png'
|
|
5
|
+
icon_large: './assets/remotion-icon.png'
|
|
6
|
+
brand_color: '#0B84F3'
|
|
7
|
+
default_prompt: '$remotion-multimedia: Make my video the same duration as the footage'
|
|
Binary file
|
package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-audio-duration.md
RENAMED
|
@@ -17,9 +17,7 @@ import { Input, ALL_FORMATS, UrlSource } from "mediabunny";
|
|
|
17
17
|
export const getAudioDuration = async (src: string) => {
|
|
18
18
|
const input = new Input({
|
|
19
19
|
formats: ALL_FORMATS,
|
|
20
|
-
source: new UrlSource(src,
|
|
21
|
-
getRetryDelay: () => null,
|
|
22
|
-
}),
|
|
20
|
+
source: new UrlSource(src),
|
|
23
21
|
});
|
|
24
22
|
|
|
25
23
|
const durationInSeconds = await input.computeDuration();
|
|
@@ -17,9 +17,7 @@ import { Input, ALL_FORMATS, UrlSource } from "mediabunny";
|
|
|
17
17
|
export const getVideoDimensions = async (src: string) => {
|
|
18
18
|
const input = new Input({
|
|
19
19
|
formats: ALL_FORMATS,
|
|
20
|
-
source: new UrlSource(src,
|
|
21
|
-
getRetryDelay: () => null,
|
|
22
|
-
}),
|
|
20
|
+
source: new UrlSource(src),
|
|
23
21
|
});
|
|
24
22
|
|
|
25
23
|
const videoTrack = await input.getPrimaryVideoTrack();
|
package/skills/{remotion/rules → remotion-best-practices/remotion-multimedia}/get-video-duration.md
RENAMED
|
@@ -17,9 +17,7 @@ import { Input, ALL_FORMATS, UrlSource } from "mediabunny";
|
|
|
17
17
|
export const getVideoDuration = async (src: string) => {
|
|
18
18
|
const input = new Input({
|
|
19
19
|
formats: ALL_FORMATS,
|
|
20
|
-
source: new UrlSource(src,
|
|
21
|
-
getRetryDelay: () => null,
|
|
22
|
-
}),
|
|
20
|
+
source: new UrlSource(src),
|
|
23
21
|
});
|
|
24
22
|
|
|
25
23
|
const durationInSeconds = await input.computeDuration();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: remotion-render
|
|
3
|
+
description: Export a Remotion video
|
|
4
|
+
version: 4.0.519
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## General rendering strategy
|
|
8
|
+
|
|
9
|
+
Render a video using:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
npx remotion render
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Full list of options: https://www.remotion.dev/docs/cli/render.md
|
|
16
|
+
|
|
17
|
+
Render a still using:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
npx remotion still
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Full list of options: https://www.remotion.dev/docs/cli/still.md
|
|
24
|
+
|
|
25
|
+
## Transparent videos
|
|
26
|
+
|
|
27
|
+
See [Transparent videos](./transparent-videos.md) for rendering out a video with transparency.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: '/remotion-render'
|
|
3
|
+
short_description: 'Export Remotion videos and stills'
|
|
4
|
+
icon_small: './assets/remotion-icon.png'
|
|
5
|
+
icon_large: './assets/remotion-icon.png'
|
|
6
|
+
brand_color: '#0B84F3'
|
|
7
|
+
default_prompt: '$remotion-render: Render this as transparent ProRes'
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: remotion-saas
|
|
3
|
+
description: Build an app with Remotion
|
|
4
|
+
version: 4.0.519
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
One can build apps with Remotion.
|
|
8
|
+
It is possible to have a simple form and hook it up to a render, or have a complex video editor.
|
|
9
|
+
|
|
10
|
+
## Choosing a template or a framework
|
|
11
|
+
|
|
12
|
+
We have several templates for SaaS which can be cloned or used as a reference.
|
|
13
|
+
See [Choosing a framework](framework.md) for help choosing a template or framework.
|
|
14
|
+
|
|
15
|
+
## The `<Player>`
|
|
16
|
+
|
|
17
|
+
This component allows embedding a Remotion preview in a React app. See [Player](player.md) for more information about the Player.
|
|
18
|
+
|
|
19
|
+
## Rendering
|
|
20
|
+
|
|
21
|
+
There are client-side and server-side rendering options available. See [Rendering](rendering.md) for advice on how to choose, and about the Lambda, Vercel, Node.js and Cloudflare options.
|
|
22
|
+
|
|
23
|
+
## With Vue
|
|
24
|
+
|
|
25
|
+
See https://www.remotion.dev/docs/vue.md for how to use Remotion with Vue.
|
|
26
|
+
|
|
27
|
+
## Angular
|
|
28
|
+
|
|
29
|
+
See https://www.remotion.dev/docs/angular.md for how to use Remotion with Angular.
|
|
30
|
+
|
|
31
|
+
## Svelte
|
|
32
|
+
|
|
33
|
+
See https://www.remotion.dev/docs/svelte.md for how to use Remotion with Svelte.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: '/remotion-saas'
|
|
3
|
+
short_description: 'Build apps that preview and render videos'
|
|
4
|
+
icon_small: './assets/remotion-icon.png'
|
|
5
|
+
icon_large: './assets/remotion-icon.png'
|
|
6
|
+
brand_color: '#0B84F3'
|
|
7
|
+
default_prompt: '$remotion-saas: Turn my video into an app.'
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: framework
|
|
3
|
+
description: Choose a framework for a Remotion-based app.
|
|
4
|
+
metadata:
|
|
5
|
+
tags: remotion, saas, templates, nextjs, react-router, vercel, lambda, cloudflare
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Remotion can be used with any React framework.
|
|
9
|
+
|
|
10
|
+
We offer the following templates:
|
|
11
|
+
|
|
12
|
+
- Next.js App Router with Tailwind: https://github.com/remotion-dev/template-next-app-dir-tailwind. Uses Lambda as default rendering choice.
|
|
13
|
+
- Next.js App Router without Tailwind: https://www.remotion.dev/templates/next-no-tailwind. Uses Lambda as default rendering choice.
|
|
14
|
+
- Next.js Pages Router: https://github.com/remotion-dev/template-next-pages-dir. Uses Lambda as default rendering choice.
|
|
15
|
+
- Vercel Sandbox rendering: https://github.com/remotion-dev/template-vercel. Uses Vercel as default rendering choice.
|
|
16
|
+
- React Router 7: https://github.com/remotion-dev/template-react-router. Uses Lambda as default rendering choice.
|
|
17
|
+
- Express.js render server: `packages/template-render-server`: https://github.com/remotion-dev/template-render-server. Uses Node.js as default rendering choice.
|
|
18
|
+
|
|
19
|
+
These can be cloned directly, or used as a reference.
|
|
20
|
+
|
|
21
|
+
For an existing app, see https://www.remotion.dev/docs/brownfield-installation.md.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: player
|
|
3
|
+
description: Embed a Remotion preview in a React app with @remotion/player.
|
|
4
|
+
metadata:
|
|
5
|
+
tags: remotion, player, preview, react
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Use `@remotion/player` when the user wants an interactive preview in React.
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import {Player} from '@remotion/player';
|
|
12
|
+
import {MyVideo} from './remotion/MyVideo';
|
|
13
|
+
|
|
14
|
+
export const App: React.FC = () => {
|
|
15
|
+
return (
|
|
16
|
+
<Player
|
|
17
|
+
component={MyVideo}
|
|
18
|
+
durationInFrames={120}
|
|
19
|
+
compositionWidth={1920}
|
|
20
|
+
compositionHeight={1080}
|
|
21
|
+
fps={30}
|
|
22
|
+
controls
|
|
23
|
+
/>
|
|
24
|
+
);
|
|
25
|
+
};
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
If metadata is dynamic, sync the Player props manually or reuse the composition's `calculateMetadata()` logic.
|
|
29
|
+
Link https://www.remotion.dev/docs/dynamic-metadata.md#with-the-player.
|
|
30
|
+
|
|
31
|
+
Full API for the Player: https://www.remotion.dev/docs/player/player.md.
|
|
32
|
+
|
|
33
|
+
For a SaaS app that also needs output files, combine the Player preview with [framework.md](framework.md) or [rendering.md](rendering.md).
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rendering
|
|
3
|
+
description: Advice on programmatic rendering with Remotion.
|
|
4
|
+
metadata:
|
|
5
|
+
tags: remotion, saas, ssr, renderer, node, bun, render-server
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This is about rendering videos programmatically with Remotion.
|
|
9
|
+
For one-off renders, `npx remotion render` or the Studio is better suited.
|
|
10
|
+
|
|
11
|
+
## Comparison of SSR methods
|
|
12
|
+
|
|
13
|
+
See https://www.remotion.dev/docs/compare-ssr.md for the tradeoffs between server-side rendering options.
|
|
14
|
+
|
|
15
|
+
## Plain Node.js APIs
|
|
16
|
+
|
|
17
|
+
Can be used on traditional long-running servers that can spawn a headless browser.
|
|
18
|
+
|
|
19
|
+
- SSR overview: https://www.remotion.dev/docs/ssr.md
|
|
20
|
+
- Renderer package: https://www.remotion.dev/docs/renderer.md
|
|
21
|
+
- Node SSR: https://www.remotion.dev/docs/ssr-node.md
|
|
22
|
+
|
|
23
|
+
For a reference server with render, progress, and cancel endpoints, see https://github.com/remotion-dev/template-render-server.
|
|
24
|
+
|
|
25
|
+
## Remotion Lambda
|
|
26
|
+
|
|
27
|
+
Render Remotion videos on AWS Lambda. This is the fastest and most scalable way to render Remotion videos.
|
|
28
|
+
|
|
29
|
+
- Overview: https://www.remotion.dev/docs/lambda.md
|
|
30
|
+
- API: https://www.remotion.dev/docs/lambda/api.md
|
|
31
|
+
|
|
32
|
+
### Steps to set up Lambda
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
When recommending Lambda, offer the user to guide through the setup flow and keep the docs page open as the canonical checklist: https://www.remotion.dev/docs/lambda/setup.md.
|
|
36
|
+
|
|
37
|
+
Cover these steps at a high level and link the exact docs page for the detailed AWS console clicks:
|
|
38
|
+
|
|
39
|
+
1. Confirm the user has an AWS account, a target region, and a Remotion project or SaaS template.
|
|
40
|
+
2. Install `@remotion/lambda` using `npx remotion add @remotion/lambda`.
|
|
41
|
+
3. Create the Lambda role policy, Lambda role, IAM user, user access key, and user policy from the generated Remotion policy commands.
|
|
42
|
+
4. Store credentials in `.env` using `REMOTION_AWS_ACCESS_KEY_ID` and `REMOTION_AWS_SECRET_ACCESS_KEY`; never ask the user to paste secrets into chat.
|
|
43
|
+
5. Run the Lambda policy validator if the user wants to verify permissions before deploying; use the user's package manager or the command shown in the docs (`npx remotion lambda policies validate`).
|
|
44
|
+
6. Deploy the Lambda function. Mention that functions are bound to the Remotion version and must be redeployed after Remotion upgrades.
|
|
45
|
+
7. Deploy the Remotion site with a stable site name. Mention that the site must be redeployed after changing the Remotion source.
|
|
46
|
+
8. Check Lambda quotas using the user's package manager or the command shown in the docs (`npx remotion lambda quotas`); new AWS accounts may need a concurrency limit increase.
|
|
47
|
+
9. Trigger a first render, then wire render and progress endpoints using the chosen SaaS template or Node APIs.
|
|
48
|
+
|
|
49
|
+
Before production, remind the user to handle rate limiting, authentication, cost controls, output privacy, render cleanup, and progress/error reporting.
|
|
50
|
+
|
|
51
|
+
## Vercel
|
|
52
|
+
|
|
53
|
+
Ideal if planning to deploy the app to Vercel.
|
|
54
|
+
|
|
55
|
+
See https://www.remotion.dev/docs/vercel-sandbox.md for more info.
|
|
56
|
+
|
|
57
|
+
## GitHub Actions
|
|
58
|
+
|
|
59
|
+
See https://www.remotion.dev/docs/ssr.md#render-using-github-actions for how to render on GitHub Actions.
|
|
60
|
+
Don't recommend unless asked for.
|
|
61
|
+
|
|
62
|
+
## Azure Container Apps
|
|
63
|
+
|
|
64
|
+
See https://www.remotion.dev/docs/azure-container-apps.md if rendering on Azure Container Apps is requested.
|
|
65
|
+
Don't recommend unless asked for.
|
|
66
|
+
|
|
67
|
+
## Cloudflare Containers
|
|
68
|
+
|
|
69
|
+
See https://www.remotion.dev/docs/cloudflare-containers.md if rendering on Cloudflare Containers is requested.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: remotion-studio
|
|
3
|
+
description: Preview a Remotion video
|
|
4
|
+
version: 4.0.519
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Execute the following command:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx remotion studio --no-open
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
If the Studio is already opened, the URL will be printed and the command will exit.
|
|
14
|
+
Otherwise, a long-running process will start, and the URL will be printed.
|
|
15
|
+
|
|
16
|
+
Open the URL in the browser.
|
|
17
|
+
|
|
18
|
+
## Useful flags
|
|
19
|
+
|
|
20
|
+
| Argument | Purpose |
|
|
21
|
+
| ----------------- | --------------------------------------------------------------------------------------------- |
|
|
22
|
+
| `--log=<level>` | Set `error`, `warn`, `info` (default), or `verbose` logging. |
|
|
23
|
+
| `--port=<number>` | Request a Studio server port; otherwise Remotion finds a free port. |
|
|
24
|
+
| `--force-new` | Start another Studio instance even when one is already running for the same project and port. |
|