Difference between -c:v and -vcodec, and -c:a and -acodec?

Is there's a difference between these two commands?

ffmpeg -i input.mp4 -c:v copy -c:a copy output.mkv

ffmpeg -i input.mp4 -vcodec copy -acodec copy output.mkv

Solution 1:

There is no difference. If you check the manual:

-vcodec codec (output)
Set the video codec. This is an alias for -codec:v.

And of course -codec is the same as -c.

-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)

However, I would encourage people to use the -codec/-c version, since it makes use of stream specifiers (:v, :a, :s), which are also used in filtergraphs or stream mapping.