2011-01-09 10:22:21 +00:00
|
|
|
@chapter Demuxers
|
|
|
|
@c man begin DEMUXERS
|
|
|
|
|
2011-03-17 15:55:58 +00:00
|
|
|
Demuxers are configured elements in FFmpeg which allow to read the
|
2011-01-09 10:22:21 +00:00
|
|
|
multimedia streams from a particular type of file.
|
|
|
|
|
2011-03-17 15:55:58 +00:00
|
|
|
When you configure your FFmpeg build, all the supported demuxers
|
2011-01-09 10:22:21 +00:00
|
|
|
are enabled by default. You can list all available ones using the
|
|
|
|
configure option "--list-demuxers".
|
|
|
|
|
|
|
|
You can disable all the demuxers using the configure option
|
|
|
|
"--disable-demuxers", and selectively enable a single demuxer with
|
|
|
|
the option "--enable-demuxer=@var{DEMUXER}", or disable it
|
|
|
|
with the option "--disable-demuxer=@var{DEMUXER}".
|
|
|
|
|
|
|
|
The option "-formats" of the ff* tools will display the list of
|
|
|
|
enabled demuxers.
|
|
|
|
|
|
|
|
The description of some of the currently available demuxers follows.
|
|
|
|
|
2011-01-09 10:22:23 +00:00
|
|
|
@section image2
|
|
|
|
|
|
|
|
Image file demuxer.
|
|
|
|
|
|
|
|
This demuxer reads from a list of image files specified by a pattern.
|
|
|
|
|
2011-01-21 12:54:14 +00:00
|
|
|
The pattern may contain the string "%d" or "%0@var{N}d", which
|
|
|
|
specifies the position of the characters representing a sequential
|
2011-01-09 10:22:23 +00:00
|
|
|
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 "%%".
|
|
|
|
|
2011-01-21 12:54:14 +00:00
|
|
|
If the pattern contains "%d" or "%0@var{N}d", the first filename of
|
|
|
|
the file list specified by the pattern must contain a number
|
2012-08-04 11:04:40 +00:00
|
|
|
inclusively contained between @var{start_number} and
|
|
|
|
@var{start_number}+4, all the following numbers must be
|
|
|
|
sequential.
|
2011-01-09 10:22:23 +00:00
|
|
|
|
|
|
|
The pattern may contain a suffix which is used to automatically
|
|
|
|
determine the format of the images contained in the files.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
The size, the pixel format, and the format of each image must be the
|
|
|
|
same for all the files in the sequence.
|
|
|
|
|
2012-08-04 11:04:40 +00:00
|
|
|
This demuxer accepts the following options:
|
|
|
|
@table @option
|
|
|
|
@item framerate
|
|
|
|
Set the framerate for the video stream. It defaults to 25.
|
|
|
|
@item loop
|
|
|
|
If set to 1, loop over the input. Default value is 0.
|
|
|
|
@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 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.
|
|
|
|
@end table
|
|
|
|
|
2011-12-10 00:25:15 +00:00
|
|
|
The following example shows how to use @command{ffmpeg} for creating a
|
2011-01-09 10:22:23 +00:00
|
|
|
video from the images in the file sequence @file{img-001.jpeg},
|
2011-11-29 16:54:49 +00:00
|
|
|
@file{img-002.jpeg}, ..., assuming an input frame rate of 10 frames per
|
2011-01-09 10:22:23 +00:00
|
|
|
second:
|
|
|
|
@example
|
2011-12-10 00:25:15 +00:00
|
|
|
ffmpeg -i 'img-%03d.jpeg' -r 10 out.mkv
|
2011-01-09 10:22:23 +00:00
|
|
|
@end example
|
|
|
|
|
2012-08-04 11:04:40 +00:00
|
|
|
As above, but start by reading from a file with index 100 in the sequence:
|
|
|
|
@example
|
|
|
|
ffmpeg -start_number 100 -i 'img-%03d.jpeg' -r 10 out.mkv
|
|
|
|
@end example
|
|
|
|
|
2011-01-21 12:54:14 +00:00
|
|
|
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
|
2011-12-10 00:25:15 +00:00
|
|
|
ffmpeg -i img.jpeg img.png
|
2011-01-21 12:54:14 +00:00
|
|
|
@end example
|
|
|
|
|
2011-04-20 20:04:31 +00:00
|
|
|
@section applehttp
|
|
|
|
|
|
|
|
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.
|
2011-04-20 07:10:10 +00:00
|
|
|
The total bitrate of the variant that the stream belongs to is
|
|
|
|
available in a metadata key named "variant_bitrate".
|
2011-04-20 20:04:31 +00:00
|
|
|
|
2011-11-02 15:30:27 +00:00
|
|
|
@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.
|
|
|
|
|
2011-01-09 10:22:21 +00:00
|
|
|
@c man end INPUT DEVICES
|