X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=doc%2Fffmpeg.texi;h=553d759ba2d28210ff4420856f3b3753149608d3;hb=616eaea8ad0becdeeb75a783e8924a1aa12309ec;hp=f6ca7dce1282df08ccce5b637ed3f816ef568b82;hpb=ec8a3e25d8cfed9f8f335b88d8162ae331b68df9;p=ffmpeg diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index f6ca7dce128..553d759ba2d 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -26,6 +26,23 @@ ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter. +ffmpeg reads from an arbitrary number of input "files" (which can be regular +files, pipes, network streams, grabbing devices, etc.), specified by the +@code{-i} option, and writes to an arbitrary number of output "files", which are +specified by a plain output filename. Anything found on the commandline which +cannot be interpreted as an option is considered to be an output filename. + +Each input or output file can in principle contain any number of streams of +different types (video/audio/subtitle/attachment/data). Allowed number and/or +types of streams can be limited by the container format. Selecting, which +streams from which inputs go into output, is done either automatically or with +the @code{-map} option (see the Stream selection chapter). + +To refer to input files in options, you must use their indices (0-based). E.g. +the first input file is @code{0}, the second is @code{1} etc. Similarly, streams +within a file are referred to by their indices. E.g. @code{2:3} refers to the +fourth stream in the third input file. See also the Stream specifiers chapter. + As a general rule, options are applied to the next specified file. Therefore, order is important, and you can have the same option on the command line multiple times. Each occurrence is @@ -33,6 +50,10 @@ then applied to the next input or output file. Exceptions from this rule are the global options (e.g. verbosity level), which should be specified first. +Do not mix input and output files -- first specify all input files, then all +output files. Also do not mix options which belong to different files. All +options apply ONLY to the next input or output file and are reset between files. + @itemize @item To set the video bitrate of the output file to 64kbit/s: @@ -171,10 +192,6 @@ To set the language of the second stream: ffmpeg -i INPUT -metadata:s:1 language=eng OUTPUT @end example -@item -v @var{number} (@emph{global}) -This option is deprecated and has no effect, use -loglevel -to set verbosity level. - @item -target @var{type} (@emph{output}) Specify target file type (@code{vcd}, @code{svcd}, @code{dvd}, @code{dv}, @code{dv50}). @var{type} may be prefixed with @code{pal-}, @code{ntsc-} or @@ -203,10 +220,48 @@ Stop writing to the stream after @var{framecount} frames. Use fixed quality scale (VBR). The meaning of @var{q} is codec-dependent. -@item -filter[:@var{stream_specifier}] @var{filter_graph} +@item -filter[:@var{stream_specifier}] @var{filter_graph} (@emph{output,per-stream}) @var{filter_graph} is a description of the filter graph to apply to the stream. Use @code{-filters} to show all the available filters (including also sources and sinks). +@item -pre[:@var{stream_specifier}] @var{preset_name} (@emph{output,per-stream}) +Specify the preset for matching stream(s). + +@item -stats (@emph{global}) +Print encoding progress/statistics. On by default. + +@item -attach @var{filename} (@emph{output}) +Add an attachment to the output file. This is supported by a few formats +like Matroska for e.g. fonts used in rendering subtitles. Attachments +are implemented as a specific type of stream, so this option will add +a new stream to the file. It is then possible to use per-stream options +on this stream in the usual way. Attachment streams created with this +option will be created after all the other streams (i.e. those created +with @code{-map} or automatic mappings). + +Note that for Matroska you also have to set the mimetype metadata tag: +@example +ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv +@end example +(assuming that the attachment stream will be third in the output file). + +@item -dump_attachment[:@var{stream_specifier}] @var{filename} (@emph{input,per-stream}) +Extract the matching attachment stream into a file named @var{filename}. If +@var{filename} is empty, then the value of the @code{filename} metadata tag +will be used. + +E.g. to extract the first attachment to a file named 'out.ttf': +@example +ffmpeg -dump_attachment:t:0 out.ttf INPUT +@end example +To extract all attachments to files determined by the @code{filename} tag: +@example +ffmpeg -dump_attachment:t "" INPUT +@end example + +Technical note -- attachments are implemented as codec extradata, so this +option can actually be used to extract extradata from any stream, not just +attachments. @end table @@ -218,7 +273,7 @@ Set the number of video frames to record. This is an alias for @code{-frames:v}. @item -r[:@var{stream_specifier}] @var{fps} (@emph{input/output,per-stream}) Set frame rate (Hz value, fraction or abbreviation), (default = 25). @item -s[:@var{stream_specifier}] @var{size} (@emph{input/output,per-stream}) -Set frame size. The format is @samp{wxh} (ffserver default = 160x128, ffmpeg default = same as source). +Set frame size. The format is @samp{wxh} (default - same as source). The following abbreviations are recognized: @table @samp @item sqcif @@ -593,6 +648,10 @@ frames after each specified time. This option can be useful to ensure that a seek point is present at a chapter mark or any other designated place in the output file. The timestamps must be specified in ascending order. + +@item -copyinkf[:@var{stream_specifier}] (@emph{output,per-stream}) +When doing stream copy, copy also non-key frames found at the +beginning. @end table @section Audio Options @@ -617,7 +676,7 @@ Disable audio recording. @item -acodec @var{codec} (@emph{input/output}) Set the audio codec. This is an alias for @code{-codec:a}. @item -sample_fmt[:@var{stream_specifier}] @var{sample_fmt} (@emph{output,per-stream}) -Set the audio sample format. Use @code{-help sample_fmts} to get a list +Set the audio sample format. Use @code{-sample_fmts} to get a list of supported sample formats. @end table @@ -995,6 +1054,21 @@ quality). @chapter Examples @c man begin EXAMPLES +@section Preset files + +A preset file contains a sequence of @var{option=value} pairs, one for +each line, specifying a sequence of options which can be specified also on +the command line. Lines starting with the hash ('#') character are ignored and +are used to provide comments. Empty lines are also ignored. Check the +@file{presets} directory in the FFmpeg source tree for examples. + +Preset files are specified with the @code{pre} option, this option takes a +preset name as input. FFmpeg searches for a file named @var{preset_name}.avpreset in +the directories @file{$AVCONV_DATADIR} (if set), and @file{$HOME/.ffmpeg}, and in +the data directory defined at configuration time (usually @file{$PREFIX/share/ffmpeg}) +in that order. For example, if the argument is @code{libx264-max}, it will +search for the file @file{libx264-max.avpreset}. + @section Video and Audio grabbing If you specify the input format and device then ffmpeg can grab video