Describe the bug
I want to change a clip property such as ScaleX without generating an animation
System Details (please complete the following information):
To Reproduce
Steps to reproduce the behavior:
Add a video clip to timeline.
Slice off the beginning.
Try to change property ScaleX.
Now it always makes a keyframe, and when I say "remove keyframe", the value of ScaleX is reverted.
Expected behavior
Properly remove keyframe, but keep new value
That's not possible, the value adjustment will always be applied as a keyframe. It's inherent in the animatable properties that their value adjustments are stored in keyframes.
The secret is in where you set it. If you make the adjustment at the _very first_ frame of your clip, the parameter won't be animated — it'll be set by the first keyframe to whatever value you select, and then because there are no other keyframes to further adjust the parameter, it will hold on the same value throughout the rest of the clip.
OK. The thing is, it didn't seem to work.
If the clip starts at 2:00 and I put the timeline pointer (?) at 0:00 for setting the value - is that supposed to work? 'cause it didn't...
It neither worked when the clip was at 0:00 and the pointer at 0:00 too.
It only worked when I added the clip again from the videos list.
So it seems slicing a clip was what caused the problem setting the value.
I can make a video demo if you like.
"Remove Keyframe" is somewhat broken in that if you use it on a clip that only has one setting for a property, that property becomes 0 instead of being reset to its default/initial value.
Like, for instance, if you do this...
..."Scale X" will become 0 throughout the duration of the clip, which is wrong. Same thing with "Enable Audio/Video" (which also become 0, instead of resetting to -1), etc. So, to avoid that issue, don't use "Remove Keyframe" to remove the last keyframe of a clip.
It's implicit that all clips are created with a keyframe at their first frame, containing all of the default values for all properties. (OpenShot unfortunately has some special-casing so that it doesn't _display_ that keyframe as a keyframe even if you adjust it, but it's still there.) Deleting that last keyframe for any property will remove the default value, which is rarely what you want.
Or to put it another way: "Remove Keyframe" shouldn't be used as a shorthand for "Reset Value", as that's not how it works.
Most (all?) properties are resettable throughout a clip, though. Right-clicking on the clip and choosing the appropriate menu option, such as "Fade > No Fade", "Animate > No Animation", etc., will set the corresponding properties back to their default at the first frame of the clip, and clear any adjustment keyframes throughout the rest of the clip. "Layout > Reset Layout" is the option to reset the "Scale X" and "Scale Y" properties for a clip, along with "Gravity" and possibly some others.
As far as how/where you set properties: When the Playhead (that's the blue pointer with the red line under it that tracks Timeline position) is located anywhere to the left of a Clip, that _should_ be equivalent to having it placed on the first frame. When the Playhead is to the right of the Clip, it's equivalent to making an adjustment at the last frame.
You can also use the "Previous Marker" and "Next Marker" controls (the two arrows in the Timeline toolbar, immediately left of the zoom controls) to position the Playhead directly on the first or last frame of the selected clip.
I just didn't get it to work. I don't know how people use this software. I just want to set properties quickly without generating any keyframes at all. I'm currently using OpenShot 1.4.3 again.
I was working on a project with this software for the first time and I also ran into this problem and it took me a very long time to fix it, and then, after hours of rendering, it turns out it wasn't even fixed.
I tried to set properties without animations five times in my project. Putting the Playhead at the beginning of the clip did not work for me, it would still show an animation. I figured out a work around, you cannot have the Playhead on the clip when editing the properties. I would have to move the Playhead to the left of the clip a significant distance and then edit the clip's properties. Sometimes it would actually set the value without a Keyframe as far as I could tell (the property wasn't blue or green it was the regular color, most likely as described by @ferdnyc ). Other times, the animation would happen before the clip was actually shown (assuming the clip wasn't at the beginning of the Timeline) so it wouldn't be visible in the end product.
I got this to work on my clip at the beginning of the project, but it only lasted for the first rendering. Every subsequent rendering ended up with the animation, which I didn't realize because I thought it was fine since the first render was correct (I was trying to render with different encoding options to find optimal settings). The other four times in the project I used this method worked like a charm though.
If the Keyframes are mandatory, that is fine, but there needs to be a clear way to edit them. I could not find any way to change them, just delete them. I could see the Keyframes on the clip in the Timeline (the little green tick marks) but I could not find or edit their values. If there is an easy way to find or edit these values, please let me know.
If the Keyframes are mandatory, that is fine
I don't see how that's fine. 99% of the time you want to set properties without keyframes (adjust volumes, screen positions etc).
Hi, @Linrono
If the Keyframes are mandatory, that is fine, but there needs to be a clear way to edit them. I could not find any way to change them, just delete them. I could see the Keyframes on the clip in the Timeline (the little green tick marks) but I could not find or edit their values. If there is an easy way to find or edit these values, please let me know.
I've encountered similar issues, I think the keyframe system is cumbersome, it would be great if there's a view where you could simply edit keyframes per selected video, if without graphs, just with plain numbers in listboxes, comboboxes, text fields, simple script - numbers, simple syntax.
As of now I think you could edit each keyframe by precisely scrolling the time pointer - when it matches the green mark of the keyframe, the property item becomes marked as well, indicating there is a keyframe at that position. When you modify these properties, that affects the values of the keyframe. Also there's right click which opens a menu regarding the curve of the animation, which I think is computed between two keypoints. Beginning and ending(?) seem to be default keyframes
I agree with @stefan-reich and Linrono, that often what's needed is just a constant value for the whole clip.
FWIW, on 2.4.4 if I navigate to the start of a clip with the marker arrows and set a property, it still creates a keyframe -- after I set it the first time there appears to be no possible way to set the base property value.
@scottgigante That's because you're not _creating_ a keyframe, when you set a property that way — you're _modifying_ the initial keyframe for that property. In the current Timeline setup every clip is imported with a set of keyframes at the first frame, one for each property, that contains that property's initial value. That keyframe sets the value for the entire duration of the clip, unless more keyframes are added to modify the property.
OpenShot does a little special-casing so that any single-keyframe property doesn't show the interpolation mode selector or interpolation highlighting, because those things have no meaning unless you have _two_ or more keyframe points. (In fact, you can even right-click on the value at that first frame and select "Remove keyframe" — which OpenShot will happily do, wiping out the keyframe data and zeroing the property, which is fine if it's something like 'Location X' or 'Shear X', not so great if it's 'Scale Y' that defaults to 1.)
So, not only is there always a keyframe at the first frame of a clip, but there _needs_ to be, because the only way to adjust the property value is to edit that point or add additional points. (The exception are the non-keyframable properties like Gravity, Volume Mixing, Wave Color / Waveform, etc. Those values are not stored in keyframe lists.)
This _does_ mean that there's no way to return a property to its initial value after modifying it, and that's one of several reasons we've been discussing changes to the way things currently work. (OpenShot/libopenshot#370) I absolutely agree the existing property system is not ideal.
But, as far as the way things _do_ currently work, keyframes are always there, and the properties' values are stored _only_ in those keyframes. There is no alternative, because there is no other place where those values are or can be stored.
Okay, so the issue I had was actually that I _thought_ my cursor at the start of the clip when I was actually a tiny bit off. This caused me setting the properties that should have been set on the first frame to actually be on maybe the second or third frame, introducing the interpolation infrastructure. Trap for new players, I suppose.
Thanks for the detailed explanation!
@scottgigante Yeah, the fiddly positioning is definitely one of the issues with the current setup. One #PROTIP I can offer: Once you select the Clip you want to modify values for, you can use the Previous / Next Marker controls (the navigation arrows on the toolbar directly above the Timeline, aka Ctrl+← and Ctrl+→ in the default keybindings) to jump to the first or last frame of the clip — the Playhead will seek to those positions as if they're markers, in addition to whatever other actual markers you may have set (if any).
So, when applying first-frame adjustments it's a good idea to use Prev / Next Marker to make sure you're right at the start of the clip.
I just downloaded OpenShot and tried to whip up a quick test video. Crossfading videos is simple, but I hit a wall when I tried to simply create text to bottom left corner. I created a title item, set the font and text and added it to project files. I could not figure out any better bay to do it, so here is my method of simply moving the text from the center to left corner - essentially moving the clip position to down and left:
The method @ferdnyc just introduced me to - Ctrl+←- likely works exactly the same as my method above, but that must be done before setting fade in, or you can't actually see the text you're placing. This makes order of operations critical, which can be confusing for beginners. Thank you for the explanation too, that was actually helpful in understanding the way OpenShot works.
If I may propose a workaround/solution? Right clicking a value in the properties menu - such as X and Y pos, or any other animatable property I guess - should contain an option "Apply to whole clip" which first removes any existing keyframes of said property, and then applies the setting to the first frame of the clip. Or, perhaps, "Apply from beginning" which just applies the current value to the first frame of the clip, and if we are exactly at a keyframe, deletes it. That way any other keyframes of said property already set within the clip are preserved.
Thanks!
Thank you so much for submitting an issue to help improve OpenShot Video Editor. We are sorry about this, but this particular issue has gone unnoticed for quite some time. To help keep the OpenShot GitHub Issue Tracker organized and focused, we must ensure that every issue is correctly labelled and triaged, to get the proper attention.
This issue will be closed, as it meets the following criteria:
We'd like to ask you to help us out and determine whether this issue should be reopened.
Thanks again for your help!
Most helpful comment
I just didn't get it to work. I don't know how people use this software. I just want to set properties quickly without generating any keyframes at all. I'm currently using OpenShot 1.4.3 again.