[FFmpeg-user] ff* command lines that work

Mark Filipak markfilipak.windows+ffmpeg at gmail.com
Tue Mar 10 02:09:00 EET 2020

On 03/09/2020 06:41 PM, Michael Koch wrote:
> Am 09.03.2020 um 23:31 schrieb Mark Filipak:
>> On 03/09/2020 05:30 PM, Michael Koch wrote:
>>> Am 09.03.2020 um 21:49 schrieb Mark Filipak:
>>>> On 03/09/2020 03:39 PM, hydra3333 at gmail.com wrote:
>>>>> Well, I'm a dumb user and google gave me LOTS and LOTS of 
>>>>> commandlines that work - simply filter the google results by the 
>>>>> "date in the last year" to be sure you get the latest syntax.  Lots.
>>>>> You appear to continually avoid "what is it you wish to do with a 
>>>>> specific example video that you have" type questions...
>>>> That's a fair observation. You deserve a serious response. May I 
>>>> provide perspective?
>>>> It appears to me that ffmpeg commands have the following structure:
>>>> ffmpeg A [[B ...] -i C [D ...]...] [[E ...] [F ...]...]
>>>>  [[i ]...] : inputs
>>>>       A    : general options
>>>>   [B ...]  : input-specific pre-options
>>>>      C     : input URL
>>>>   [D ...]  : input-specific post-options
>>>> ...[[]...] : outputs
>>>>   [E ...]  : output-specific filters
>>>>   [F ...]  : output URL
>>>> Full disclosure: I don't know if all of the above is correct.
>>> As far as I know, there are no input-specific post-options.
>> Thank you, Michael. I'll keep that in mind.
>>> All input specific options must be written before the input. Remove D.
>>> General options can also be written before the output (between E and F).
>> Thank you! That's really good to know.
>>> Filters are always output specific. So E ist just the filter chain.
>> True. I intended to indicate that E is an individual filter. I'm 
>> unsure whether, in a filter chain, all filters are delimited by 
>> semi-colons.
> commas or semi-colons, it's described in chapter 30:
> https://www.ffmpeg.org/ffmpeg-all.html#Filtering-Introduction

Thanks again. I of course had read that -- I've read everything -- but 
it was unclear regarding the structure. You have clarified it.

At this point, I could write a more specific template that includes some 
of the internals of a filter chain, but then I'd have to include 
brackets that delimit filter taps (e.g., '[0:1]'), but those brackets 
would conflict with the token brackets that indicate optional inclusion 
(e.g., '[B ...]'), so I don't want to include filter delimiters at the 
top level. So, I'm submitting this:

ffmpeg [A ...] [B ...] -i C [[D ...] -i E ...] [F ...] [G] [H ...] [[I 
...] J [[K ...] L ...]]
  A ... : general options, if any
  B ... : first input options, if any
  -i C  : first input-URL
  D ... : second input options, if any
  -i E  : second input-URL, if any, etc.
  F ... : more general options, if any
    G   : filter chains, if any
  H ... : more general options, if any
  I ... : first output-specific filters, if any
    J   ; first output-URL, if any
  K ... ; second output options, if any
    L   : second output-URL, if any, etc.

How's that look? Complete?
(I'd develop a full BNF suitable for a parser, but that would get pretty 
crazy, fast.)


More information about the ffmpeg-user mailing list