[FFmpeg-devel] on the hard state of ffmpeg command line options

Michael Bradshaw mbradshaw at sorensonmedia.com
Sat Oct 27 03:54:03 CEST 2012

On Fri, Oct 26, 2012 at 4:11 PM, Roger Pack <rogerdpack2 at gmail.com> wrote:
> Hello all.  I know you've probably all heard this before, but thought
> I'd just throw it out there all again.
> I love FFmpeg, but sometimes I'm a bit unhappy with the way it takes
> command line options.
> $ ffmpeg -i INPUT  -f h264 yo.mp4
> $ ffmpeg -i INPUT  -f mp4 yo.mp4
> Same location on the command line. Different meaning.  Another example:
> $ ffmpeg -i INPUT -r 24 output
> I know this line makes perfect sense to long time users of FFmpeg.
> But to newbies, it is really hard to know where the r is going to
> apply.  People mess it up all the time.  And sometimes FFmpeg ignores
> input parameters
> So basically I would suggest that "ambiguous" parameters like "r" and
> "f" be deprecated in favor of something (anything?) else.  One
> possibility might be something like -o:r (for "output rate") or the
> like.

Rather than deprecate parameters (which I would hate to do merely for
usability for beginners), one option would be to add "-o:%s" and
"-i:%s" parameters, where "-o:"/"-i:" indicates it's an output/input
option, and %s is the regular option name (like "r" or "f"). Requiring
4 extra keystrokes for every option seems annoying.

But this still doesn't fix any confusion if providing multiple input files...

Argument ordering is easy for a beginner to mix up, and I even mix it
up sometimes myself. But I can't think of anything that's both simpler
than the current method and doesn't cripple FFmpeg. I think one of the
big reasons beginners screw up commands and command ordering is simply
because they don't understand how video in general works.

More information about the ffmpeg-devel mailing list