What's the difference between FFmpeg's "-vcodec copy" and "-sameq"?

What is the difference between using -vcodec copy and -sameq with FFmpeg?

Do they do the same thing?


Solution 1:

-sameq does not force you to use the same video codec. You can, for instance, convert H.264 to DivX while using -sameq.

Solution 2:

The accepted answer is incorrect—or at least doesn't really explain what the options actually do.

  • -c:v copy tells FFmpeg to copy the bitstream of the video to the output. For example, your AVI video has an XviD video bitstream, and you can copy it to an MP4 container, without re-encoding the video. This, in essence, gives you the same quality, as nothing will be changed in the video bitstream.

    Here's an example that changes the container from AVI to MP4, if the video bitstream is valid for MP4 as well:

    ffmpeg -i input.avi -c:v copy output.mp4
    

    Again: FFmpeg will copy anything that it finds. There's no re-encoding happening here. Basically, FFmpeg just reads and writes the container and doesn't change the codecs.

  • sameq tells FFmpeg to use the same quantization parameters when converting video with the same codec that was used for the input. The option does not mean same quality. See: What is the “sameq” option in FFmpeg?

    The sameq option was removed from FFmpeg quite some time ago, so it cannot be used anymore, and if you have a version of ffmpeg that still has it, it's time to upgrade!