[FFmpeg-devel] Ideas to replace the options system

Tobias Rapp t.rapp at noa-archive.com
Tue Dec 8 09:03:23 CET 2015

On 05.12.2015 00:54, James Darnley wrote:
> On 2015-12-04 15:33, Nicolas George wrote:
>> Why do we need a new options system?
>>    Most importantly: escaping hell
> OMG yes!  I have seen several times the amount of backslashes Windows
> users are forced to use to provide a path to some of the filters.
> You raise a lot of good points that need to be considered from design,
> user-dev, and user-user perspectives.  I haven't read through in great
> detail but did glance at the heading and TL;DRs.
> I have a couple of probably controversial opinions about this:
> - Only allow "simple" string arguments on the command line.  If escapes
> or complexity is needed then force people to use a script file.
> - Deprecate and remove the expression evaluation that currently exists
> and replace it with an existing scripting language.  Sorry to the people
> that worked hard on it.  It works fine.  Perhaps the escaping hell
> causes my bad perception of it.
> [...]
I think that replacing the option system with a scripting language will 
put the entry level too high for most users. The basic problem seems to 
be how to better represent option hierarchy. Maybe some JSON-like syntax 
would make it simpler:

ffmpeg -f lavfi -i '{"aevalsrc": {"exprs": ["sin(420*2*PI*t)", 
"cos(430*2*PI*t)"], "c": ["FC", "BC"]}, "s": 48000}' ...

If you have to escape double quote characters in your shell environment 
it gets really worse, though. So likely the syntax should be adjusted to 
allow for both, single and double quotes. Further it would be nice to 
allow the key being non-quoted:

ffmpeg -f lavfi -i "{aevalsrc: {exprs: ['sin(420*2*PI*t)', 
'cos(430*2*PI*t)'], c: ['FC', 'BC']}, s: 48000}" ...

Just some idea.


More information about the ffmpeg-devel mailing list