Visual stuttering playback from exported video

‘Stuttering’ visual playback of exported video.
Trying to keep this succinct:
• I’ve been using Shotcut successfully to create videos at 720p and 2160p, my videos come from a GoPro Hero 9 in 4k at 30fps
• On export I select the YouTube preset and the required resolution and 29.97003 fps
• The most recent video created at 720p seemed to be stuttering especially noticeable when panning.
• I checked again and again the export parameters and even experimented with the codec to H.264 High Profile and quality to 85% but it didn’t make any difference
• I setup a new project with a couple of the clips and made a new video from it – it played back perfectly smooth.
• Comparing the two .mlt project files the only difference was that the initial resolution and fps were different. In the new project I mandated 2160p and 30000 / 1001. When I edited the initial project with these parameters (I work in IT and know XML) it still didn’t make a difference
• So I created a new project and copy pasted the entire XML below into it. It worked, the created video was smooth with no stuttering.
• So my question is this: is there some metadata per project held by Shotcut elsewhere apart from the .mlt file ?

Any advice appreciated

The most common reason for stuttering is that an image file was dragged into a new project first, which defaulted the project timeline (the Video Mode) to 25fps. When the export finally happens, the 30fps source videos are frame-dropped down to the 25fps timeline video mode format. Then, the 25fps timeline is frame-duplicated up to the 30fps requested by the Advanced Export panel. This means 1/6th of the original frames were removed and then replaced with duplicates of the previous frames, which is why the motion looks stuttery.

More information about checking and changing the Video Mode can be found in the documentation:

In the .mlt XML file, the Video Mode is specified by attributes on the XPath /mlt/profile element. Here is a sample (ignore the description attribute):

  <profile description="HD 1080p 25 fps" width="1920" height="1080" progressive="1" sample_aspect_num="1" sample_aspect_den="1" display_aspect_num="16" display_aspect_den="9" frame_rate_num="30000" frame_rate_den="1001" colorspace="709"/>

The frame rate is frame_rate_num / frame_rate_den. So 29.97fps would be 30000/1001, and 25fps would be 25000000/1000000 (which is the same as 25/1, but multiplied up for internal reasons).

It is possible to modify the .mlt XML directly. However, changing FPS through Shotcut’s Settings > Video Mode menu is recommended when possible, as that will allow Shotcut to do some processing that can improve results. I’m not sure a lot of optimizations are actually done at the moment, but the principle of leaving the possibility open to future improvements is still valid.

Quality for libx264 is visually lossless at 68%, so going above that quality level is usually not worth the extra export time and disk space. If you’re using hardware encoding, then the percentage level to achieve visual losslessness will vary by hardware. Only extremely low percentage values would cause the quality parameter to affect the appearance of motion or stutter. Stutter is a FPS issue, not quality issue.

Thanks Austin, that sounds convincing. I’ll look our for that in future.

This topic was automatically closed after 90 days. New replies are no longer allowed.