annotate ffmpeg/doc/demuxers.texi @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents 6840f77b83aa
children
rev   line source
yading@10 1 @chapter Demuxers
yading@10 2 @c man begin DEMUXERS
yading@10 3
yading@10 4 Demuxers are configured elements in FFmpeg which allow to read the
yading@10 5 multimedia streams from a particular type of file.
yading@10 6
yading@10 7 When you configure your FFmpeg build, all the supported demuxers
yading@10 8 are enabled by default. You can list all available ones using the
yading@10 9 configure option @code{--list-demuxers}.
yading@10 10
yading@10 11 You can disable all the demuxers using the configure option
yading@10 12 @code{--disable-demuxers}, and selectively enable a single demuxer with
yading@10 13 the option @code{--enable-demuxer=@var{DEMUXER}}, or disable it
yading@10 14 with the option @code{--disable-demuxer=@var{DEMUXER}}.
yading@10 15
yading@10 16 The option @code{-formats} of the ff* tools will display the list of
yading@10 17 enabled demuxers.
yading@10 18
yading@10 19 The description of some of the currently available demuxers follows.
yading@10 20
yading@10 21 @section applehttp
yading@10 22
yading@10 23 Apple HTTP Live Streaming demuxer.
yading@10 24
yading@10 25 This demuxer presents all AVStreams from all variant streams.
yading@10 26 The id field is set to the bitrate variant index number. By setting
yading@10 27 the discard flags on AVStreams (by pressing 'a' or 'v' in ffplay),
yading@10 28 the caller can decide which variant streams to actually receive.
yading@10 29 The total bitrate of the variant that the stream belongs to is
yading@10 30 available in a metadata key named "variant_bitrate".
yading@10 31
yading@10 32 @anchor{concat}
yading@10 33 @section concat
yading@10 34
yading@10 35 Virtual concatenation script demuxer.
yading@10 36
yading@10 37 This demuxer reads a list of files and other directives from a text file and
yading@10 38 demuxes them one after the other, as if all their packet had been muxed
yading@10 39 together.
yading@10 40
yading@10 41 The timestamps in the files are adjusted so that the first file starts at 0
yading@10 42 and each next file starts where the previous one finishes. Note that it is
yading@10 43 done globally and may cause gaps if all streams do not have exactly the same
yading@10 44 length.
yading@10 45
yading@10 46 All files must have the same streams (same codecs, same time base, etc.).
yading@10 47
yading@10 48 The duration of each file is used to adjust the timestamps of the next file:
yading@10 49 if the duration is incorrect (because it was computed using the bit-rate or
yading@10 50 because the file is truncated, for example), it can cause artifacts. The
yading@10 51 @code{duration} directive can be used to override the duration stored in
yading@10 52 each file.
yading@10 53
yading@10 54 @subsection Syntax
yading@10 55
yading@10 56 The script is a text file in extended-ASCII, with one directive per line.
yading@10 57 Empty lines, leading spaces and lines starting with '#' are ignored. The
yading@10 58 following directive is recognized:
yading@10 59
yading@10 60 @table @option
yading@10 61
yading@10 62 @item @code{file @var{path}}
yading@10 63 Path to a file to read; special characters and spaces must be escaped with
yading@10 64 backslash or single quotes.
yading@10 65
yading@10 66 All subsequent directives apply to that file.
yading@10 67
yading@10 68 @item @code{ffconcat version 1.0}
yading@10 69 Identify the script type and version. It also sets the @option{safe} option
yading@10 70 to 1 if it was to its default -1.
yading@10 71
yading@10 72 To make FFmpeg recognize the format automatically, this directive must
yading@10 73 appears exactly as is (no extra space or byte-order-mark) on the very first
yading@10 74 line of the script.
yading@10 75
yading@10 76 @item @code{duration @var{dur}}
yading@10 77 Duration of the file. This information can be specified from the file;
yading@10 78 specifying it here may be more efficient or help if the information from the
yading@10 79 file is not available or accurate.
yading@10 80
yading@10 81 If the duration is set for all files, then it is possible to seek in the
yading@10 82 whole concatenated video.
yading@10 83
yading@10 84 @end table
yading@10 85
yading@10 86 @subsection Options
yading@10 87
yading@10 88 This demuxer accepts the following option:
yading@10 89
yading@10 90 @table @option
yading@10 91
yading@10 92 @item safe
yading@10 93 If set to 1, reject unsafe file paths. A file path is considered safe if it
yading@10 94 does not contain a protocol specification and is relative and all components
yading@10 95 only contain characters from the portable character set (letters, digits,
yading@10 96 period, underscore and hyphen) and have no period at the beginning of a
yading@10 97 component.
yading@10 98
yading@10 99 If set to 0, any file name is accepted.
yading@10 100
yading@10 101 The default is -1, it is equivalent to 1 if the format was automatically
yading@10 102 probed and 0 otherwise.
yading@10 103
yading@10 104 @end table
yading@10 105
yading@10 106 @section libquvi
yading@10 107
yading@10 108 Play media from Internet services using the quvi project.
yading@10 109
yading@10 110 The demuxer accepts a @option{format} option to request a specific quality. It
yading@10 111 is by default set to @var{best}.
yading@10 112
yading@10 113 See @url{http://quvi.sourceforge.net/} for more information.
yading@10 114
yading@10 115 FFmpeg needs to be built with @code{--enable-libquvi} for this demuxer to be
yading@10 116 enabled.
yading@10 117
yading@10 118 @section image2
yading@10 119
yading@10 120 Image file demuxer.
yading@10 121
yading@10 122 This demuxer reads from a list of image files specified by a pattern.
yading@10 123 The syntax and meaning of the pattern is specified by the
yading@10 124 option @var{pattern_type}.
yading@10 125
yading@10 126 The pattern may contain a suffix which is used to automatically
yading@10 127 determine the format of the images contained in the files.
yading@10 128
yading@10 129 The size, the pixel format, and the format of each image must be the
yading@10 130 same for all the files in the sequence.
yading@10 131
yading@10 132 This demuxer accepts the following options:
yading@10 133 @table @option
yading@10 134 @item framerate
yading@10 135 Set the frame rate for the video stream. It defaults to 25.
yading@10 136 @item loop
yading@10 137 If set to 1, loop over the input. Default value is 0.
yading@10 138 @item pattern_type
yading@10 139 Select the pattern type used to interpret the provided filename.
yading@10 140
yading@10 141 @var{pattern_type} accepts one of the following values.
yading@10 142 @table @option
yading@10 143 @item sequence
yading@10 144 Select a sequence pattern type, used to specify a sequence of files
yading@10 145 indexed by sequential numbers.
yading@10 146
yading@10 147 A sequence pattern may contain the string "%d" or "%0@var{N}d", which
yading@10 148 specifies the position of the characters representing a sequential
yading@10 149 number in each filename matched by the pattern. If the form
yading@10 150 "%d0@var{N}d" is used, the string representing the number in each
yading@10 151 filename is 0-padded and @var{N} is the total number of 0-padded
yading@10 152 digits representing the number. The literal character '%' can be
yading@10 153 specified in the pattern with the string "%%".
yading@10 154
yading@10 155 If the sequence pattern contains "%d" or "%0@var{N}d", the first filename of
yading@10 156 the file list specified by the pattern must contain a number
yading@10 157 inclusively contained between @var{start_number} and
yading@10 158 @var{start_number}+@var{start_number_range}-1, and all the following
yading@10 159 numbers must be sequential.
yading@10 160
yading@10 161 For example the pattern "img-%03d.bmp" will match a sequence of
yading@10 162 filenames of the form @file{img-001.bmp}, @file{img-002.bmp}, ...,
yading@10 163 @file{img-010.bmp}, etc.; the pattern "i%%m%%g-%d.jpg" will match a
yading@10 164 sequence of filenames of the form @file{i%m%g-1.jpg},
yading@10 165 @file{i%m%g-2.jpg}, ..., @file{i%m%g-10.jpg}, etc.
yading@10 166
yading@10 167 Note that the pattern must not necessarily contain "%d" or
yading@10 168 "%0@var{N}d", for example to convert a single image file
yading@10 169 @file{img.jpeg} you can employ the command:
yading@10 170 @example
yading@10 171 ffmpeg -i img.jpeg img.png
yading@10 172 @end example
yading@10 173
yading@10 174 @item glob
yading@10 175 Select a glob wildcard pattern type.
yading@10 176
yading@10 177 The pattern is interpreted like a @code{glob()} pattern. This is only
yading@10 178 selectable if libavformat was compiled with globbing support.
yading@10 179
yading@10 180 @item glob_sequence @emph{(deprecated, will be removed)}
yading@10 181 Select a mixed glob wildcard/sequence pattern.
yading@10 182
yading@10 183 If your version of libavformat was compiled with globbing support, and
yading@10 184 the provided pattern contains at least one glob meta character among
yading@10 185 @code{%*?[]@{@}} that is preceded by an unescaped "%", the pattern is
yading@10 186 interpreted like a @code{glob()} pattern, otherwise it is interpreted
yading@10 187 like a sequence pattern.
yading@10 188
yading@10 189 All glob special characters @code{%*?[]@{@}} must be prefixed
yading@10 190 with "%". To escape a literal "%" you shall use "%%".
yading@10 191
yading@10 192 For example the pattern @code{foo-%*.jpeg} will match all the
yading@10 193 filenames prefixed by "foo-" and terminating with ".jpeg", and
yading@10 194 @code{foo-%?%?%?.jpeg} will match all the filenames prefixed with
yading@10 195 "foo-", followed by a sequence of three characters, and terminating
yading@10 196 with ".jpeg".
yading@10 197
yading@10 198 This pattern type is deprecated in favor of @var{glob} and
yading@10 199 @var{sequence}.
yading@10 200 @end table
yading@10 201
yading@10 202 Default value is @var{glob_sequence}.
yading@10 203 @item pixel_format
yading@10 204 Set the pixel format of the images to read. If not specified the pixel
yading@10 205 format is guessed from the first image file in the sequence.
yading@10 206 @item start_number
yading@10 207 Set the index of the file matched by the image file pattern to start
yading@10 208 to read from. Default value is 0.
yading@10 209 @item start_number_range
yading@10 210 Set the index interval range to check when looking for the first image
yading@10 211 file in the sequence, starting from @var{start_number}. Default value
yading@10 212 is 5.
yading@10 213 @item video_size
yading@10 214 Set the video size of the images to read. If not specified the video
yading@10 215 size is guessed from the first image file in the sequence.
yading@10 216 @end table
yading@10 217
yading@10 218 @subsection Examples
yading@10 219
yading@10 220 @itemize
yading@10 221 @item
yading@10 222 Use @command{ffmpeg} for creating a video from the images in the file
yading@10 223 sequence @file{img-001.jpeg}, @file{img-002.jpeg}, ..., assuming an
yading@10 224 input frame rate of 10 frames per second:
yading@10 225 @example
yading@10 226 ffmpeg -i 'img-%03d.jpeg' -r 10 out.mkv
yading@10 227 @end example
yading@10 228
yading@10 229 @item
yading@10 230 As above, but start by reading from a file with index 100 in the sequence:
yading@10 231 @example
yading@10 232 ffmpeg -start_number 100 -i 'img-%03d.jpeg' -r 10 out.mkv
yading@10 233 @end example
yading@10 234
yading@10 235 @item
yading@10 236 Read images matching the "*.png" glob pattern , that is all the files
yading@10 237 terminating with the ".png" suffix:
yading@10 238 @example
yading@10 239 ffmpeg -pattern_type glob -i "*.png" -r 10 out.mkv
yading@10 240 @end example
yading@10 241 @end itemize
yading@10 242
yading@10 243 @section rawvideo
yading@10 244
yading@10 245 Raw video demuxer.
yading@10 246
yading@10 247 This demuxer allows to read raw video data. Since there is no header
yading@10 248 specifying the assumed video parameters, the user must specify them
yading@10 249 in order to be able to decode the data correctly.
yading@10 250
yading@10 251 This demuxer accepts the following options:
yading@10 252 @table @option
yading@10 253
yading@10 254 @item framerate
yading@10 255 Set input video frame rate. Default value is 25.
yading@10 256
yading@10 257 @item pixel_format
yading@10 258 Set the input video pixel format. Default value is @code{yuv420p}.
yading@10 259
yading@10 260 @item video_size
yading@10 261 Set the input video size. This value must be specified explicitly.
yading@10 262 @end table
yading@10 263
yading@10 264 For example to read a rawvideo file @file{input.raw} with
yading@10 265 @command{ffplay}, assuming a pixel format of @code{rgb24}, a video
yading@10 266 size of @code{320x240}, and a frame rate of 10 images per second, use
yading@10 267 the command:
yading@10 268 @example
yading@10 269 ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
yading@10 270 @end example
yading@10 271
yading@10 272 @section sbg
yading@10 273
yading@10 274 SBaGen script demuxer.
yading@10 275
yading@10 276 This demuxer reads the script language used by SBaGen
yading@10 277 @url{http://uazu.net/sbagen/} to generate binaural beats sessions. A SBG
yading@10 278 script looks like that:
yading@10 279 @example
yading@10 280 -SE
yading@10 281 a: 300-2.5/3 440+4.5/0
yading@10 282 b: 300-2.5/0 440+4.5/3
yading@10 283 off: -
yading@10 284 NOW == a
yading@10 285 +0:07:00 == b
yading@10 286 +0:14:00 == a
yading@10 287 +0:21:00 == b
yading@10 288 +0:30:00 off
yading@10 289 @end example
yading@10 290
yading@10 291 A SBG script can mix absolute and relative timestamps. If the script uses
yading@10 292 either only absolute timestamps (including the script start time) or only
yading@10 293 relative ones, then its layout is fixed, and the conversion is
yading@10 294 straightforward. On the other hand, if the script mixes both kind of
yading@10 295 timestamps, then the @var{NOW} reference for relative timestamps will be
yading@10 296 taken from the current time of day at the time the script is read, and the
yading@10 297 script layout will be frozen according to that reference. That means that if
yading@10 298 the script is directly played, the actual times will match the absolute
yading@10 299 timestamps up to the sound controller's clock accuracy, but if the user
yading@10 300 somehow pauses the playback or seeks, all times will be shifted accordingly.
yading@10 301
yading@10 302 @section tedcaptions
yading@10 303
yading@10 304 JSON captions used for @url{http://www.ted.com/, TED Talks}.
yading@10 305
yading@10 306 TED does not provide links to the captions, but they can be guessed from the
yading@10 307 page. The file @file{tools/bookmarklets.html} from the FFmpeg source tree
yading@10 308 contains a bookmarklet to expose them.
yading@10 309
yading@10 310 This demuxer accepts the following option:
yading@10 311 @table @option
yading@10 312 @item start_time
yading@10 313 Set the start time of the TED talk, in milliseconds. The default is 15000
yading@10 314 (15s). It is used to sync the captions with the downloadable videos, because
yading@10 315 they include a 15s intro.
yading@10 316 @end table
yading@10 317
yading@10 318 Example: convert the captions to a format most players understand:
yading@10 319 @example
yading@10 320 ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
yading@10 321 @end example
yading@10 322
yading@10 323 @c man end DEMUXERS