836 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			836 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
@chapter Demuxers
 | 
						|
@c man begin DEMUXERS
 | 
						|
 | 
						|
Demuxers are configured elements in FFmpeg that can read the
 | 
						|
multimedia streams from a particular type of file.
 | 
						|
 | 
						|
When you configure your FFmpeg build, all the supported demuxers
 | 
						|
are enabled by default. You can list all available ones using the
 | 
						|
configure option @code{--list-demuxers}.
 | 
						|
 | 
						|
You can disable all the demuxers using the configure option
 | 
						|
@code{--disable-demuxers}, and selectively enable a single demuxer with
 | 
						|
the option @code{--enable-demuxer=@var{DEMUXER}}, or disable it
 | 
						|
with the option @code{--disable-demuxer=@var{DEMUXER}}.
 | 
						|
 | 
						|
The option @code{-demuxers} of the ff* tools will display the list of
 | 
						|
enabled demuxers. Use @code{-formats} to view a combined list of
 | 
						|
enabled demuxers and muxers.
 | 
						|
 | 
						|
The description of some of the currently available demuxers follows.
 | 
						|
 | 
						|
@section aa
 | 
						|
 | 
						|
Audible Format 2, 3, and 4 demuxer.
 | 
						|
 | 
						|
This demuxer is used to demux Audible Format 2, 3, and 4 (.aa) files.
 | 
						|
 | 
						|
@section apng
 | 
						|
 | 
						|
Animated Portable Network Graphics demuxer.
 | 
						|
 | 
						|
This demuxer is used to demux APNG files.
 | 
						|
All headers, but the PNG signature, up to (but not including) the first
 | 
						|
fcTL chunk are transmitted as extradata.
 | 
						|
Frames are then split as being all the chunks between two fcTL ones, or
 | 
						|
between the last fcTL and IEND chunks.
 | 
						|
 | 
						|
@table @option
 | 
						|
@item -ignore_loop @var{bool}
 | 
						|
Ignore the loop variable in the file if set.
 | 
						|
@item -max_fps @var{int}
 | 
						|
Maximum framerate in frames per second (0 for no limit).
 | 
						|
@item -default_fps @var{int}
 | 
						|
Default framerate in frames per second when none is specified in the file
 | 
						|
(0 meaning as fast as possible).
 | 
						|
@end table
 | 
						|
 | 
						|
@section asf
 | 
						|
 | 
						|
Advanced Systems Format demuxer.
 | 
						|
 | 
						|
This demuxer is used to demux ASF files and MMS network streams.
 | 
						|
 | 
						|
@table @option
 | 
						|
@item -no_resync_search @var{bool}
 | 
						|
Do not try to resynchronize by looking for a certain optional start code.
 | 
						|
@end table
 | 
						|
 | 
						|
@anchor{concat}
 | 
						|
@section concat
 | 
						|
 | 
						|
Virtual concatenation script demuxer.
 | 
						|
 | 
						|
This demuxer reads a list of files and other directives from a text file and
 | 
						|
demuxes them one after the other, as if all their packets had been muxed
 | 
						|
together.
 | 
						|
 | 
						|
The timestamps in the files are adjusted so that the first file starts at 0
 | 
						|
and each next file starts where the previous one finishes. Note that it is
 | 
						|
done globally and may cause gaps if all streams do not have exactly the same
 | 
						|
length.
 | 
						|
 | 
						|
All files must have the same streams (same codecs, same time base, etc.).
 | 
						|
 | 
						|
The duration of each file is used to adjust the timestamps of the next file:
 | 
						|
if the duration is incorrect (because it was computed using the bit-rate or
 | 
						|
because the file is truncated, for example), it can cause artifacts. The
 | 
						|
@code{duration} directive can be used to override the duration stored in
 | 
						|
each file.
 | 
						|
 | 
						|
@subsection Syntax
 | 
						|
 | 
						|
The script is a text file in extended-ASCII, with one directive per line.
 | 
						|
Empty lines, leading spaces and lines starting with '#' are ignored. The
 | 
						|
following directive is recognized:
 | 
						|
 | 
						|
@table @option
 | 
						|
 | 
						|
@item @code{file @var{path}}
 | 
						|
Path to a file to read; special characters and spaces must be escaped with
 | 
						|
backslash or single quotes.
 | 
						|
 | 
						|
All subsequent file-related directives apply to that file.
 | 
						|
 | 
						|
@item @code{ffconcat version 1.0}
 | 
						|
Identify the script type and version. It also sets the @option{safe} option
 | 
						|
to 1 if it was -1.
 | 
						|
 | 
						|
To make FFmpeg recognize the format automatically, this directive must
 | 
						|
appear exactly as is (no extra space or byte-order-mark) on the very first
 | 
						|
line of the script.
 | 
						|
 | 
						|
@item @code{duration @var{dur}}
 | 
						|
Duration of the file. This information can be specified from the file;
 | 
						|
specifying it here may be more efficient or help if the information from the
 | 
						|
file is not available or accurate.
 | 
						|
 | 
						|
