convert .mov video to .mp4 with ffmpeg
45,613
Solution 1
To convert videos, I like to use handbrake. You can find it here: https://handbrake.fr/ I use it on Linux but it should work well on MAC too.
For HandBrake:
handbrakecli -i {in-video}.mov -e x264 -E facc -o {out-video}.mp4
For ffmpeg:
ffmpeg -i {in-video}.mov -vcodec h264 -acodec aac {out-video}.mp4
Solution 2
Copy
You can stream copy if the MOV file contains video and audio that is compatible with MP4:
ffmpeg -i input.mov -c copy -movflags +faststart output.mp4
- Stream copy (
-c copy
) is like a "copy and paste" so the quality is preserved and the process is fast. -
-movflags +faststart
makes an output file that usable for HTML5 streaming, for example, putting all the necessary info to begin playback at the start of the file. If you only care about local desktop usage, you can leave that out. - Video formats compatible with MP4 include: H.264, H.265/HEVC, AV1 (new format, so not universally supported), MPEG-4 (old format, not supported in HTML5).
- Audio formats compatible with MP4 include: AAC, MP3 (playback support depends on player), Opus (new format, so not universally supported).
Encode
This will convert the MOV to H.264 video and AAC audio:
ffmpeg -i input.mov -c:v libx264 -c:a aac -vf format=yuv420p -movflags +faststart output.mp4
-
-c:v libx264
choose encoder libx264 to output H.264 video. -
-c:a aac
choose encoder aac to output AAC audio. -
-vf format=yuv420p
chooses YUV 4:2:0 pixel format. libx264 supports many pixel formats and by default will choose a pixel format that most resembles the input. But not all pixel formats are supported by all players.yuv420p
is the most compatible and universally supported. -
-movflags +faststart
same as the Web Optimized option in Handbrake. After encoding completes it moves a chunk of info from the end of file to the beginning so it can start playing faster when viewing via download.
See FFmpeg Wiki: H.264 and FFmpeg Wiki: AAC for more info, including CPU time vs. quality vs. bitrate settings. (x264's default is -preset medium -crf 23
)
Related videos on Youtube
![theonlygusti](https://i.stack.imgur.com/BTb0z.jpg?s=256&g=1)
Author by
theonlygusti
Updated on September 18, 2022Comments
-
theonlygusti almost 2 years
I am trying to convert a .mov video to .mp4 with ffmpeg:
ffmpeg -i ~/Desktop/Sample.mov ~/Desktop/Sample.mp4
This doesn't work though, and when I try to open the produced video in quicktime it tells me that the file is either corrupted or in a format quicktime doesn't understand.
How do I get this to work?
-
Peter Cordes about 3 yearsYou can use
-movflags +faststart
with-c copy
as well. It's just as useful / useless either way, depending on what you want to do with the file. (Allows the file to be streamed, e.g. from a web server.) Also,-c:a aac
is a low quality encoder;libfaac
is better. Or maybe you can keep the original audio and just transcode the video, e.g. for bitrate or codec reasons, like-c:v libx264 -c:a copy
. -
Peter Cordes about 3 yearsAlso, future readers that want to transcode should have a look at your FFmpeg wiki links for quality vs. encode-time vs. bitrate settings, like
-preset slower
to spend more CPU time to improve the quality per bitrate tradeoff. Very worth it for encode once, stream many times. And-crf 23
being the default,-crf 26
to quantize more (smaller file),-crf 20
or so to quantize less (higher quality).