[GH-ISSUE #115] Feature Request: Replay Support for Sports Streaming #59

Closed
opened 2026-03-02 03:59:51 +03:00 by kerem · 21 comments
Owner

Originally created by @fahir95 on GitHub (Apr 17, 2025).
Original GitHub issue: https://github.com/eerimoq/moblin/issues/115

Hi @eerimoq,

First of all, thank you for your amazing work on Moblin—it's a very promising project for lightweight media streaming. I'm currently exploring Moblin for a sports streaming setup and was wondering if you would consider adding Replay support as a feature.

Use Case:
In sports streaming, it's often essential to allow viewers to Re-Watch key moments (like goals, wickets, fouls, etc.) shortly after they happen. A replay feature—perhaps allowing short clip buffering or segment rewinds—would be incredibly useful for this kind of content.

Possible Implementation Ideas:
Ability to mark and replay specific time segments.

Configurable replay duration (e.g., replay the last 10–30 seconds).

Temporary video buffer to enable instant replay functionality.

Option to trigger replay.

Thanks again for this great tool, and looking forward to your thoughts on this idea!

Originally created by @fahir95 on GitHub (Apr 17, 2025). Original GitHub issue: https://github.com/eerimoq/moblin/issues/115 Hi @eerimoq, First of all, thank you for your amazing work on Moblin—it's a very promising project for lightweight media streaming. I'm currently exploring Moblin for a sports streaming setup and was wondering if you would consider adding **Replay** support as a feature. Use Case: In sports streaming, it's often essential to allow viewers to **Re-Watch** key moments (like goals, wickets, fouls, etc.) shortly after they happen. A replay feature—perhaps allowing short clip buffering or segment rewinds—would be incredibly useful for this kind of content. Possible Implementation Ideas: Ability to mark and replay specific time segments. Configurable replay duration (e.g., replay the last 10–30 seconds). Temporary video buffer to enable instant replay functionality. Option to trigger replay. Thanks again for this great tool, and looking forward to your thoughts on this idea!
kerem closed this issue 2026-03-02 03:59:52 +03:00
Author
Owner

@eerimoq commented on GitHub (Apr 17, 2025):

Are there any screenshots/videos that showcases the features you are looking for?

<!-- gh-comment-id:2812473161 --> @eerimoq commented on GitHub (Apr 17, 2025): Are there any screenshots/videos that showcases the features you are looking for?
Author
Owner

@fahir95 commented on GitHub (Apr 17, 2025):

Hi @eerimoq,
Thank you for your response.

For reference, CameraFi Live has implemented a similar replay feature in their Android beta version. You can find more details below:

https://blog.camerafi.com/2025/01/android-camerafi-live-replay-feature.html

https://blog.camerafi.com/2024/11/android-camerafi-live-replay-beta.html

It would be great if Moblin could support replay functionality with the option to set the playback speed—including slow-motion modes like 0.25x or 0.5x—for better viewing of key moments during live sports streaming.

<!-- gh-comment-id:2812550170 --> @fahir95 commented on GitHub (Apr 17, 2025): Hi @eerimoq, Thank you for your response. For reference, CameraFi Live has implemented a similar replay feature in their Android beta version. You can find more details below: https://blog.camerafi.com/2025/01/android-camerafi-live-replay-feature.html https://blog.camerafi.com/2024/11/android-camerafi-live-replay-beta.html It would be great if Moblin could support replay functionality with the option to set the playback speed—including slow-motion modes like 0.25x or 0.5x—for better viewing of key moments during live sports streaming.
Author
Owner

@eerimoq commented on GitHub (Apr 21, 2025):

Replaying audio is not essential, right?

<!-- gh-comment-id:2817613881 --> @eerimoq commented on GitHub (Apr 21, 2025): Replaying audio is not essential, right?
Author
Owner

@fahir95 commented on GitHub (Apr 21, 2025):

Yes. Its not essential.

<!-- gh-comment-id:2817644744 --> @fahir95 commented on GitHub (Apr 21, 2025): Yes. Its not essential.
Author
Owner

@eerimoq commented on GitHub (Apr 21, 2025):

Some ideas:

Image
Replay quick button to the right.

Image
Controls showing when quick button is active.
Select start of replay position with the slider. Ideally the slider represents 30 seconds of video.
The green image will show the frame at current slider position.
Tap the play icon to play the replay. Possibly with short transition effect.

Image
Replay playing.
Tap the stop button or replay quick button to go back to live video.

<!-- gh-comment-id:2817681231 --> @eerimoq commented on GitHub (Apr 21, 2025): Some ideas: ![Image](https://github.com/user-attachments/assets/046beb70-5992-45bd-b6b0-7a503a1344fe) Replay quick button to the right. ![Image](https://github.com/user-attachments/assets/aeffbe4c-d0dc-4f04-b19c-7e456f824bc9) Controls showing when quick button is active. Select start of replay position with the slider. Ideally the slider represents 30 seconds of video. The green image will show the frame at current slider position. Tap the play icon to play the replay. Possibly with short transition effect. ![Image](https://github.com/user-attachments/assets/47b8d563-1adc-40b3-9d35-a3eaad7a47e1) Replay playing. Tap the stop button or replay quick button to go back to live video.
Author
Owner

@fahir95 commented on GitHub (Apr 21, 2025):

This looks great!!

One suggestion—if it's possible also set the replay trigger similarly to how OBS instant replay handles, that would be really intuitive.
So when the user clicks the replay button, it could automatically capture a specific time segment (say, the last 10 seconds), then either play it immediately or with a short delay (like 5 seconds).
After the replay finishes, it would seamlessly switch back to the main/live scene.

Let me know what you think, or if you’d like help figuring out the logic for this flow!

<!-- gh-comment-id:2817745441 --> @fahir95 commented on GitHub (Apr 21, 2025): This looks great!! One suggestion—if it's possible also set the replay trigger similarly to how OBS instant replay handles, that would be really intuitive. So when the user clicks the replay button, it could automatically capture a specific time segment (say, the last 10 seconds), then either play it immediately or with a short delay (like 5 seconds). After the replay finishes, it would seamlessly switch back to the main/live scene. Let me know what you think, or if you’d like help figuring out the logic for this flow!
Author
Owner

@eerimoq commented on GitHub (Apr 21, 2025):

Small demo of first UI design:

https://github.com/user-attachments/assets/17969514-b0d0-4a89-83d9-eff1f61ed43f

<!-- gh-comment-id:2818094241 --> @eerimoq commented on GitHub (Apr 21, 2025): Small demo of first UI design: https://github.com/user-attachments/assets/17969514-b0d0-4a89-83d9-eff1f61ed43f
Author
Owner

@mikeful commented on GitHub (Apr 21, 2025):

Random suggestions idea:

  • 3 instant replay buttons would be useful: 5, 10 and 15 seconds, should display specified amout of video from end of the buffer and switch back to live
  • Configurable instant replay times? Maybe allow override of 15 second one if that's simpler
  • Full buffer editor be better with separate in point and out point handles in slider in place of current in point only slider. Defaults at start and end of the buffer. Switch to live when out point is reached
  • Ability to configure source of replay recording. Probably bit tricky but checking situation replays out without widgets and graphics overlays would be cleaner
  • Saving played clips to disk would be helpful. These are sometimes used for editing higlight clips later
  • Activate/deactivate specific widgets for duration of replay playback. For example show "REPLAY" text widget and hide live score table
  • Create clip or stream marker in Twitch on replay start/end times delayed by estimated viewer latency
<!-- gh-comment-id:2818146955 --> @mikeful commented on GitHub (Apr 21, 2025): Random suggestions idea: - 3 instant replay buttons would be useful: 5, 10 and 15 seconds, should display specified amout of video from end of the buffer and switch back to live - Configurable instant replay times? Maybe allow override of 15 second one if that's simpler - Full buffer editor be better with separate in point and out point handles in slider in place of current in point only slider. Defaults at start and end of the buffer. Switch to live when out point is reached - Ability to configure source of replay recording. Probably bit tricky but checking situation replays out without widgets and graphics overlays would be cleaner - Saving played clips to disk would be helpful. These are sometimes used for editing higlight clips later - Activate/deactivate specific widgets for duration of replay playback. For example show "REPLAY" text widget and hide live score table - Create clip or stream marker in Twitch on replay start/end times delayed by estimated viewer latency
Author
Owner

@fahir95 commented on GitHub (Apr 21, 2025):

Hi @eerimoq,

That’s a really solid UI—and modeling the replay behavior.

If you can break it down and enhance it with the slow-motion and playback timing as follow especially for streamers who are already familiar with that.

Playback timing suggestion:

Default to 0.5x speed for replay.
You can give options for 0.25x, 0.5x, 0.75x and 1x based on clip duration and desired effect.

Also my suggestions that any playback rate > 1.0 is avoided unless explicitly desired. This ensures viewers get a smooth and dramatic replay rather than a jittery or rushed one.

<!-- gh-comment-id:2818227147 --> @fahir95 commented on GitHub (Apr 21, 2025): Hi @eerimoq, That’s a really solid UI—and modeling the replay behavior. If you can break it down and enhance it with the slow-motion and playback timing as follow especially for streamers who are already familiar with that. Playback timing suggestion: Default to 0.5x speed for replay. You can give options for 0.25x, 0.5x, 0.75x and 1x based on clip duration and desired effect. Also my suggestions that any playback rate > 1.0 is avoided unless explicitly desired. This ensures viewers get a smooth and dramatic replay rather than a jittery or rushed one.
Author
Owner

@fahir95 commented on GitHub (Apr 22, 2025):

Hi @eerimoq,,

I’ve been testing the Moblin App via TestFlight and wanted to try out the Replay functionality. I noticed that you have wrote something “Replay that kinda works” in the What to Test section, so I gave it a try.

However, when I tap the Replay option from the quick button, there’s no visible response or action triggered. Just wanted to check—should this feature be functional at the moment, or is it still being worked on?

Thanks for the clarification!

<!-- gh-comment-id:2820413484 --> @fahir95 commented on GitHub (Apr 22, 2025): Hi @eerimoq,, I’ve been testing the Moblin App via TestFlight and wanted to try out the Replay functionality. I noticed that you have wrote something “Replay that kinda works” in the What to Test section, so I gave it a try. However, when I tap the Replay option from the quick button, there’s no visible response or action triggered. Just wanted to check—should this feature be functional at the moment, or is it still being worked on? Thanks for the clarification!
Author
Owner

@eerimoq commented on GitHub (Apr 22, 2025):

Enable Settings -> Debug -> Replay.
Also set Settings -> Debug -> record segment length to 1

<!-- gh-comment-id:2820479546 --> @eerimoq commented on GitHub (Apr 22, 2025): Enable Settings -> Debug -> Replay. Also set Settings -> Debug -> record segment length to 1
Author
Owner

@eerimoq commented on GitHub (Apr 22, 2025):

Published an update. The main issue right now is that the preview will update very slowly when the recording is big. So beware.

<!-- gh-comment-id:2822065952 --> @eerimoq commented on GitHub (Apr 22, 2025): Published an update. The main issue right now is that the preview will update very slowly when the recording is big. So beware.
Author
Owner

@fahir95 commented on GitHub (Apr 22, 2025):

Hi @eerimoq,

Thanks for your work on Moblin—really appreciate the effort you're putting in!

I think there might be a bit of confusion,
a replay feature, similar to what's available in OBS Studio’s Instant Replay or more recently in CameraFi Live (see their beta feature here: https://blog.camerafi.com/2024/11/android-camerafi-live-replay-beta.html).
OBS Instand Replay: (https://youtu.be/t7FBPbaBw8U?si=cBif1pcA9eSs3WMp)

The idea is to maintain a rolling buffer of the last few seconds of video, which can then be saved retroactively with a button press. It’s a super handy feature for streamers or event-based recording.

Possible suggestion:
A circular memory buffer for video frames that gets written to disk only when the user triggers a save could be an efficient way to implement it. Additionally, features like setting the Playback speed, duration and customizing transitions when the replay video is played could be configurable from the settings section, similar to how CameraFi Live handles it.

Thanks again!

<!-- gh-comment-id:2822240950 --> @fahir95 commented on GitHub (Apr 22, 2025): Hi @eerimoq, Thanks for your work on Moblin—really appreciate the effort you're putting in! I think there might be a bit of confusion, a replay feature, similar to what's available in OBS Studio’s Instant Replay or more recently in CameraFi Live (see their beta feature here: https://blog.camerafi.com/2024/11/android-camerafi-live-replay-beta.html). OBS Instand Replay: (https://youtu.be/t7FBPbaBw8U?si=cBif1pcA9eSs3WMp) The idea is to maintain a rolling buffer of the last few seconds of video, which can then be saved retroactively with a button press. It’s a super handy feature for streamers or event-based recording. Possible suggestion: A circular memory buffer for video frames that gets written to disk only when the user triggers a save could be an efficient way to implement it. Additionally, features like setting the Playback speed, duration and customizing transitions when the replay video is played could be configurable from the settings section, similar to how CameraFi Live handles it. Thanks again!
Author
Owner

@eerimoq commented on GitHub (Apr 22, 2025):

I don't think there is much confusion at all. You realize that I gotta start with something that is easy for me to implement, right? It will take time to make everything perfect in all ways possible. It will take weeks, if ever being completed.

<!-- gh-comment-id:2822328728 --> @eerimoq commented on GitHub (Apr 22, 2025): I don't think there is much confusion at all. You realize that I gotta start with something that is easy for me to implement, right? It will take time to make everything perfect in all ways possible. It will take weeks, if ever being completed.
Author
Owner

@fahir95 commented on GitHub (Apr 23, 2025):

Hi @eerimoq,

Absolutely and I totally respect starting with what’s feasible and building from there.

Just to clarify, the replay feature and ideas I mentioned earlier are purely suggestions from my side. I just thought they could be cool additions down the line if they align with your roadmap.

Really appreciate all the work you're putting into Moblin. Excited to see how it progresses!

Thanks again!

<!-- gh-comment-id:2823140190 --> @fahir95 commented on GitHub (Apr 23, 2025): Hi @eerimoq, Absolutely and I totally respect starting with what’s feasible and building from there. Just to clarify, the replay feature and ideas I mentioned earlier are purely suggestions from my side. I just thought they could be cool additions down the line if they align with your roadmap. Really appreciate all the work you're putting into Moblin. Excited to see how it progresses! Thanks again!
Author
Owner

@eerimoq commented on GitHub (Apr 24, 2025):

This is what it currently looks like. In test flight soonish.
Image

<!-- gh-comment-id:2828072125 --> @eerimoq commented on GitHub (Apr 24, 2025): This is what it currently looks like. In test flight soonish. ![Image](https://github.com/user-attachments/assets/bce6b87a-790f-423b-9131-979a5cb0c95e)
Author
Owner

@eerimoq commented on GitHub (Apr 25, 2025):

Maybe add something like this next?

  • Select replay interval in slider, not only start position.
  • Replay storage. Save full 30 seconds and current replay interval.
    • Save to disk when pressing play.
  • Pause/play, step forward and backward buttons when playing a replay.
    • Step frame and 0.25(?) seconds.
    • Show buttons instead of preview (right above speed, reload and play buttons in the screenshot in the previous comment).
  • Show saved replays where zoom and scene pickers are now.
    • Horizontal scroll.
    • Tap a replay to load it into replay player.
    • Long press to delete a replay.
<!-- gh-comment-id:2829382414 --> @eerimoq commented on GitHub (Apr 25, 2025): Maybe add something like this next? - Select replay interval in slider, not only start position. - Replay storage. Save full 30 seconds and current replay interval. - Save to disk when pressing play. - Pause/play, step forward and backward buttons when playing a replay. - Step frame and 0.25(?) seconds. - Show buttons instead of preview (right above speed, reload and play buttons in the screenshot in the previous comment). - Show saved replays where zoom and scene pickers are now. - Horizontal scroll. - Tap a replay to load it into replay player. - Long press to delete a replay.
Author
Owner

@fahir95 commented on GitHub (Apr 25, 2025):

Also try to add any kind of transitions for REPLAY when playing the replay video on the scene.
attached sample for your reference.

https://github.com/user-attachments/assets/caad0f7b-7679-47af-a6ab-6ac15c44b8b5

<!-- gh-comment-id:2831469004 --> @fahir95 commented on GitHub (Apr 25, 2025): Also try to add any kind of transitions for REPLAY when playing the replay video on the scene. attached sample for your reference. https://github.com/user-attachments/assets/caad0f7b-7679-47af-a6ab-6ac15c44b8b5
Author
Owner

@eerimoq commented on GitHub (Apr 26, 2025):

More stuff in test flight now. save to disk and replay from it

<!-- gh-comment-id:2831967163 --> @eerimoq commented on GitHub (Apr 26, 2025): More stuff in test flight now. save to disk and replay from it
Author
Owner

@fahir95 commented on GitHub (Apr 28, 2025):

Hi @eerimoq,

Could you try add Autoplay for the replay video when the Save Clip button is pressed?
You can also include a short interval before starting the replay if needed, for a smoother transition.

Users should still have the option to play the replay manually from the saved video in slider at any time if they prefer.
However, in most cases — especially for events and gamers — they expect the replay to start playing automatically right after triggering it.

Thanks!

<!-- gh-comment-id:2834334488 --> @fahir95 commented on GitHub (Apr 28, 2025): Hi @eerimoq, Could you try add Autoplay for the replay video when the Save Clip button is pressed? You can also include a short interval before starting the replay if needed, for a smoother transition. Users should still have the option to play the replay manually from the saved video in slider at any time if they prefer. However, in most cases — especially for events and gamers — they expect the replay to start playing automatically right after triggering it. Thanks!
Author
Owner

@eerimoq commented on GitHub (Apr 28, 2025):

I think I'll add another quick button that will save and play. It will likely play the replay ~5 seconds after the button is pressed as it's fairly easy to implement it that way. The replay length will likely be about 10-15 seconds to start with.

<!-- gh-comment-id:2835697490 --> @eerimoq commented on GitHub (Apr 28, 2025): I think I'll add another quick button that will save and play. It will likely play the replay ~5 seconds after the button is pressed as it's fairly easy to implement it that way. The replay length will likely be about 10-15 seconds to start with.
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/moblin#59
No description provided.