If the duration is set for all files, then it is possible to seek in the
 | 
						|
whole concatenated video.
 | 
						|
 | 
						|
@item @code{inpoint @var{timestamp}}
 | 
						|
In point of the file. When the demuxer opens the file it instantly seeks to the
 | 
						|
specified timestamp. Seeking is done so that all streams can be presented
 | 
						|
successfully at In point.
 | 
						|
 | 
						|
This directive works best with intra frame codecs, because for non-intra frame
 | 
						|
ones you will usually get extra packets before the actual In point and the
 | 
						|
decoded content will most likely contain frames before In point too.
 | 
						|
 | 
						|
For each file, packets before the file In point will have timestamps less than
 | 
						|
the calculated start timestamp of the file (negative in case of the first
 | 
						|
file), and the duration of the files (if not specified by the @code{duration}
 | 
						|
directive) will be reduced based on their specified In point.
 | 
						|
 | 
						|
Because of potential packets before the specified In point, packet timestamps
 | 
						|
may overlap between two concatenated files.
 | 
						|
 | 
						|
@item @code{outpoint @var{timestamp}}
 | 
						|
Out point of the file. When the demuxer reaches the specified decoding
 | 
						|
timestamp in any of the streams, it handles it as an end of file condition and
 | 
						|
skips the current and all the remaining packets from all streams.
 | 
						|
 | 
						|
Out point is exclusive, which means that the demuxer will not output packets
 | 
						|
with a decoding timestamp greater or equal to Out point.
 | 
						|
 | 
						|
This directive works best with intra frame codecs and formats where all streams
 | 
						|
are tightly interleaved. For non-intra frame codecs you will usually get
 | 
						|
additional packets with presentation timestamp after Out point therefore the
 | 
						|
decoded content will most likely contain frames after Out point too. If your
 | 
						|
streams are not tightly interleaved you may not get all the packets from all
 | 
						|
streams before Out point and you may only will be able to decode the earliest
 | 
						|
stream until Out point.
 | 
						|
 | 
						|
The duration of the files (if not specified by the @code{duration}
 | 
						|
directive) will be reduced based on their specified Out point.
 | 
						|
 | 
						|
@item @code{file_packet_metadata @var{key=value}}
 | 
						|
Metadata of the packets of the file. The specified metadata will be set for
 | 
						|
each file packet. You can specify this directive multiple times to add multiple
 | 
						|
metadata entries.
 | 
						|
 | 
						|
@item @code{stream}
 | 
						|
Introduce a stream in the virtual file.
 | 
						|
All subsequent stream-related directives apply to the last introduced
 | 
						|
stream.
 | 
						|
Some streams properties must be set in order to allow identifying the
 | 
						|
matching streams in the subfiles.
 | 
						|
If no streams are defined in the script, the streams from the first file are
 | 
						|
copied.
 | 
						|
 | 
						|
@item @code{exact_stream_id @var{id}}
 | 
						|
Set the id of the stream.
 | 
						|
If this directive is given, the string with the corresponding id in the
 | 
						|
subfiles will be used.
 | 
						|
This is especially useful for MPEG-PS (VOB) files, where the order of the
 | 
						|
streams is not reliable.
 | 
						|
 | 
						|
@end table
 | 
						|
 | 
						|
@subsection Options
 | 
						|
 | 
						|
This demuxer accepts the following option:
 | 
						|
 | 
						|
@table @option
 | 
						|
 | 
						|
@item safe
 | 
						|
If set to 1, reject unsafe file paths. A file path is considered safe if it
 | 
						|
does not contain a protocol specification and is relative and all components
 | 
						|
only contain characters from the portable character set (letters, digits,
 | 
						|
period, underscore and hyphen) and have no period at the beginning of a
 | 
						|
component.
 | 
						|
 | 
						|
If set to 0, any file name is accepted.
 | 
						|
 | 
						|
The default is 1.
 | 
						|
 | 
						|
-1 is equivalent to 1 if the format was automatically
 | 
						|
probed and 0 otherwise.
 | 
						|
 | 
						|
@item auto_convert
 | 
						|
If set to 1, try to perform automatic conversions on packet data to make the
 | 
						|
streams concatenable.
 | 
						|
The default is 1.
 | 
						|
 | 
						|
Currently, the only conversion is adding the h264_mp4toannexb bitstream
 | 
						|
filter to H.264 streams in MP4 format. This is necessary in particular if
 | 
						|
there are resolution changes.
 | 
						|
 | 
						|
@item segment_time_metadata
 | 
						|
If set to 1, every packet will contain the @var{lavf.concat.start_time} and the
 | 
						|
@var{lavf.concat.duration} packet metadata values which are the start_time and
 | 
						|
the duration of the respective file segments in the concatenated output
 | 
						|
expressed in microseconds. The duration metadata is only set if it is known
 | 
						|
based on the concat file.
 | 
						|
The default is 0.
 | 
						|
 | 
						|
@end table
 | 
						|
 | 
						|
@subsection Examples
 | 
						|
 | 
						|
