bridge icon indicating copy to clipboard operation
bridge copied to clipboard

SEEK and LENGTH as a IN - OUT bar to set start and end points for a media item (MOVIE and AUDIO)

Open mellbergsimon opened this issue 8 months ago • 9 comments

Is your feature request related to a problem? Please describe. I have been wanting the feature to skip ahead in a video towards the end. Especially with my use case mainly being playing videos, which in reality Caspar is really not meant to do. But still its a nice feature to skip ahead or really just trim the in and out points. Which SEEK and LENGTH does. I will use it during rehearsals when playing a video to be able to look at the ending. Ultimately saving time.

Describe the solution you'd like Maybe there could be a bar in the Caspar ui.group like this: Image

Where you could set the in and out points for a video or audio file. The items duration also updated depending on LENGTH.

Describe alternatives you've considered Another idea could be to have a hover effect and when clicked jumps immediately starts playing at the point on which you pressed. Like a standard video player. But this would really only be used during rehearsals. The above proposal could help fixing a last minute video or audio file that has a little to long black/silent section in the beginning. But again, Caspar is not really meant to be used for video/audio playout so I would understand if this feature is not so crucial.

Additional context Looking forward what ideas could be out there regarding this.

https://github.com/user-attachments/assets/2eb5b4c1-1691-4631-97f4-feba5c8cead7

mellbergsimon avatar May 05 '25 16:05 mellbergsimon

I agree, and this is actually something I've wanted to add for quite a while. One initial thought for Bridge was a timeline-widget, which would fill a similar demand as this but with additional functionality, and support for any item type. But that's still in the future, and one thing I'm lacking is a good way of doing previews so that you don't need to know the in- and out points beforehand.

Until then I think that we should add the functionality you're proposing, or something similar as it's more easily done. Let's discuss it a bit. Some things I'm thinking of from the top of my head, please help me out here.

  • Are percentages the unit that we want to display?
  • There should be a way, throughout the app, of entering times and durations in a better format than strictly frames and milliseconds since they're difficult to grasp quickly. I'm thinking something along the lines of a "rich" time input field where you can select the unit yourself. This should be added to the slider as well.
  • Support for variables?
  • It should be easily read from the state, so we should think through the naming of the data's keys.

axelboberg avatar May 05 '25 20:05 axelboberg

I have also thought about previews, my thoughts about that would be to have an additional channel on Caspar, audio and all. Specifically a ffmpeg UDP stream. I haven't tested anything yet though. But all the usual amcp commands could be used but on a production channel. Maybe for a single server it's an easy concept.

Percentages is maybe the way to go for changing a multi-selection. But allowing only one clip to be changed at a time allows for other better naming schemes.

A rich input field sounds like a clever idea, I agree.

Variables I haven't looked that much into. I have to read up on how you've done that to comment. But it should be there.

Do you mean keys like: data with .duration and .caspar.foo. If we need to add more then the naming should be clear and precise. I agree.

mellbergsimon avatar May 05 '25 21:05 mellbergsimon

Let's break this down a bit. I think that this functionality should be implemented in a few different steps.

  1. Add a SEEK input field to the bridge.caspar.media type with support for variables. This should be REALLY easy as it's mostly an addition to the type definition. It should be added to the timing ui-group.

  2. Create a custom range input in the Caspar plugin that binds to the seek field and the already existing duration field. It too can be added to the timing ui-group. I still think that we shouldn't use percentages here, even though you make a valid point. The main benefit of the slider is to be able to more easily select in- and out points and that outweighs the need for changing multiple items at once, which you'd still be able to do using variables.

  3. (Future, in a separate ticket) Create a generic time input component in the Bridge core.

Then of course, previews, they are a long term goal and while implementing them the way you suggested is how they've been implemented before the sheer complexity that goes with it makes me want to rethink the whole thing. And also make it scale with Bridge so that it can be used simultaneously by multiple operators.

axelboberg avatar May 07 '25 20:05 axelboberg

I think that you've done a good job with the design already but here's a version that's a tad more polished. I think that both the SEEK input and the range should be added to the timing ui-group in order to be shown together with the duration input.

Image

axelboberg avatar May 07 '25 21:05 axelboberg

I like the ideas and your design is very clean. Looking forward what you figure out regarding preview. Having some shared storage solution maybe. I don't know if you can fetch thumbnails based on a specific frame. Otherwise that could maybe be a start.

A still image is regarded as a media item right? Do you have any idea to not show seek for those?

mellbergsimon avatar May 08 '25 07:05 mellbergsimon

I am having some issues I would like some help with. I created new types and they are updated accordingly by the range bar. But when manually edited the text locks. Even though the actual value is changed in the backend.

https://github.com/user-attachments/assets/a53b8ec4-205b-46bb-860f-0bb3f0d3a584

seek is still in frames

How would I go about making the input be overridden by changing of the range bar?

mellbergsimon avatar May 21 '25 20:05 mellbergsimon

Sorry for the late response, it looks really good so far so I don't think that we should close the issue just yet.

It's difficult to tell what's going on without seeing the code so I'd encourage you to create a PR with the code so far and I can take a look at it.

axelboberg avatar May 23 '25 22:05 axelboberg

Came here to request this :D

I'm planning and testing a migration for my workflow away from QLab

This interface is incredibly useful for quickly trimming the in and out of a video that a client has decided they only want a random 3mins played from an 1hr long video and don't have time to chop it. Waveform is really useful. Image

DrEVILish avatar Oct 21 '25 18:10 DrEVILish

Came here to request this :D

I'm planning and testing a migration for my workflow away from QLab

This interface is incredibly useful for quickly trimming the in and out of a video that a client has decided they only want a random 3mins played from an 1hr long video and don't have time to chop it. Waveform is really useful. Image

I have a working version with this implemented. But it is ugly code and not finished yet!

mellbergsimon avatar Oct 21 '25 19:10 mellbergsimon