2012-05-03 15:14:14 +02:00
|
|
|
@chapter Syntax
|
|
|
|
@c man begin SYNTAX
|
|
|
|
|
2012-10-15 11:13:13 +02:00
|
|
|
This section documents the syntax and formats employed by the FFmpeg
|
|
|
|
libraries and tools.
|
|
|
|
|
|
|
|
@anchor{quoting_and_escaping}
|
|
|
|
@section Quoting and escaping
|
|
|
|
|
|
|
|
FFmpeg adopts the following quoting and escaping mechanism, unless
|
|
|
|
explicitly specified. The following rules are applied:
|
|
|
|
|
|
|
|
@itemize
|
|
|
|
@item
|
|
|
|
@code{'} and @code{\} are special characters (respectively used for
|
|
|
|
quoting and escaping). In addition to them, there might be other
|
|
|
|
special characters depending on the specific syntax where the escaping
|
|
|
|
and quoting are employed.
|
|
|
|
|
|
|
|
@item
|
|
|
|
A special character is escaped by prefixing it with a '\'.
|
|
|
|
|
|
|
|
@item
|
|
|
|
All characters enclosed between '' are included literally in the
|
|
|
|
parsed string. The quote character @code{'} itself cannot be quoted,
|
|
|
|
so you may need to close the quote and escape it.
|
|
|
|
|
|
|
|
@item
|
|
|
|
Leading and trailing whitespaces, unless escaped or quoted, are
|
|
|
|
removed from the parsed string.
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
Note that you may need to add a second level of escaping when using
|
|
|
|
the command line or a script, which depends on the syntax of the
|
|
|
|
adopted shell language.
|
|
|
|
|
|
|
|
The function @code{av_get_token} defined in
|
|
|
|
@file{libavutil/avstring.h} can be used to parse a token quoted or
|
|
|
|
escaped according to the rules defined above.
|
|
|
|
|
|
|
|
The tool @file{tools/ffescape} in the FFmpeg source tree can be used
|
|
|
|
to automatically quote or escape a string in a script.
|
|
|
|
|
|
|
|
@subsection Examples
|
|
|
|
|
|
|
|
@itemize
|
|
|
|
@item
|
|
|
|
Escape the string @code{Crime d'Amour} containing the @code{'} special
|
|
|
|
character:
|
|
|
|
@example
|
|
|
|
Crime d\'Amour
|
|
|
|
@end example
|
|
|
|
|
|
|
|
@item
|
|
|
|
The string above contains a quote, so the @code{'} needs to be escaped
|
|
|
|
when quoting it:
|
|
|
|
@example
|
|
|
|
'Crime d'\''Amour'
|
|
|
|
@end example
|
|
|
|
|
|
|
|
@item
|
|
|
|
Include leading or trailing whitespaces using quoting:
|
|
|
|
@example
|
|
|
|
' this string starts and ends with whitespaces '
|
|
|
|
@end example
|
|
|
|
|
|
|
|
@item
|
|
|
|
Escaping and quoting can be mixed together:
|
|
|
|
@example
|
|
|
|
' The string '\'string\'' is a string '
|
|
|
|
@end example
|
|
|
|
|
|
|
|
@item
|
|
|
|
To include a literal @code{\} you can use either escaping or quoting:
|
|
|
|
@example
|
|
|
|
'c:\foo' can be written as c:\\foo
|
|
|
|
@end example
|
|
|
|
@end itemize
|
2012-05-03 15:14:14 +02:00
|
|
|
|
|
|
|
@anchor{date syntax}
|
|
|
|
@section Date
|
|
|
|
|
|
|
|
The accepted syntax is:
|
|
|
|
@example
|
|
|
|
[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
|
|
|
|
now
|
|
|
|
@end example
|
|
|
|
|
|
|
|
If the value is "now" it takes the current time.
|
|
|
|
|
|
|
|
Time is local time unless Z is appended, in which case it is
|
|
|
|
interpreted as UTC.
|
|
|
|
If the year-month-day part is not specified it takes the current
|
|
|
|
year-month-day.
|
|
|
|
|
|
|
|
@anchor{time duration syntax}
|
|
|
|
@section Time duration
|
|
|
|
|
|
|
|
The accepted syntax is:
|
|
|
|
@example
|
|
|
|
[-]HH:MM:SS[.m...]
|
|
|
|
[-]S+[.m...]
|
|
|
|
@end example
|
|
|
|
|
|
|
|
@var{HH} expresses the number of hours, @var{MM} the number a of minutes
|
|
|
|
and @var{SS} the number of seconds.
|
|
|
|
|
|
|
|
@anchor{video size syntax}
|
|
|
|
@section Video size
|
|
|
|
Specify the size of the sourced video, it may be a string of the form
|
|
|
|
@var{width}x@var{height}, or the name of a size abbreviation.
|
|
|
|
|
|
|
|
The following abbreviations are recognized:
|
|
|
|
@table @samp
|
|
|
|
@item sqcif
|
|
|
|
128x96
|
|
|
|
@item qcif
|
|
|
|
176x144
|
|
|
|
@item cif
|
|
|
|
352x288
|
|
|
|
@item 4cif
|
|
|
|
704x576
|
|
|
|
@item 16cif
|
|
|
|
1408x1152
|
|
|
|
@item qqvga
|
|
|
|
160x120
|
|
|
|
@item qvga
|
|
|
|
320x240
|
|
|
|
@item vga
|
|
|
|
640x480
|
|
|
|
@item svga
|
|
|
|
800x600
|
|
|
|
@item xga
|
|
|
|
1024x768
|
|
|
|
@item uxga
|
|
|
|
1600x1200
|
|
|
|
@item qxga
|
|
|
|
2048x1536
|
|
|
|
@item sxga
|
|
|
|
1280x1024
|
|
|
|
@item qsxga
|
|
|
|
2560x2048
|
|
|
|
@item hsxga
|
|
|
|
5120x4096
|
|
|
|
@item wvga
|
|
|
|
852x480
|
|
|
|
@item wxga
|
|
|
|
1366x768
|
|
|
|
@item wsxga
|
|
|
|
1600x1024
|
|
|
|
@item wuxga
|
|
|
|
1920x1200
|
|
|
|
@item woxga
|
|
|
|
2560x1600
|
|
|
|
@item wqsxga
|
|
|
|
3200x2048
|
|
|
|
@item wquxga
|
|
|
|
3840x2400
|
|
|
|
@item whsxga
|
|
|
|
6400x4096
|
|
|
|
@item whuxga
|
|
|
|
7680x4800
|
|
|
|
@item cga
|
|
|
|
320x200
|
|
|
|
@item ega
|
|
|
|
640x350
|
|
|
|
@item hd480
|
|
|
|
852x480
|
|
|
|
@item hd720
|
|
|
|
1280x720
|
|
|
|
@item hd1080
|
|
|
|
1920x1080
|
|
|
|
@end table
|
|
|
|
|
|
|
|
@anchor{video rate syntax}
|
|
|
|
@section Video rate
|
|
|
|
|
|
|
|
Specify the frame rate of a video, expressed as the number of frames
|
|
|
|
generated per second. It has to be a string in the format
|
|
|
|
@var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
|
|
|
|
number or a valid video frame rate abbreviation.
|
|
|
|
|
|
|
|
The following abbreviations are recognized:
|
|
|
|
@table @samp
|
|
|
|
@item ntsc
|
|
|
|
30000/1001
|
|
|
|
@item pal
|
|
|
|
25/1
|
|
|
|
@item qntsc
|
|
|
|
30000/1
|
|
|
|
@item qpal
|
|
|
|
25/1
|
|
|
|
@item sntsc
|
|
|
|
30000/1
|
|
|
|
@item spal
|
|
|
|
25/1
|
|
|
|
@item film
|
|
|
|
24/1
|
|
|
|
@item ntsc-film
|
|
|
|
24000/1
|
|
|
|
@end table
|
|
|
|
|
|
|
|
@anchor{ratio syntax}
|
|
|
|
@section Ratio
|
|
|
|
|
|
|
|
A ratio can be expressed as an expression, or in the form
|
|
|
|
@var{numerator}:@var{denominator}.
|
|
|
|
|
|
|
|
Note that a ratio with infinite (1/0) or negative value is
|
|
|
|
considered valid, so you should check on the returned value if you
|
|
|
|
want to exclude those values.
|
|
|
|
|
|
|
|
The undefined value can be expressed using the "0:0" string.
|
|
|
|
|
|
|
|
@anchor{color syntax}
|
|
|
|
@section Color
|
|
|
|
|
|
|
|
It can be the name of a color (case insensitive match) or a
|
2012-05-29 07:40:12 +02:00
|
|
|
[0x|#]RRGGBB[AA] sequence, possibly followed by "@@" and a string
|
2012-05-03 15:14:14 +02:00
|
|
|
representing the alpha component.
|
|
|
|
|
|
|
|
The alpha component may be a string composed by "0x" followed by an
|
|
|
|
hexadecimal number or a decimal number between 0.0 and 1.0, which
|
|
|
|
represents the opacity value (0x00/0.0 means completely transparent,
|
|
|
|
0xff/1.0 completely opaque).
|
|
|
|
If the alpha component is not specified then 0xff is assumed.
|
|
|
|
|
|
|
|
The string "random" will result in a random color.
|
|
|
|
|
|
|
|
@c man end SYNTAX
|