@itemize
 | 
						|
@item
 | 
						|
Use absolute filenames and include some comments:
 | 
						|
@example
 | 
						|
# my first filename
 | 
						|
file /mnt/share/file-1.wav
 | 
						|
# my second filename including whitespace
 | 
						|
file '/mnt/share/file 2.wav'
 | 
						|
# my third filename including whitespace plus single quote
 | 
						|
file '/mnt/share/file 3'\''.wav'
 | 
						|
@end example
 | 
						|
 | 
						|
@item
 | 
						|
Allow for input format auto-probing, use safe filenames and set the duration of
 | 
						|
the first file:
 | 
						|
@example
 | 
						|
ffconcat version 1.0
 | 
						|
 | 
						|
file file-1.wav
 | 
						|
duration 20.0
 | 
						|
 | 
						|
file subdir/file-2.wav
 | 
						|
@end example
 | 
						|
@end itemize
 | 
						|
 | 
						|
@section dash
 | 
						|
 | 
						|
Dynamic Adaptive Streaming over HTTP demuxer.
 | 
						|
 | 
						|
This demuxer presents all AVStreams found in the manifest.
 | 
						|
By setting the discard flags on AVStreams the caller can decide
 | 
						|
which streams to actually receive.
 | 
						|
Each stream mirrors the @code{id} and @code{bandwidth} properties from the
 | 
						|
@code{<Representation>} as metadata keys named "id" and "variant_bitrate" respectively.
 | 
						|
 | 
						|
@section flv, live_flv
 | 
						|
 | 
						|
Adobe Flash Video Format demuxer.
 | 
						|
 | 
						|
This demuxer is used to demux FLV files and RTMP network streams. In case of live network streams, if you force format, you may use live_flv option instead of flv to survive timestamp discontinuities.
 | 
						|
 | 
						|
@example
 | 
						|
ffmpeg -f flv -i myfile.flv ...
 | 
						|
ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
 | 
						|
@end example
 | 
						|
 | 
						|
 | 
						|
@table @option
 | 
						|
@item -flv_metadata @var{bool}
 | 
						|
Allocate the streams according to the onMetaData array content.
 | 
						|
 | 
						|
@item -flv_ignore_prevtag @var{bool}
 | 
						|
Ignore the size of previous tag value.
 | 
						|
 | 
						|
@item -flv_full_metadata @var{bool}
 | 
						|
Output all context of the onMetadata.
 | 
						|
@end table
 | 
						|
 | 
						|
@section gif
 | 
						|
 | 
						|
Animated GIF demuxer.
 | 
						|
 | 
						|
It accepts the following options:
 | 
						|
 | 
						|
@table @option
 | 
						|
@item min_delay
 | 
						|
Set the minimum valid delay between frames in hundredths of seconds.
 | 
						|
Range is 0 to 6000. Default value is 2.
 | 
						|
 | 
						|
@item max_gif_delay
 | 
						|
Set the maximum valid delay between frames in hundredth of seconds.
 | 
						|
Range is 0 to 65535. Default value is 65535 (nearly eleven minutes),
 | 
						|
the maximum value allowed by the specification.
 | 
						|
 | 
						|
@item default_delay
 | 
						|
Set the default delay between frames in hundredths of seconds.
 | 
						|
Range is 0 to 6000. Default value is 10.
 | 
						|
 | 
						|
@item ignore_loop
 | 
						|
GIF files can contain information to loop a certain number of times (or
 | 
						|
infinitely). If @option{ignore_loop} is set to 1, then the loop setting
 | 
						|
from the input will be ignored and looping will not occur. If set to 0,
 | 
						|
then looping will occur and will cycle the number of times according to
 | 
						|
the GIF. Default value is 1.
 | 
						|
@end table
 | 
						|
 | 
						|
For example, with the overlay filter, place an infinitely looping GIF
 | 
						|
over another video:
 | 
						|
@example
 | 
						|
ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv
 | 
						|
@end example
 | 
						|
 | 
						|
Note that in the above example the shortest option for overlay filter is
 | 
						|
used to end the output video at the length of the shortest input file,
 | 
						|
which in this case is @file{input.mp4} as the GIF in this example loops
 | 
						|
infinitely.
 | 
						|
 | 
						|
@section hls
 | 
						|
 | 
						|
HLS demuxer
 | 
						|
 | 
						|
Apple HTTP Live Streaming demuxer.
 | 
						|
 | 
						|
This demuxer presents all AVStreams from all variant streams.
 | 
						|
The id field is set to the bitrate variant index number. By setting
 | 
						|
the discard flags on AVStreams (by pressing 'a' or 'v' in ffplay),
 | 
						|
the caller can decide which variant streams to actually receive.
 | 
						|
The total bitrate of the variant that the stream belongs to is
 | 
						|
available in a metadata key named "variant_bitrate".
 | 
						|
 | 
						|
It accepts the following options:
 | 
						|
 | 
						|
@table @option
 | 
						|
@item live_start_index
 | 
						|
segment index to start live streams at (negative values are from the end).
 | 
						|
 | 
						|
