How to change the framerate of a video without reencoding
Solution 1:
MP4Box can do it.
The command
MP4Box -add SourceMovie.mp4#video -raw 1 -new test
creates the files test
and test_track1.h264
. You can now create an mp4 file with whichever supported framerate you would like (30 in this example):
MP4Box -add test_track1.h264:fps=30 -new DestMovie.mp4
MP4Box is part of the gpac
package, so make sure it's installed.
Solution 2:
Changing framerate in the header of the video(container) has no effect on the videostream (or audiostream) itself. Reencoding is the only option.
Videostreams have timestamps and in most video's the frames are interdependent to each other due to interframe compression. Some players can speed up and slow down the video but not by embedded commands or something. No player can change the framerate on the fly when a containercommand asks to do so. The videofile will end up out of specification (i.e. not following the standards) and 99.9% of the players will refuse to comply to it. It is quite impossible to do what you want without recoding. Of course you can wait with recoding until the last step in your editing.
Solution 3:
In the event that your major intent is to play it in slow motion, and not to keep the file as MP4, you can use MKVmerge GUI tool to remux it into a Matroska container which can easily change the framerate. Remuxing is much better than reencoding, because it only changes the metadata, and not the stream itself.
First you install the package
sudo apt-get install mkvtoolnix-gui
Then you start MKVmerge GUI. You'll be faced with a window like this
Simply press add button and select your file or even just drag-n-drop the file into "Input files" area. At this point you should be able to select the video stream in your video. You can also delete other streams, since they will just get in the way anyhow.
After you've selected it you should see the bottom tabs becoming active:
Change to "Format specific actions"
You can see that there is a field "FPS", where you can input the value of frames per second. It looked like you were planning to slow things down four times, so about 7 frames per second would be your goal. You can also use "Stretch by" option.
After that you can just change the name of the output file (if you want) and press "Start muxing".
The program will run and you should have your file.