Copied/modified freeze frames are missing values in "in" and "out"

Hello,

I do a lot of this:

  • capture video
  • select relevant parts
  • create freeze frames from those parts
  • remove all the other parts (so keeping only freeze frames)
  • I synchronize the voice over the relevant freeze frames (expanding and shortening them as need)

BUT,
I noticed that sometimes some freeze frames are “reset” (pointing to the start of the original video). Sometimes, it is some freeze frames I manipulated before without issue that are later “reset”. Sometimes, some I did not even touched yet are “reset” anyway when I reach them to manipulate them.

And I don’t know which action will triggered that behaviour. I was unable to reproduce that. I can just say that the longer the video, the more often it will appear.

So, I have to “re-freeze frame” whole sections of the original video.

To limit that,
I do that work once in a project then I create a new one (wip) and copy all freeze frames into the new ones so that I can later go back to the source project to copy the “reset” freeze frames again

It is cumbersome but it works. At least it worked but working on my current project I had the same issue so I did what I just explained and selected the relevant freeze frames (that are perfectly fine in the “source” project) but when I copy them inside the other project they are “reset”.

In the (wip) configuration file, I noticed that those freeze frames are missing values for “in” and “out”, as follow:

    <link id="link48" in="" out="">
      <property name="mlt_service">timeremap</property>
      <property name="shotcut:filter">speedForward</property>
      <property name="speed_map">00:00:00.000|=0</property>
      <property name="speed">0</property>
    </link>

Copying them to a fresh project won’t work either.
While copying other freeze frames from a test project will work into that fresh project.

(I run 2 different instances of shotcut to copy/paste between project)

BTW, the miniature on the timeline is accurate and shows what I expect the FF to contain…

PS:
I noticed a new version so I upgraded.
I noticed that:

  • previously, the copied FF were all pointing to the first one
  • now, the copied FF are incrementing from the first one

PS2:
sometimes the speed_map is

    <link id="link204" in="" out="">
      <property name="mlt_service">timeremap</property>
      <property name="shotcut:filter">speedForward</property>
      <property name="speed_map">00:00:00.000|=0</property>
      <property name="speed">0</property>
    </link>

or

    <link id="link205" in="" out="">
      <property name="mlt_service">timeremap</property>
      <property name="shotcut:filter">speedForward</property>
      <property name="speed_map">0|=0</property>
      <property name="speed">0</property>
    </link>

What do you think about that issue ? Sorry I can’t help reproduce it in a simple example !

  • What is your operating system?

Windows 11

  • What is your Shotcut version (see Help > About Shotcut)?

25.07.26
I updated to 25.8.16 (while writing this post, see above)

  • Can you repeat the problem? If so, what are the steps?

Not really. I have a “not-working” case I can repeat but no success repeating it on a “simpler” situation

I wrote a script to “fix” my “.mlt” as I noticed that the playlist/entries mentioned are the same in the link element.

BTW, I think that maybe the issue’s root is about “splitting” (S) a freezing frame (FF).
I was not able to reproduce my actual issue in a shorter example but I have a behaviour I did not expect : if I FF at 14m, it will lead to a chunk from 14m to 15m of the image at 14m (that’s the expected result and the one I get !). But if I SPLIT the newly created FF in the middle, I will get 30s of that 14th minute and 30s of the 14.5th minute which is not what I’d like to get. (And, in my actual/worst case, I even get the aforementioned result of the parts starting from T+0s…)

    <entry producer="chain5" in="00:00:14.050" out="00:00:15.033"/>
    <link id="link2" in="00:00:14.050" out="00:00:15.033"> (initial one that will be split)
      <property name="mlt_service">timeremap</property>
      <property name="shotcut:filter">speedForward</property>
      <property name="speed_map">00:00:00.000|=0</property>
      <property name="speed">0</property>
    </link>

    <entry producer="chain6" in="00:00:14.050" out="00:00:14.467"/>
    <link id="link3" in="00:00:14.050" out="0"> (chunk one [I was not expecting 0])
      <property name="mlt_service">timeremap</property>
      <property name="shotcut:filter">speedForward</property>
      <property name="speed_map">00:00:00.000|=0</property>
      <property name="speed">0</property>
    </link>

    <entry producer="chain7" in="00:00:14.483" out="00:00:15.033"/>
    <link id="link4" in="00:00:14.483" out="00:00:15.033"> (chunk two)
      <property name="mlt_service">timeremap</property>
      <property name="shotcut:filter">speedForward</property>
      <property name="speed_map">00:00:00.000|=0</property>
      <property name="speed">0</property>
    </link>

I had the case where I needed to split the voice track and, to keep the video in sync, I had to split the FF above.

I have also the impression that transitions (that I don’t use but can happen when the PC lag s and the mouse cursor is not where shotcut assumes… or something related) can be a culprit too.