@item allowed_extensions
 | 
						|
',' separated list of file extensions that hls is allowed to access.
 | 
						|
 | 
						|
@item max_reload
 | 
						|
Maximum number of times a insufficient list is attempted to be reloaded.
 | 
						|
Default value is 1000.
 | 
						|
 | 
						|
@item m3u8_hold_counters
 | 
						|
The maximum number of times to load m3u8 when it refreshes without new segments.
 | 
						|
Default value is 1000.
 | 
						|
 | 
						|
@item http_persistent
 | 
						|
Use persistent HTTP connections. Applicable only for HTTP streams.
 | 
						|
Enabled by default.
 | 
						|
 | 
						|
@item http_multiple
 | 
						|
Use multiple HTTP connections for downloading HTTP segments.
 | 
						|
Enabled by default for HTTP/1.1 servers.
 | 
						|
 | 
						|
@item http_seekable
 | 
						|
Use HTTP partial requests for downloading HTTP segments.
 | 
						|
0 = disable, 1 = enable, -1 = auto, Default is auto.
 | 
						|
@end table
 | 
						|
 | 
						|
@section image2
 | 
						|
 | 
						|
Image file demuxer.
 | 
						|
 | 
						|
This demuxer reads from a list of image files specified by a pattern.
 | 
						|
The syntax and meaning of the pattern is specified by the
 | 
						|
option @var{pattern_type}.
 | 
						|
 | 
						|
The pattern may contain a suffix which is used to automatically
 | 
						|
determine the format of the images contained in the files.
 | 
						|
 | 
						|
The size, the pixel format, and the format of each image must be the
 | 
						|
same for all the files in the sequence.
 | 
						|
 | 
						|
This demuxer accepts the following options:
 | 
						|
@table @option
 | 
						|
@item framerate
 | 
						|
Set the frame rate for the video stream. It defaults to 25.
 | 
						|
@item loop
 | 
						|
If set to 1, loop over the input. Default value is 0.
 | 
						|
@item pattern_type
 | 
						|
Select the pattern type used to interpret the provided filename.
 | 
						|
 | 
						|
@var{pattern_type} accepts one of the following values.
 | 
						|
@table @option
 | 
						|
@item none
 | 
						|
Disable pattern matching, therefore the video will only contain the specified
 | 
						|
image. You should use this option if you do not want to create sequences from
 | 
						|
multiple images and your filenames may contain special pattern characters.
 | 
						|
@item sequence
 | 
						|
Select a sequence pattern type, used to specify a sequence of files
 | 
						|
indexed by sequential numbers.
 | 
						|
 | 
						|
A sequence pattern may contain the string "%d" or "%0@var{N}d", which
 | 
						|
specifies the position of the characters representing a sequential
 | 
						|
number in each filename matched by the pattern. If the form
 | 
						|
"%d0@var{N}d" is used, the string representing the number in each
 | 
						|
filename is 0-padded and @var{N} is the total number of 0-padded
 | 
						|
digits representing the number. The literal character '%' can be
 | 
						|
specified in the pattern with the string "%%".
 | 
						|
 | 
						|
If the sequence pattern contains "%d" or "%0@var{N}d", the first filename of
 | 
						|
the file list specified by the pattern must contain a number
 | 
						|
inclusively contained between @var{start_number} and
 | 
						|
@var{start_number}+@var{start_number_range}-1, and all the following
 | 
						|
numbers must be sequential.
 | 
						|
 | 
						|
For example the pattern "img-%03d.bmp" will match a sequence of
 | 
						|
filenames of the form @file{img-001.bmp}, @file{img-002.bmp}, ...,
 | 
						|
@file{img-010.bmp}, etc.; the pattern "i%%m%%g-%d.jpg" will match a
 | 
						|
sequence of filenames of the form @file{i%m%g-1.jpg},
 | 
						|
@file{i%m%g-2.jpg}, ..., @file{i%m%g-10.jpg}, etc.
 | 
						|
 | 
						|
Note that the pattern must not necessarily contain "%d" or
 | 
						|
"%0@var{N}d", for example to convert a single image file
 | 
						|
@file{img.jpeg} you can employ the command:
 | 
						|
@example
 | 
						|
ffmpeg -i img.jpeg img.png
 | 
						|
@end example
 | 
						|
 | 
						|
@item glob
 | 
						|
Select a glob wildcard pattern type.
 | 
						|
 | 
						|
The pattern is interpreted like a @code{glob()} pattern. This is only
 | 
						|
selectable if libavformat was compiled with globbing support.
 | 
						|
 | 
						|
@item glob_sequence @emph{(deprecated, will be removed)}
 | 
						|
Select a mixed glob wildcard/sequence pattern.
 | 
						|
 | 
						|
If your version of libavformat was compiled with globbing support, and
 | 
						|
the provided pattern contains at least one glob meta character among
 | 
						|
@code{%*?[]@{@}} that is preceded by an unescaped "%", the pattern is
 | 
						|
interpreted like a @code{glob()} pattern, otherwise it is interpreted
 | 
						|
