the following diagram:
@example
- _______ ______________ _________ ______________ ________
-| | | | | | | | | |
-| input | demuxer | encoded data | decoder | decoded | encoder | encoded data | muxer | output |
-| file | ---------> | packets | ---------> | frames | ---------> | packets | -------> | file |
-|_______| |______________| |_________| |______________| |________|
+ _______ ______________
+| | | |
+| input | demuxer | encoded data | decoder
+| file | ---------> | packets | -----+
+|_______| |______________| |
+ v
+ _________
+ | |
+ | decoded |
+ | frames |
+ |_________|
+ ________ ______________ |
+| | | | |
+| output | <-------- | encoded data | <----+
+| file | muxer | packets | encoder
+|________| |______________|
+
@end example
an additional step between decoding and encoding:
@example
- _________ __________ ______________
-| | | | | |
-| decoded | simple filtergraph | filtered | encoder | encoded data |
-| frames | -------------------> | frames | ---------> | packets |
-|_________| |__________| |______________|
+ _________ ______________
+| | | |
+| decoded | | encoded data |
+| frames |\ /| packets |
+|_________| \ / |______________|
+ \ __________ /
+ simple \ | | / encoder
+ filtergraph \| filtered |/
+ | frames |
+ |__________|
@end example
A simple filtergraph for video can look for example like this:
@example
- _______ _____________ _______ _____ ________
-| | | | | | | | | |
-| input | ---> | deinterlace | ---> | scale | ---> | fps | ---> | output |
-|_______| |_____________| |_______| |_____| |________|
+ _______ _____________ _______ ________
+| | | | | | | |
+| input | ---> | deinterlace | ---> | scale | ---> | output |
+|_______| |_____________| |_______| |________|
@end example
option can actually be used to extract extradata from any stream, not just
attachments.
+@item -noautorotate
+Disable automatically rotating video based on file metadata.
+
@end table
@section Video Options
@item -copyinkf[:@var{stream_specifier}] (@emph{output,per-stream})
When doing stream copy, copy also non-key frames found at the
beginning.
+
+@item -hwaccel[:@var{stream_specifier}] @var{hwaccel} (@emph{input,per-stream})
+Use hardware acceleration to decode the matching stream(s). The allowed values
+of @var{hwaccel} are:
+@table @option
+@item none
+Do not use any hardware acceleration (the default).
+
+@item auto
+Automatically select the hardware acceleration method.
+
+@item vda
+Use Apple VDA hardware acceleration.
+
+@item vdpau
+Use VDPAU (Video Decode and Presentation API for Unix) hardware acceleration.
+
+@item dxva2
+Use DXVA2 (DirectX Video Acceleration) hardware acceleration.
+@end table
+
+This option has no effect if the selected hwaccel is not available or not
+supported by the chosen decoder.
+
+Note that most acceleration methods are intended for playback and will not be
+faster than software decoding on modern CPUs. Additionally, @command{avconv}
+will usually need to copy the decoded frames from the GPU memory into the system
+memory, resulting in further performance loss. This option is thus mainly
+useful for testing.
+
+@item -hwaccel_device[:@var{stream_specifier}] @var{hwaccel_device} (@emph{input,per-stream})
+Select a device to use for hardware acceleration.
+
+This option only makes sense when the @option{-hwaccel} option is also
+specified. Its exact meaning depends on the specific hardware acceleration
+method chosen.
+
+@table @option
+@item vdpau
+For VDPAU, this option specifies the X11 display/screen to use. If this option
+is not specified, the value of the @var{DISPLAY} environment variable is used
+
+@item dxva2
+For DXVA2, this option should contain the number of the display adapter to use.
+If this option is not specified, the default adapter is used.
+@end table
@end table
@section Audio Options
avconv -i INPUT -map 0 -map -0:a:1 OUTPUT
@end example
+To pick the English audio stream:
+@example
+avconv -i INPUT -map 0:m:language:eng OUTPUT
+@end example
+
Note that using this option disables the default mappings for this output file.
@item -map_metadata[:@var{metadata_spec_out}] @var{infile}[:@var{metadata_spec_in}] (@emph{output,per-metadata})
@item -hex (@emph{global})
When dumping packets, also dump the payload.
@item -re (@emph{input})
-Read input at native frame rate. Mainly used to simulate a grab device.
+Read input at native frame rate. Mainly used to simulate a grab device
+or live input stream (e.g. when reading from a file). Should not be used
+with actual grab devices or live input streams (where it can cause packet
+loss).
@item -vsync @var{parameter}
Video sync method.
avconv -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt
@end example
-@item -tag[:@var{stream_specifier}] @var{codec_tag} (@emph{output,per-stream})
+@item -tag[:@var{stream_specifier}] @var{codec_tag} (@emph{input/output,per-stream})
Force a tag/fourcc for matching streams.
-@item -cpuflags mask (@emph{global})
-Set a mask that's applied to autodetected CPU flags. This option is intended
-for testing. Do not use it unless you know what you're doing.
-
@item -filter_complex @var{filtergraph} (@emph{global})
Define a complex filter graph, i.e. one with arbitrary number of inputs and/or
outputs. For simple graphs -- those with one input and one output of the same
You can put many streams of the same type in the output:
@example
-avconv -i test1.avi -i test2.avi -map 0.3 -map 0.2 -map 0.1 -map 0.0 -c copy test12.nut
+avconv -i test1.avi -i test2.avi -map 1:1 -map 1:0 -map 0:1 -map 0:0 -c copy -y test12.nut
@end example
-The resulting output file @file{test12.avi} will contain first four streams from
-the input file in reverse order.
+The resulting output file @file{test12.nut} will contain the first four streams
+from the input files in reverse order.
@item
To force CBR video output:
@c man end EXAMPLES
@include eval.texi
+@include decoders.texi
@include encoders.texi
@include demuxers.texi
@include muxers.texi