123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931 |
- @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 aac
- Raw Audio Data Transport Stream AAC demuxer.
- This demuxer is used to demux an ADTS input containing a single AAC stream
- alongwith any ID3v1/2 or APE tags in it.
- @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. Default is enabled.
- @item -max_fps @var{int}
- Maximum framerate in frames per second. Default of 0 imposes 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). Default is 15.
- @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.
- 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.
- This directive is deprecated, use @code{file_packet_meta} instead.
- @item @code{file_packet_meta @var{key} @var{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{option @var{key} @var{value}}
- Option to access, open and probe the file.
- Can be present multiple times.
- @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.
- @item @code{stream_meta @var{key} @var{value}}
- Metadata for the stream.
- Can be present multiple times.
- @item @code{stream_codec @var{value}}
- Codec for the stream.
- @item @code{stream_extradata @var{hex_string}}
- Extradata for the string, encoded in hexadecimal.
- @item @code{chapter @var{id} @var{start} @var{end}}
- Add a chapter. @var{id} is an unique identifier, possibly small and
- consecutive.
- @end table
- @subsection Options
- This demuxer accepts the following option:
- @table @option
- @item safe
- If set to 1, reject unsafe file paths and directives.
- 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.
- @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.
- @subsection Options
- This demuxer accepts the following option:
- @table @option
- @item cenc_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
- @section ea
- Electronic Arts Multimedia format demuxer.
- This format is used by various Electronic Arts games.
- @subsection Options
- @table @option
- @item merge_alpha @var{bool}
- Normally the VP6 alpha channel (if exists) is returned as a secondary video
- stream, by setting this option you can make the demuxer return a single video
- stream which contains the alpha channel in addition to the ordinary video.
- @end table
- @section imf
- Interoperable Master Format demuxer.
- This demuxer presents audio and video streams found in an IMF Composition.
- @section flv, live_flv, kux
- 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.
- KUX is a flv variant used on the Youku platform.
- @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 prefer_x_start
- prefer to use #EXT-X-START if it's in playlist instead of live_start_index.
- @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.
- @item seg_format_options
- Set options for the demuxer of media segments using a list of key=value pairs separated by @code{:}.
- @item seg_max_retry
- Maximum number of times to reload a segment on error, useful when segment skip on network error is not desired.
- Default value is 0.
- @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 use_tfdt
- For fragmented input, set fragment's starting timestamp to @code{baseMediaDecodeTime} from the @code{tfdt} box.
- Default is enabled, which will prefer to use the @code{tfdt} box to set DTS. Disable to use the @code{earliest_presentation_time} from the @code{sidx} box.
- In either case, the timestamp from the @code{mfra} box will be used if it's available and @code{use_mfra_for} is
- set to pts or dts.
- @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).
- @item max_stts_delta
- Very high sample deltas written in a trak's stts box may occasionally be intended but usually they are written in
- error or used to store a negative value for dts correction when treated as signed 32-bit integers. This option lets
- the user set an upper limit, beyond which the delta is clamped to 1. Values greater than the limit if negative when
- cast to int32 are used to adjust onward dts.
- Unit is the track time scale. Range is 0 to UINT_MAX. Default is @code{UINT_MAX - 48000*10} which allows upto
- a 10 second dts correction for 48 kHz audio streams while accommodating 99.9% of @code{uint32} range.
- @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.
- @item max_packet_size
- Set maximum size, in bytes, of packet emitted by the demuxer. Payloads above this size
- are split across multiple packets. Range is 1 to INT_MAX/2. Default is 204800 bytes.
- @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
|