like a sequence pattern.
 | 
						|
 | 
						|
All glob special characters @code{%*?[]@{@}} must be prefixed
 | 
						|
with "%". To escape a literal "%" you shall use "%%".
 | 
						|
 | 
						|
For example the pattern @code{foo-%*.jpeg} will match all the
 | 
						|
filenames prefixed by "foo-" and terminating with ".jpeg", and
 | 
						|
@code{foo-%?%?%?.jpeg} will match all the filenames prefixed with
 | 
						|
"foo-", followed by a sequence of three characters, and terminating
 | 
						|
with ".jpeg".
 | 
						|
 | 
						|
This pattern type is deprecated in favor of @var{glob} and
 | 
						|
@var{sequence}.
 | 
						|
@end table
 | 
						|
 | 
						|
Default value is @var{glob_sequence}.
 | 
						|
@item pixel_format
 | 
						|
Set the pixel format of the images to read. If not specified the pixel
 | 
						|
format is guessed from the first image file in the sequence.
 | 
						|
@item start_number
 | 
						|
Set the index of the file matched by the image file pattern to start
 | 
						|
to read from. Default value is 0.
 | 
						|
@item start_number_range
 | 
						|
Set the index interval range to check when looking for the first image
 | 
						|
file in the sequence, starting from @var{start_number}. Default value
 | 
						|
is 5.
 | 
						|
@item ts_from_file
 | 
						|
If set to 1, will set frame timestamp to modification time of image file. Note
 | 
						|
that monotonity of timestamps is not provided: images go in the same order as
 | 
						|
without this option. Default value is 0.
 | 
						|
If set to 2, will set frame timestamp to the modification time of the image file in
 | 
						|
nanosecond precision.
 | 
						|
@item video_size
 | 
						|
Set the video size of the images to read. If not specified the video
 | 
						|
size is guessed from the first image file in the sequence.
 | 
						|
@item export_path_metadata
 | 
						|
If set to 1, will add two extra fields to the metadata found in input, making them
 | 
						|
also available for other filters (see @var{drawtext} filter for examples). Default
 | 
						|
value is 0. The extra fields are described below:
 | 
						|
@table @option
 | 
						|
@item lavf.image2dec.source_path
 | 
						|
Corresponds to the full path to the input file being read.
 | 
						|
@item lavf.image2dec.source_basename
 | 
						|
Corresponds to the name of the file being read.
 | 
						|
@end table
 | 
						|
 | 
						|
@end table
 | 
						|
 | 
						|
@subsection Examples
 | 
						|
 | 
						|
@itemize
 | 
						|
@item
 | 
						|
Use @command{ffmpeg} for creating a video from the images in the file
 | 
						|
sequence @file{img-001.jpeg}, @file{img-002.jpeg}, ..., assuming an
 | 
						|
input frame rate of 10 frames per second:
 | 
						|
@example
 | 
						|
ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
 | 
						|
@end example
 | 
						|
 | 
						|
@item
 | 
						|
As above, but start by reading from a file with index 100 in the sequence:
 | 
						|
@example
 | 
						|
ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
 | 
						|
@end example
 | 
						|
 | 
						|
@item
 | 
						|
Read images matching the "*.png" glob pattern , that is all the files
 | 
						|
terminating with the ".png" suffix:
 | 
						|
@example
 | 
						|
ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
 | 
						|
@end example
 | 
						|
@end itemize
 | 
						|
 | 
						|
@section libgme
 | 
						|
 | 
						|
The Game Music Emu library is a collection of video game music file emulators.
 | 
						|
 | 
						|
