Thank you for bringing this to my attention. It seems that the MediaRecorder API produces video streams with inconsistent frame rates, so it’s going to be a challenge to fix this for the next release of PennController.
As for the video clips of different frame rates that you have collected, you can try to normalize them before merging them. For example,
ffmpeg has an option for that:
ffmpeg -i input.mp4 -r 30 -y output.mp4 (output.mp4 will have the same duration as input.mp4, but in 30fps)