Make nested composition `data-playback-start` also shift descendant media
メンテナーはふだん 1 日以内に返信
@valeriangalliat がすでに取り組んでいます。
2026年9月10日 から。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- typescript
- 領域
- web-dev
調査の方向性
Start by reading the preview startResolver and render parseSubCompositions paths described in the issue, then compare how nested data-playback-start reaches descendant video and audio elements. Decide the intended contract with maintainers; done means the chosen behavior is consistent in Studio preview, CLI preview, and render capture, with tests or a documented alternative.
索引モデルが issue の本文から書いたものです。
説明
Problem
data-playback-start on a nested composition slot seeks the child GSAP timeline. Nested <video> / <audio> still play from local t=0 / their own data-media-start. Preview (startResolver) and render (parseSubCompositions) agree.
Docs treat a nested composition’s data-playback-start as which moment of the child GSAP timeline shows first, not as a trim of media inside that scene.
The gap: start-trimming a nested scene (NLE-style) does not move media inside it.
I'm not sure whether that split is the intentional contract, or whether a slot in-point should also shift descendant media.
➡️ I have code ready for this here (outline below) - happy to make a PR with this if that's a welcome addition.
Proposed solution
If a nested composition’s data-playback-start should also trim media inside that scene (NLE-style):
<div
data-composition-id="scene"
data-composition-src="compositions/scene.html"
data-start="1"
data-duration="2"
data-playback-start="1.5"
></div>
A nested <video data-start="0"> would appear at t=1, playing from 1.5s into the file, not from the start of the file.
- Descendant media is shifted by the slot offset (
master = hostStart − playbackStart + local) - Clips that end entirely before that offset never appear
- Clips that overlap it start at the slot and skip the overlap in the file
- Same behavior in preview and in render extract
- On the slot,
data-media-startstays an alias ofdata-playback-start. On<video>/<audio>,data-media-startstays a source-file offset for that element only.
Alternatives considered
- Leave as-is (GSAP only). Authors set
data-media-starton each nested<video>/<audio>. Awkward for “trim this nested scene,” and wrong for media that is not at local t=0. - Rewrite child attributes when inlining so extract never sees a slot offset. Preview still has to apply
hostStart − playbackStart, so the two paths can drift. - Docs only. Spell out that composition
data-playback-startnever applies to nested media. No code change.
Additional context
Repro (any clip.mp4 at least 4s):
<!-- index.html -->
<div data-composition-id="main" data-start="0" data-duration="4" data-width="1920" data-height="1080">
<div
data-composition-id="scene"
data-composition-src="compositions/scene.html"
data-start="1"
data-duration="2"
data-playback-start="1.5"
></div>
</div>
<!-- compositions/scene.html -->
<template id="scene-template">
<div data-composition-id="scene" data-width="1920" data-height="1080">
<video id="clip" src="clip.mp4" data-start="0" data-duration="4" muted></video>
</div>
</template>
On current main (0.7.107): GSAP on scene starts 1.5s into that timeline; the <video> starts at the beginning of the file.
Studio preview, CLI preview, and render capture all use the same runtime seek for nested-comp GSAP, so that half is consistent. Nested media is also consistent: all paths ignore the slot’s data-playback-start.
- 主要言語
- TypeScript
- スター
- 54.1k
- フォーク
- 4.9k
- 平均マージ
- 7時間 18分
- マージ済み PR(30日)
- 784
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
heygen-com/hyperframes のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
heygen-com/hyperframes#5027 ·
メンテナーはふだん 1 日以内に返信
-
fix(producer): propagate useGpu to HDR layered streaming encoder対応中かも @Monster-GM が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 87/100
heygen-com/hyperframes#5002 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
heygen-com/hyperframes#4702 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Studio catalog prompt editor has no accessible name対応中かも @lorenzozanee が 12 日前に担当しました。 オープンbug difficulty/easy triage/ready
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
heygen-com/hyperframes#4384 ·
メンテナーはふだん 1 日以内に返信
-
lint: validate composition variables declared on supported root elements再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンbug difficulty/easy triage/ready
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
heygen-com/hyperframes#4383 ·
メンテナーはふだん 1 日以内に返信
heygen-com/hyperframes の issue をすべて見る
似ている issue
-
bot:ai-assisted status:untriaged
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
midnightntwrk/midnight-js#1424 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
mksglu/context-mode#1268 ·
メンテナーはふだん 5 日以内に返信
-
[bug] Setup fails with "Cannot find matching keyid" when an older Node's corepack is on PATH対応中かも @EyalPoly が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
MystenLabs/MemWal#1124 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
Edit:オープンcheck:failed streams:edit
難易度 2/5 1〜3時間 初心者へのやさしさ 60/100
iptv-org/iptv#54352 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信