I used to do a lot of this stuff when i worked in the industry, I used mencoder personally (which I then wrapped into a VB.NET app to poll the directory for new files and auto encode them when they were delivered) but FFMPEG is the most popular.
MP4 and MOV are just containers that have an audio and a video stream inside them, these streams can be in multiple formats for example you could have an MP4 with AAC Audio and X264 video or you could have an MP4 with MP3 audio and X265 video, they are both MP4’s but they are very different inside the container.
To change containers (re-encoding streams if necessary):
ffmpeg -i input_file.mp4 -f mov output_file.mov
Do some research into FFMPEG and the command line parameters, -acodec and -vcodec can be played around with for re-encoding to different bitrates and formats.