Mekare, I am intrigued that you are using the “speed forward” filter, with speed set to 0, to achieve a freeze frame. I would not have thought of trying that. Do you split the video at each point where you want a freeze frame, and apply the filter to that segment, freezing the initial frame? (I’m trying to visualize how this works.)

I would have thought about using a different work flow. I don’t know whether it would be better, worse, easier, harder, or just different than the approach that (I think) you are taking. FWIW, here is what I would do:

First, I would go through my video, picking out the frames I want to freeze, and use the File/Export/Frame command to export a still image of the frame. Once I generated all of the desired frames, I would pull them into the Playlist.

Second, I would add a video track above the original video, and use that to place my desired images (frozen frames), stretching them to the desired length. If desired, I would include transitions between these images. Since these images would be “on top” of the original video, they will hide the original video below, but the audio will still come through. I don’t know if it would help the processing speed any, but I would probably go ahead and hide the original video by clicking on the little eye icon.

I am not sure if my explanation will make sense, and again not sure if this is any better than what you are doing; I’m not even sure I have correctly understood what you are wanting to do. However, if this is of any help or interest, I am happy to try to answer any questions, or if you would like, I can do a quick demo.

Because that is what the dedicated Freeze Frame timeline action creates.

I would not have thought of splitting a freeze frame. Why are you doing that? I suggest that you do not do that. If you want to do things with filters at different times of the same freeze frame clip use keyframes and/or filter trimming.

1 Like

As mentioned in another reply, the “Freeze frame” feature (Ctrl-Shift-H by default) is a really good one especially because it allows to avoid to do this “““use the File/Export/Frame command to export a still image of the frame. Once I generated all of the desired frames, I would pull them into the Playlist.”””

1 Like

I mentioned an exemple in my reply to my own post (maybe I should have edited my original post?):

I don’t know how to do otherwise. Except measuring the length of the cut voice part and trimming the FF by that amount. But I feel that splitting both tracks at the same timestamp, twice, then remove both parts is way easier. That may be a me thing.

I could also need to insert (let’s say) an animation in the middle of a still image and, by default, I would like to split the FF and insert the new content in there because it prevents messing with the remaining of the timeline.

I could add that animation on another video track but I prefer not as long as both content are not actually mixed.

If I have 2 contents to display at the same time, of course, I will use two tracks.

BTW, I dont think I ever used filters on my FF. I only create them and expand or trim the to match the corresponding voice part.

I think that splitting FF should be a thing (with splitting FF meaning having 2 chunks of the same content):

  1. as awake mentioned, I used to do the “images” way and splitting an image will not lead to 2 different images.

  2. the idea is to have a “still” content (like an image, then) and I think of no usage that would require to split a FF and expect the second part to display the content of the corresponding timestamp (so T_start + 1s * “%of the FF being cut at“) instead of just the same content

But I understand (and yet probably under estimate) the hassle to know what would happen to a time remapped chunk being later split.

PS : I have yet to understand why my chunks were “reset” in the first place and why copy/pasting them would not work on those while working on my later tests

1 Like

Thank you both - I confess I had not been aware of this feature! Shotcut continually amazes me with all of the things it offers. Now I have something new to experiment with …

On edit: I just searched for tutorials (from the Shotcut home page) on using the Freeze Frame command. The first one that popped up directed me to this forum entry: How to Freeze a Video Frame . Interestingly, this video does not use the Freeze Frame timeline action, but calls for something similar to what I had described in my post above - extracting a frame using the Export Frame command. This was generated back in 2021, so obviously I need a more recent tutorial. I found this one dating to 2024: Freeze-frame automation with Auto Hotkey . It uses Windows Hotkey automation … to do a Frame Export, if I understand it correctly. Hmm … here’s one that specifically mentions using time remapping: Freeze frame using time remap (no frame export needed) . But it uses a manual process of splitting, copying, and applying the time remap filter - not the automatic process that the Freeze Frame timeline action carries out.

I’m still searching, but I feel a little less foolish that I was not aware of this feature until now. :slight_smile:

One more follow-up edit: It looks like the on-line user guide does not yet have documentation for the Freeze Frame feature - there is a page, but it simply notes the need for a trusted user to add documentation. I’m feeling better by the minute - still ignorant, but better! :slight_smile:

1 Like

Hello,

I don’t know if this will help.

There is not much I can add except that you need the “Soon-To-Be Frozen Frame” chunk to be selected to successfully use the shortcut (C-S-h)

Mekare

Update:

I had to copy/paste some chunks from one shotcut instance to another one and I reproduced the bug (the first chunks are correctly pasted then the last ones are “reset”).

I noticed two possible hints:

  • the first “reset” chunk follow the first chunk that goes from “under an hour” to “over an hour”
  • the second entry starts before the end of the previous entry (I only have one source video and each FF is extracted from that video)
    <entry producer="chain777" in="00:59:58.050" out="01:00:03.300"/>
    <entry producer="chain128" in="01:00:02.633" out="01:00:04.567"/>

If it can help you narrow the issue down…

Mekare