231 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
@chapter Syntax
 | 
						|
@c man begin SYNTAX
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
@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
 | 
						|
[0x|#]RRGGBB[AA] sequence, possibly followed by "@@" and a string
 | 
						|
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
 |