Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Replay Details] Ensure that the player works inline on issue details #67877

Closed
Tracked by #63255
billyvg opened this issue Mar 28, 2024 · 0 comments · Fixed by #68368
Closed
Tracked by #63255

[Replay Details] Ensure that the player works inline on issue details #67877

billyvg opened this issue Mar 28, 2024 · 0 comments · Fixed by #68368

Comments

@billyvg
Copy link
Member

billyvg commented Mar 28, 2024

The replay preview provides a window (starting/ending timestamps) to clip the replay. For regular replays, we can simply filter all replay events that fall into this window. The video player functions a bit differently since it's a list of videos (with potentially differing durations) that are stitched together with JS. This means that we may need to start inside the middle of a video, and stop in the middle of the video if we wanted to keep previews to a specific duration.

We have an external timer that runs to track the current scrubber time. It ideally (it currently isn't fully implemented yet, e.g. it will desync in non-ideal network conditions) syncs with the current video that is playing. We can add an end time to the timer so that it stops any videos that are playing.

A bit of refactoring will be needed though. Here's at least one place that we need to fix. This causes the currentTime to be negative. The timer is more or less independent of the timestamps of the pseudo rrweb events, so it [probably] doesn't need to keep track of an offset.

(Note I've been using this replay to test)

@billyvg billyvg assigned billyvg and unassigned billyvg Mar 28, 2024
michellewzhang added a commit that referenced this issue Apr 9, 2024
Fixes #67877

Update `replayContext`, `replayReader`, and `videoReplayer` to make the
issue details replay clip work for video replays.

Major changes:
- `replayReader`: 
- in `_applyClipWindow`, setting `_startOffsetMs` was causing some
playback issues with the video timer. we don't really need the offset
since the video runs on an external timer, and we can directly tell the
video player when to start
- we also don't need a lot of the functionality relating to
filtering/offsetting breadcrumb/span/etc frames in `_applyClipWindow`
(yet) so we return before these are done
- `replayContext`: 
- now we're sending clip start/end times into here, and these clip
window times get initialized into the video player. note that for
non-clip video replays, the clip window will be undefined (desired).
- `videoReplayer`: if there's a clip window passed in, we do some extra
logic:
  - adjust the start time to be the clip start
  - tell the timer to stop when the clip duration is up

<img width="579" alt="SCR-20240405-ilxf"
src="https://github.com/getsentry/sentry/assets/56095982/286f1fd4-488b-479f-957a-d6ca15fc89f9">




https://github.com/getsentry/sentry/assets/56095982/f24a3093-d993-477d-a914-ad67216724f8
@github-actions github-actions bot locked and limited conversation to collaborators Apr 25, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant