connor449
connor449

Reputation: 1679

ffmpeg convert mov to mp4 without reduction of bit rate

I am trying to convert a mov video to mp4, but I don't want any compression to happen. I recorded it with Quicktime on a Mac and did so with maximum, uncompressed quality. When I run ffmpeg -i. I get:

    Stream #0:0(und): Video: prores (apcn / 0x6E637061), yuv422p10le(bt709), 1280x720, 72073 kb/s, 30.09 fps, 30 tbr, 30k tbn, 30k tbc (default)

Note the kb/s is 72,073. I want to preserve this bit rate.

I've tried a few different conversion commands, including:

ffmpeg -i input.mov output.mp4

and:

ffmpeg -i input.mov -qscale 0 output.mp4

Both work, but both result in a loss of bit rate. See info on the results of both

    Stream #0:0(und): Video: h264 (High 4:2:2) (avc1 / 0x31637661), yuv422p, 1280x720, 4569 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)

How do I convert to mp4 and still have ~72,000 kb/s? Is this possible?

Upvotes: 7

Views: 11444

Answers (1)

llogan
llogan

Reputation: 133713

You're comparing apples to oranges. ProRes and H.264 are two completely different formats, so comparing bitrates is meaningless. What you're really asking is...

How to convert ProRes to H.264 (MP4) with no quality loss?

Just set the quality with -crf. A value of 0 is lossless, and 18 looks lossless but really isn't.

Visually lossless

ffmpeg -i input.mov -crf 18 output.mp4

Lossless

Output file will be huge, and your player may not like it.

ffmpeg -i input.mov -crf 0 output.mp4

Compatibility

If you need the output to be playable in non-FFmpeg based players add -vf format=yuv420p :

ffmpeg -i input.mov -crf 18 -vf format=yuv420p output.mp4
  • You may notice a slight reduction in color fidelity, but it is required for wide compatibility.
  • You can omit -vf format=yuv420p if you're uploading to YouTube.

Stream copy

ProRes is not compatible in MP4, so you can't just do a stream copy (like a copy and paste). However, for those finding to this question, and who have compatible formats, and want to just change the container from MOV to MP4:

ffmpeg -i input.mov -c copy output.mp4

Also see

Upvotes: 20

Related Questions