See @url{https://bitbucket.org/mpyne/game-music-emu/overview} for more information.
 | 
						|
 | 
						|
It accepts the following options:
 | 
						|
 | 
						|
@table @option
 | 
						|
 | 
						|
@item track_index
 | 
						|
Set the index of which track to demux. The demuxer can only export one track.
 | 
						|
Track indexes start at 0. Default is to pick the first track. Number of tracks
 | 
						|
is exported as @var{tracks} metadata entry.
 | 
						|
 | 
						|
@item sample_rate
 | 
						|
Set the sampling rate of the exported track. Range is 1000 to 999999. Default is 44100.
 | 
						|
 | 
						|
@item max_size @emph{(bytes)}
 | 
						|
The demuxer buffers the entire file into memory. Adjust this value to set the maximum buffer size,
 | 
						|
which in turn, acts as a ceiling for the size of files that can be read.
 | 
						|
Default is 50 MiB.
 | 
						|
 | 
						|
@end table
 | 
						|
 | 
						|
@section libmodplug
 | 
						|
 | 
						|
ModPlug based module demuxer
 | 
						|
 | 
						|
See @url{https://github.com/Konstanty/libmodplug}
 | 
						|
 | 
						|
It will export one 2-channel 16-bit 44.1 kHz audio stream.
 | 
						|
Optionally, a @code{pal8} 16-color video stream can be exported with or without printed metadata.
 | 
						|
 | 
						|
It accepts the following options:
 | 
						|
 | 
						|
@table @option
 | 
						|
@item noise_reduction
 | 
						|
Apply a simple low-pass filter. Can be 1 (on) or 0 (off). Default is 0.
 | 
						|
 | 
						|
@item reverb_depth
 | 
						|
Set amount of reverb. Range 0-100. Default is 0.
 | 
						|
 | 
						|
@item reverb_delay
 | 
						|
Set delay in ms, clamped to 40-250 ms. Default is 0.
 | 
						|
 | 
						|
@item bass_amount
 | 
						|
Apply bass expansion a.k.a. XBass or megabass. Range is 0 (quiet) to 100 (loud). Default is 0.
 | 
						|
 | 
						|
@item bass_range
 | 
						|
Set cutoff i.e. upper-bound for bass frequencies. Range is 10-100 Hz. Default is 0.
 | 
						|
 | 
						|
@item surround_depth
 | 
						|
Apply a Dolby Pro-Logic surround effect. Range is 0 (quiet) to 100 (heavy). Default is 0.
 | 
						|
 | 
						|
@item surround_delay
 | 
						|
Set surround delay in ms, clamped to 5-40 ms. Default is 0.
 | 
						|
 | 
						|
@item max_size
 | 
						|
The demuxer buffers the entire file into memory. Adjust this value to set the maximum buffer size,
 | 
						|
which in turn, acts as a ceiling for the size of files that can be read. Range is 0 to 100 MiB.
 | 
						|
0 removes buffer size limit (not recommended). Default is 5 MiB.
 | 
						|
 | 
						|
@item video_stream_expr
 | 
						|
String which is evaluated using the eval API to assign colors to the generated video stream.
 | 
						|
Variables which can be used are @code{x}, @code{y}, @code{w}, @code{h}, @code{t}, @code{speed},
 | 
						|
@code{tempo}, @code{order}, @code{pattern} and @code{row}.
 | 
						|
 | 
						|
@item video_stream
 | 
						|
Generate video stream. Can be 1 (on) or 0 (off). Default is 0.
 | 
						|
 | 
						|
@item video_stream_w
 | 
						|
Set video frame width in 'chars' where one char indicates 8 pixels. Range is 20-512. Default is 30.
 | 
						|
 | 
						|
@item video_stream_h
 | 
						|
Set video frame height in 'chars' where one char indicates 8 pixels. Range is 20-512. Default is 30.
 | 
						|
 | 
						|
@item video_stream_ptxt
 | 
						|
Print metadata on video stream. Includes @code{speed}, @code{tempo}, @code{order}, @code{pattern},
 | 
						|
@code{row} and @code{ts} (time in ms). Can be 1 (on) or 0 (off). Default is 1.
 | 
						|
 | 
						|
@end table
 | 
						|
 | 
						|
@section libopenmpt
 | 
						|
 | 
						|
libopenmpt based module demuxer
 | 
						|
 | 
						|
See @url{https://lib.openmpt.org/libopenmpt/} for more information.
 | 
						|
 | 
						|
Some files have multiple subsongs (tracks) this can be set with the @option{subsong}
 | 
						|
option.
 | 
						|
 | 
						|
It accepts the following options:
 | 
						|
 | 
						|
@table @option
 | 
						|
@item subsong
 | 
						|
Set the subsong index. This can be either  'all', 'auto', or the index of the
 | 
						|
subsong. Subsong indexes start at 0. The default is 'auto'.
 | 
						|
 | 
						|
The default value is to let libopenmpt choose.
 | 
						|
 | 
						|
@item layout
 | 
						|
Set the channel layout. Valid values are 1, 2, and 4 channel layouts.
 | 
						|
The default value is STEREO.
 | 
						|
 | 
						|
@item sample_rate
 | 
						|
Set the sample rate for libopenmpt to output.
 | 
						|
Range is from 1000 to INT_MAX. The value default is 48000.
 | 
						|
@end table
 | 
						|
 | 
						|
@section mov/mp4/3gp
 | 
						|
 | 
						|
Demuxer for Quicktime File Format & ISO/IEC Base Media File Format (ISO/IEC 14496-12 or MPEG-4 Part 12, ISO/IEC 15444-12 or JPEG 2000 Part 12).
 | 
						|
 | 
						|
Registered extensions: mov, mp4, m4a, 3gp, 3g2, mj2, psp, m4b, ism, ismv, isma, f4v
 | 
						|
 | 
						|
@subsection Options
 | 
						|
 | 
						|
This demuxer accepts the following options:
 | 
						|
@table @option
 | 
						|
@item enable_drefs
 | 
						|
Enable loading of external tracks, disabled by default.
 | 
						|
Enabling this can theoretically leak information in some use cases.
 | 
						|
 | 
						|
@item use_absolute_path
 | 
						|
Allows loading of external tracks via absolute paths, disabled by default.
 | 
						|
Enabling this poses a security risk. It should only be enabled if the source
 | 
						|
is known to be non-malicious.
 | 
						|
 | 
						|
@item seek_streams_individually
 | 
						|
When seeking, identify the closest point in each stream individually and demux packets in
 | 
						|
that stream from identified point. This can lead to a different sequence of packets compared
 | 
						|
to demuxing linearly from the beginning. Default is true.
 | 
						|
 | 
						|
@item ignore_editlist
 | 
						|
Ignore any edit list atoms. The demuxer, by default, modifies the stream index to reflect the
 | 
						|
timeline described by the edit list. Default is false.
 | 
						|
 | 
						|
@item advanced_editlist
 | 
						|
Modify the stream index to reflect the timeline described by the edit list. @code{ignore_editlist}
 | 
						|
must be set to false for this option to be effective.
 | 
						|
If both @code{ignore_editlist} and this option are set to false, then only the
 | 
						|
start of the stream index is modified to reflect initial dwell time or starting timestamp
 | 
						|
described by the edit list. Default is true.
 | 
						|
 | 
						|
@item ignore_chapters
 | 
						|
Don't parse chapters. This includes GoPro 'HiLight' tags/moments. Note that chapters are
 | 
						|
only parsed when input is seekable. Default is false.
 | 
						|
 | 
						|
@item use_mfra_for
 | 
						|
For seekable fragmented input, set fragment's starting timestamp from media fragment random access box, if present.
 | 
						|
 | 
						|
Following options are available:
 | 
						|
@table @samp
 | 
						|
@item auto
 | 
						|
Auto-detect whether to set mfra timestamps as PTS or DTS @emph{(default)}
 | 
						|
 | 
						|
@item dts
 | 
						|
Set mfra timestamps as DTS
 | 
						|
 | 
						|
@item pts
 | 
						|
Set mfra timestamps as PTS
 | 
						|
 | 
						|
@item 0
 | 
						|
Don't use mfra box to set timestamps
 | 
						|
@end table
 | 
						|
 | 
						|
@item export_all
 | 
						|
Export unrecognized boxes within the @var{udta} box as metadata entries. The first four
 | 
						|
characters of the box type are set as the key. Default is false.
 | 
						|
 | 
						|
@item export_xmp
 | 
						|
Export entire contents of @var{XMP_} box and @var{uuid} box as a string with key @code{xmp}. Note that
 | 
						|
if @code{export_all} is set and this option isn't, the contents of @var{XMP_} box are still exported
 | 
						|
but with key @code{XMP_}. Default is false.
 | 
						|
 | 
						|
@item activation_bytes
 | 
						|
4-byte key required to decrypt Audible AAX and AAX+ files. See Audible AAX subsection below.
 | 
						|
 | 
						|
@item audible_fixed_key
 | 
						|
Fixed key used for handling Audible AAX/AAX+ files. It has been pre-set so should not be necessary to
 | 
						|
specify.
 | 
						|
 | 
						|
@item decryption_key
 | 
						|
16-byte key, in hex, to decrypt files encrypted using ISO Common Encryption (CENC/AES-128 CTR; ISO/IEC 23001-7).
 | 
						|
@end table
 | 
						|
 | 
						|
@subsection Audible AAX
 | 
						|
 | 
						|
Audible AAX files are encrypted M4B files, and they can be decrypted by specifying a 4 byte activation secret.
 | 
						|
@example
 | 
						|
ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4
 | 
						|
@end example
 | 
						|
 | 
						|
@section mpegts
 | 
						|
 | 
						|
MPEG-2 transport stream demuxer.
 | 
						|
 | 
						|
This demuxer accepts the following options:
 | 
						|
@table @option
 | 
						|
@item resync_size
 | 
						|
Set size limit for looking up a new synchronization. Default value is
 | 
						|
65536.
 | 
						|
 | 
						|
@item skip_unknown_pmt
 | 
						|
Skip PMTs for programs not defined in the PAT. Default value is 0.
 | 
						|
 | 
						|
@item fix_teletext_pts
 | 
						|
Override teletext packet PTS and DTS values with the timestamps calculated
 | 
						|
from the PCR of the first program which the teletext stream is part of and is
 | 
						|
not discarded. Default value is 1, set this option to 0 if you want your
 | 
						|
teletext packet PTS and DTS values untouched.
 | 
						|
 | 
						|
@item ts_packetsize
 | 
						|
Output option carrying the raw packet size in bytes.
 | 
						|
Show the detected raw packet size, cannot be set by the user.
 | 
						|
 | 
						|
@item scan_all_pmts
 | 
						|
Scan and combine all PMTs. The value is an integer with value from -1
 | 
						|
to 1 (-1 means automatic setting, 1 means enabled, 0 means
 | 
						|
disabled). Default value is -1.
 | 
						|
 | 
						|
@item merge_pmt_versions
 | 
						|
Re-use existing streams when a PMT's version is updated and elementary
 | 
						|
streams move to different PIDs. Default value is 0.
 | 
						|
@end table
 | 
						|
 | 
						|
@section mpjpeg
 | 
						|
 | 
						|
MJPEG encapsulated in multi-part MIME demuxer.
 | 
						|
 | 
						|
This demuxer allows reading of MJPEG, where each frame is represented as a part of
 | 
						|
multipart/x-mixed-replace stream.
 | 
						|
@table @option
 | 
						|
 | 
						|
@item strict_mime_boundary
 | 
						|
Default implementation applies a relaxed standard to multi-part MIME boundary detection,
 | 
						|
to prevent regression with numerous existing endpoints not generating a proper MIME
 | 
						|
MJPEG stream. Turning this option on by setting it to 1 will result in a stricter check
 | 
						|
of the boundary value.
 | 
						|
@end table
 | 
						|
 | 
						|
@section rawvideo
 | 
						|
 | 
						|
Raw video demuxer.
 | 
						|
 | 
						|
This demuxer allows one to read raw video data. Since there is no header
 | 
						|
specifying the assumed video parameters, the user must specify them
 | 
						|
in order to be able to decode the data correctly.
 | 
						|
 | 
						|
This demuxer accepts the following options:
 | 
						|
@table @option
 | 
						|
 | 
						|
@item framerate
 | 
						|
Set input video frame rate. Default value is 25.
 | 
						|
 | 
						|
@item pixel_format
 | 
						|
Set the input video pixel format. Default value is @code{yuv420p}.
 | 
						|
 | 
						|
@item video_size
 | 
						|
Set the input video size. This value must be specified explicitly.
 | 
						|
@end table
 | 
						|
 | 
						|
For example to read a rawvideo file @file{input.raw} with
 | 
						|
@command{ffplay}, assuming a pixel format of @code{rgb24}, a video
 | 
						|
size of @code{320x240}, and a frame rate of 10 images per second, use
 | 
						|
the command:
 | 
						|
@example
 | 
						|
ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
 | 
						|
@end example
 | 
						|
 | 
						|
@section sbg
 | 
						|
 | 
						|
SBaGen script demuxer.
 | 
						|
 | 
						|
This demuxer reads the script language used by SBaGen
 | 
						|
@url{http://uazu.net/sbagen/} to generate binaural beats sessions. A SBG
 | 
						|
script looks like that:
 | 
						|
@example
 | 
						|
-SE
 | 
						|
a: 300-2.5/3 440+4.5/0
 | 
						|
b: 300-2.5/0 440+4.5/3
 | 
						|
off: -
 | 
						|
NOW      == a
 | 
						|
+0:07:00 == b
 | 
						|
+0:14:00 == a
 | 
						|
+0:21:00 == b
 | 
						|
+0:30:00    off
 | 
						|
@end example
 | 
						|
 | 
						|
A SBG script can mix absolute and relative timestamps. If the script uses
 | 
						|
either only absolute timestamps (including the script start time) or only
 | 
						|
relative ones, then its layout is fixed, and the conversion is
 | 
						|
straightforward. On the other hand, if the script mixes both kind of
 | 
						|
timestamps, then the @var{NOW} reference for relative timestamps will be
 | 
						|
taken from the current time of day at the time the script is read, and the
 | 
						|
script layout will be frozen according to that reference. That means that if
 | 
						|
the script is directly played, the actual times will match the absolute
 | 
						|
timestamps up to the sound controller's clock accuracy, but if the user
 | 
						|
somehow pauses the playback or seeks, all times will be shifted accordingly.
 | 
						|
 | 
						|
@section tedcaptions
 | 
						|
 | 
						|
JSON captions used for @url{http://www.ted.com/, TED Talks}.
 | 
						|
 | 
						|
TED does not provide links to the captions, but they can be guessed from the
 | 
						|
page. The file @file{tools/bookmarklets.html} from the FFmpeg source tree
 | 
						|
contains a bookmarklet to expose them.
 | 
						|
 | 
						|
This demuxer accepts the following option:
 | 
						|
@table @option
 | 
						|
@item start_time
 | 
						|
Set the start time of the TED talk, in milliseconds. The default is 15000
 | 
						|
(15s). It is used to sync the captions with the downloadable videos, because
 | 
						|
they include a 15s intro.
 | 
						|
@end table
 | 
						|
 | 
						|
Example: convert the captions to a format most players understand:
 | 
						|
@example
 | 
						|
ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
 | 
						|
@end example
 | 
						|
 | 
						|
@section vapoursynth
 | 
						|
 | 
						|
Vapoursynth wrapper.
 | 
						|
 | 
						|
Due to security concerns, Vapoursynth scripts will not
 | 
						|
be autodetected so the input format has to be forced. For ff* CLI tools,
 | 
						|
add @code{-f vapoursynth} before the input @code{-i yourscript.vpy}.
 | 
						|
 | 
						|
This demuxer accepts the following option:
 | 
						|
@table @option
 | 
						|
@item max_script_size
 | 
						|
The demuxer buffers the entire script into memory. Adjust this value to set the maximum buffer size,
 | 
						|
which in turn, acts as a ceiling for the size of scripts that can be read.
 | 
						|
Default is 1 MiB.
 | 
						|
@end table
 | 
						|
 | 
						|
@c man end DEMUXERS
 |