| @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 |