If you’re happy with FFmpeg, you can change the video and audio Presentation Time Stamps on the 30000/1001 fps (it’s not exactly 29.97) to display each frame at 30 fps.
You would need to do something like:
ffmpeg -i input.mov -filter_complex "[0:v]setpts=0.999000999000999*PTS[v];[0:a]atempo=1.001[a]" -map "[v]" -map "[a]" output.mov
No one will notice the slight audio change (unless you’ve got 1k tone) or speed change.