Clips and transitions change length after reopening project

I’ve been having sync issues with a project I’m working on and finally figured out what was causing it. Some of the transitions and clips appear to be changing length after closing and reopening a project. It’s not all of them, but about 4 of them in a 20-minute long project.

Here are the steps to reproduce that I’ve come up with:

  1. Create a project with a timeline.
  2. Add clips and transitions between them.
  3. Save project to .mlt file.
  4. Close Shotcut.
  5. Restart Shotcut and reopen the .mlt.

The reason I noticed this is that I also have a separate audio track that I’m syncing all of the clips to. It’s a concert where I have one continuous wide shot with close up clips spliced in throughout. So, I have to be frame-accurate for it to look and sound decent. When they kept staying off-sync, that’s when I noticed the issue.

Here’s a diff of the .mlt as saved the first time along compared to what it looked like after reopening it and saving it again:

--- "Concert.mlt" 2017-12-05 15:34:42.086666700 -0600
+++ "Concert - Reopened.mlt"      2017-12-06 08:42:01.434836100 -0600
@@ -1589,18 +1589,18 @@
     <property name="shotcut:transition">lumaMix</property>
     <track producer="producer45" in="00:01:26.933" out="00:01:27.900"/>
     <track producer="producer46" in="00:24:02.633" out="00:24:03.600"/>
-    <transition id="transition44" out="00:00:00.967">
+    <transition id="transition44" out="00:00:01.000">
       <property name="a_track">0</property>
       <property name="b_track">1</property>
       <property name="factory">loader</property>
       <property name="mlt_service">luma</property>
-    <transition id="transition45" out="00:00:00.967">
+    <transition id="transition45" out="00:00:01.000">
       <property name="a_track">0</property>
       <property name="b_track">1</property>
+      <property name="mlt_service">mix</property>
       <property name="start">0</property>
       <property name="accepts_blanks">1</property>
-      <property name="mlt_service">mix</property>
   <producer id="producer47" title="Anonymous Submission" in="00:00:00.000" out="00:00:45.567">
@@ -2161,19 +2161,19 @@
     <blank length="00:00:14.633"/>
     <entry producer="producer56" in="00:13:42.700" out="00:13:52.700"/>
     <blank length="00:03:53.333"/>
-    <entry producer="producer57" in="00:17:46.100" out="00:18:06.400"/>
+    <entry producer="producer57" in="00:17:46.100" out="00:18:06.433"/>
     <blank length="00:01:01.133"/>
     <entry producer="producer58" in="00:19:07.600" out="00:19:17.700"/>
     <blank length="00:01:44.633"/>
     <entry producer="producer59" in="00:21:02.333" out="00:22:05.633"/>
     <blank length="00:01:12.433"/>
-    <entry producer="producer60" in="00:23:17.967" out="00:24:03.600"/>
+    <entry producer="producer60" in="00:23:18.000" out="00:24:03.600"/>
     <blank length="00:00:24.100"/>
     <entry producer="producer61" in="00:24:27.733" out="00:24:40.100"/>
   <tractor id="tractor26" title="Shotcut version 17.12.03" global_feed="1" in="00:00:00.000" out="00:21:49.000">
     <property name="shotcut">1</property>
-    <property name="shotcut:scaleFactor">3.73999</property>
+    <property name="shotcut:scaleFactor">0.468647</property>
     <track producer="background"/>
     <track producer="playlist0"/>
     <track producer="playlist1" hide="audio"/>

I appreciate anything you can do. I’m running Shotcut 17.12.03, but I also noticed it in previous versions.

The blog post for version 17.12 says “Fixed accuracy of reading and writing time values, particularly for non-integer frame rates.” This means a project created in a previous version might be a little different when opened in v17.12. Also, if you did something to change frame rate of the project, then the times will be different. The question now is, do you see this in a new project created with v17.12?

I saw that, but I didn’t see an improvement in v17.12. I did check my source videos, and they are 29.97 fps. I’ll create a new project with them and see if it has the issue. Thanks.