Commit | Line | Data |
---|---|---|
6291d7e4 AK |
1 | \input texinfo @c -*- texinfo -*- |
2 | ||
3 | @settitle avconv Documentation | |
4 | @titlepage | |
5 | @center @titlefont{avconv Documentation} | |
6 | @end titlepage | |
7 | ||
8 | @top | |
9 | ||
10 | @contents | |
11 | ||
12 | @chapter Synopsis | |
13 | ||
14 | The generic syntax is: | |
15 | ||
16 | @example | |
17 | @c man begin SYNOPSIS | |
eb054463 | 18 | avconv [global options] [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}... |
6291d7e4 AK |
19 | @c man end |
20 | @end example | |
21 | ||
22 | @chapter Description | |
23 | @c man begin DESCRIPTION | |
24 | ||
25 | avconv is a very fast video and audio converter that can also grab from | |
26 | a live audio/video source. It can also convert between arbitrary sample | |
27 | rates and resize video on the fly with a high quality polyphase filter. | |
28 | ||
d9b49e72 AK |
29 | avconv reads from an arbitrary number of input "files" (which can be regular |
30 | files, pipes, network streams, grabbing devices, etc.), specified by the | |
31 | @code{-i} option, and writes to an arbitrary number of output "files", which are | |
da9cea77 | 32 | specified by a plain output filename. Anything found on the command line which |
d9b49e72 AK |
33 | cannot be interpreted as an option is considered to be an output filename. |
34 | ||
35 | Each input or output file can in principle contain any number of streams of | |
36 | different types (video/audio/subtitle/attachment/data). Allowed number and/or | |
37 | types of streams can be limited by the container format. Selecting, which | |
38 | streams from which inputs go into output, is done either automatically or with | |
39 | the @code{-map} option (see the Stream selection chapter). | |
40 | ||
41 | To refer to input files in options, you must use their indices (0-based). E.g. | |
42 | the first input file is @code{0}, the second is @code{1} etc. Similarly, streams | |
43 | within a file are referred to by their indices. E.g. @code{2:3} refers to the | |
44 | fourth stream in the third input file. See also the Stream specifiers chapter. | |
45 | ||
6291d7e4 AK |
46 | As a general rule, options are applied to the next specified |
47 | file. Therefore, order is important, and you can have the same | |
48 | option on the command line multiple times. Each occurrence is | |
49 | then applied to the next input or output file. | |
57650c70 | 50 | Exceptions from this rule are the global options (e.g. verbosity level), |
eb054463 | 51 | which should be specified first. |
6291d7e4 | 52 | |
d9b49e72 AK |
53 | Do not mix input and output files -- first specify all input files, then all |
54 | output files. Also do not mix options which belong to different files. All | |
55 | options apply ONLY to the next input or output file and are reset between files. | |
56 | ||
6291d7e4 AK |
57 | @itemize |
58 | @item | |
59 | To set the video bitrate of the output file to 64kbit/s: | |
60 | @example | |
61 | avconv -i input.avi -b 64k output.avi | |
62 | @end example | |
63 | ||
64 | @item | |
65 | To force the frame rate of the output file to 24 fps: | |
66 | @example | |
67 | avconv -i input.avi -r 24 output.avi | |
68 | @end example | |
69 | ||
70 | @item | |
71 | To force the frame rate of the input file (valid for raw formats only) | |
72 | to 1 fps and the frame rate of the output file to 24 fps: | |
73 | @example | |
74 | avconv -r 1 -i input.m2v -r 24 output.avi | |
75 | @end example | |
76 | @end itemize | |
77 | ||
78 | The format option may be needed for raw input files. | |
79 | ||
6291d7e4 AK |
80 | @c man end DESCRIPTION |
81 | ||
2b1f105f AK |
82 | @chapter Detailed description |
83 | @c man begin DETAILED DESCRIPTION | |
84 | ||
85 | The transcoding process in @command{avconv} for each output can be described by | |
86 | the following diagram: | |
87 | ||
88 | @example | |
3a5a9654 TG |
89 | _______ ______________ |
90 | | | | | | |
91 | | input | demuxer | encoded data | decoder | |
92 | | file | ---------> | packets | -----+ | |
93 | |_______| |______________| | | |
94 | v | |
95 | _________ | |
96 | | | | |
97 | | decoded | | |
98 | | frames | | |
99 | |_________| | |
100 | ________ ______________ | | |
101 | | | | | | | |
102 | | output | <-------- | encoded data | <----+ | |
103 | | file | muxer | packets | encoder | |
104 | |________| |______________| | |
105 | ||
2b1f105f AK |
106 | |
107 | @end example | |
108 | ||
109 | @command{avconv} calls the libavformat library (containing demuxers) to read | |
110 | input files and get packets containing encoded data from them. When there are | |
111 | multiple input files, @command{avconv} tries to keep them synchronized by | |
112 | tracking lowest timestamp on any active input stream. | |
113 | ||
114 | Encoded packets are then passed to the decoder (unless streamcopy is selected | |
115 | for the stream, see further for a description). The decoder produces | |
116 | uncompressed frames (raw video/PCM audio/...) which can be processed further by | |
117 | filtering (see next section). After filtering the frames are passed to the | |
118 | encoder, which encodes them and outputs encoded packets again. Finally those are | |
119 | passed to the muxer, which writes the encoded packets to the output file. | |
120 | ||
121 | @section Filtering | |
122 | Before encoding, @command{avconv} can process raw audio and video frames using | |
123 | filters from the libavfilter library. Several chained filters form a filter | |
124 | graph. @command{avconv} distinguishes between two types of filtergraphs - | |
125 | simple and complex. | |
126 | ||
127 | @subsection Simple filtergraphs | |
128 | Simple filtergraphs are those that have exactly one input and output, both of | |
129 | the same type. In the above diagram they can be represented by simply inserting | |
130 | an additional step between decoding and encoding: | |
131 | ||
132 | @example | |
006c2533 LB |
133 | _________ ______________ |
134 | | | | | | |
135 | | decoded | | encoded data | | |
136 | | frames |\ /| packets | | |
137 | |_________| \ / |______________| | |
138 | \ __________ / | |
139 | simple \ | | / encoder | |
140 | filtergraph \| filtered |/ | |
141 | | frames | | |
142 | |__________| | |
2b1f105f AK |
143 | |
144 | @end example | |
145 | ||
146 | Simple filtergraphs are configured with the per-stream @option{-filter} option | |
147 | (with @option{-vf} and @option{-af} aliases for video and audio respectively). | |
148 | A simple filtergraph for video can look for example like this: | |
149 | ||
150 | @example | |
3a5a9654 TG |
151 | _______ _____________ _______ ________ |
152 | | | | | | | | | | |
153 | | input | ---> | deinterlace | ---> | scale | ---> | output | | |
154 | |_______| |_____________| |_______| |________| | |
2b1f105f AK |
155 | |
156 | @end example | |
157 | ||
158 | Note that some filters change frame properties but not frame contents. E.g. the | |
159 | @code{fps} filter in the example above changes number of frames, but does not | |
160 | touch the frame contents. Another example is the @code{setpts} filter, which | |
161 | only sets timestamps and otherwise passes the frames unchanged. | |
162 | ||
163 | @subsection Complex filtergraphs | |
164 | Complex filtergraphs are those which cannot be described as simply a linear | |
165 | processing chain applied to one stream. This is the case e.g. when the graph has | |
166 | more than one input and/or output, or when output stream type is different from | |
167 | input. They can be represented with the following diagram: | |
168 | ||
169 | @example | |
170 | _________ | |
171 | | | | |
172 | | input 0 |\ __________ | |
173 | |_________| \ | | | |
174 | \ _________ /| output 0 | | |
175 | \ | | / |__________| | |
176 | _________ \| complex | / | |
177 | | | | |/ | |
178 | | input 1 |---->| filter |\ | |
179 | |_________| | | \ __________ | |
180 | /| graph | \ | | | |
181 | / | | \| output 1 | | |
182 | _________ / |_________| |__________| | |
183 | | | / | |
184 | | input 2 |/ | |
185 | |_________| | |
186 | ||
187 | @end example | |
188 | ||
189 | Complex filtergraphs are configured with the @option{-filter_complex} option. | |
190 | Note that this option is global, since a complex filtergraph by its nature | |
191 | cannot be unambiguously associated with a single stream or file. | |
192 | ||
193 | A trivial example of a complex filtergraph is the @code{overlay} filter, which | |
194 | has two video inputs and one video output, containing one video overlaid on top | |
195 | of the other. Its audio counterpart is the @code{amix} filter. | |
196 | ||
197 | @section Stream copy | |
198 | Stream copy is a mode selected by supplying the @code{copy} parameter to the | |
199 | @option{-codec} option. It makes @command{avconv} omit the decoding and encoding | |
200 | step for the specified stream, so it does only demuxing and muxing. It is useful | |
201 | for changing the container format or modifying container-level metadata. The | |
202 | diagram above will in this case simplify to this: | |
203 | ||
204 | @example | |
205 | _______ ______________ ________ | |
206 | | | | | | | | |
207 | | input | demuxer | encoded data | muxer | output | | |
208 | | file | ---------> | packets | -------> | file | | |
209 | |_______| |______________| |________| | |
210 | ||
211 | @end example | |
212 | ||
213 | Since there is no decoding or encoding, it is very fast and there is no quality | |
214 | loss. However it might not work in some cases because of many factors. Applying | |
215 | filters is obviously also impossible, since filters work on uncompressed data. | |
216 | ||
217 | @c man end DETAILED DESCRIPTION | |
218 | ||
3d4f0dab AK |
219 | @chapter Stream selection |
220 | @c man begin STREAM SELECTION | |
221 | ||
f5bae2c6 | 222 | By default avconv tries to pick the "best" stream of each type present in input |
3d4f0dab AK |
223 | files and add them to each output file. For video, this means the highest |
224 | resolution, for audio the highest channel count. For subtitle it's simply the | |
225 | first subtitle stream. | |
226 | ||
227 | You can disable some of those defaults by using @code{-vn/-an/-sn} options. For | |
228 | full manual control, use the @code{-map} option, which disables the defaults just | |
229 | described. | |
230 | ||
231 | @c man end STREAM SELECTION | |
232 | ||
6291d7e4 AK |
233 | @chapter Options |
234 | @c man begin OPTIONS | |
235 | ||
b3dd2010 | 236 | @include avtools-common-opts.texi |
6291d7e4 AK |
237 | |
238 | @section Main options | |
239 | ||
240 | @table @option | |
241 | ||
172efad7 | 242 | @item -f @var{fmt} (@emph{input/output}) |
d159060a AK |
243 | Force input or output file format. The format is normally autodetected for input |
244 | files and guessed from file extension for output files, so this option is not | |
245 | needed in most cases. | |
6291d7e4 | 246 | |
172efad7 | 247 | @item -i @var{filename} (@emph{input}) |
6291d7e4 AK |
248 | input file name |
249 | ||
172efad7 | 250 | @item -y (@emph{global}) |
d159060a | 251 | Overwrite output files without asking. |
6291d7e4 | 252 | |
7748dd41 VG |
253 | @item -n (@emph{global}) |
254 | Immediately exit when output files already exist. | |
255 | ||
172efad7 AK |
256 | @item -c[:@var{stream_specifier}] @var{codec} (@emph{input/output,per-stream}) |
257 | @itemx -codec[:@var{stream_specifier}] @var{codec} (@emph{input/output,per-stream}) | |
92f1940e AK |
258 | Select an encoder (when used before an output file) or a decoder (when used |
259 | before an input file) for one or more streams. @var{codec} is the name of a | |
260 | decoder/encoder or a special value @code{copy} (output only) to indicate that | |
261 | the stream is not to be reencoded. | |
262 | ||
92f1940e AK |
263 | For example |
264 | @example | |
265 | avconv -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT | |
266 | @end example | |
267 | encodes all video streams with libx264 and copies all audio streams. | |
268 | ||
269 | For each stream, the last matching @code{c} option is applied, so | |
270 | @example | |
271 | avconv -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT | |
272 | @end example | |
273 | will copy all the streams except the second video, which will be encoded with | |
274 | libx264, and the 138th audio, which will be encoded with libvorbis. | |
275 | ||
172efad7 | 276 | @item -t @var{duration} (@emph{output}) |
d159060a AK |
277 | Stop writing the output after its duration reaches @var{duration}. |
278 | @var{duration} may be a number in seconds, or in @code{hh:mm:ss[.xxx]} form. | |
6291d7e4 | 279 | |
172efad7 | 280 | @item -fs @var{limit_size} (@emph{output}) |
6291d7e4 AK |
281 | Set the file size limit. |
282 | ||
172efad7 | 283 | @item -ss @var{position} (@emph{input/output}) |
cf4976ed | 284 | When used as an input option (before @code{-i}), seeks in this input file to |
811bd078 AK |
285 | @var{position}. Note the in most formats it is not possible to seek exactly, so |
286 | @command{avconv} will seek to the closest seek point before @var{position}. | |
287 | When transcoding and @option{-accurate_seek} is enabled (the default), this | |
288 | extra segment between the seek point and @var{position} will be decoded and | |
289 | discarded. When doing stream copy or when @option{-noaccurate_seek} is used, it | |
290 | will be preserved. | |
291 | ||
292 | When used as an output option (before an output filename), decodes but discards | |
293 | input until the timestamps reach @var{position}. | |
cf4976ed AK |
294 | |
295 | @var{position} may be either in seconds or in @code{hh:mm:ss[.xxx]} form. | |
6291d7e4 | 296 | |
172efad7 | 297 | @item -itsoffset @var{offset} (@emph{input}) |
6291d7e4 AK |
298 | Set the input time offset in seconds. |
299 | @code{[-]hh:mm:ss[.xxx]} syntax is also supported. | |
6291d7e4 AK |
300 | The offset is added to the timestamps of the input files. |
301 | Specifying a positive offset means that the corresponding | |
d159060a | 302 | streams are delayed by @var{offset} seconds. |
6291d7e4 | 303 | |
172efad7 | 304 | @item -metadata[:metadata_specifier] @var{key}=@var{value} (@emph{output,per-metadata}) |
6291d7e4 AK |
305 | Set a metadata key/value pair. |
306 | ||
039267f1 AK |
307 | An optional @var{metadata_specifier} may be given to set metadata |
308 | on streams or chapters. See @code{-map_metadata} documentation for | |
309 | details. | |
310 | ||
311 | This option overrides metadata set with @code{-map_metadata}. It is | |
312 | also possible to delete metadata by using an empty value. | |
313 | ||
6291d7e4 AK |
314 | For example, for setting the title in the output file: |
315 | @example | |
316 | avconv -i in.avi -metadata title="my title" out.flv | |
317 | @end example | |
318 | ||
a7b5e841 | 319 | To set the language of the first audio stream: |
039267f1 | 320 | @example |
a7b5e841 | 321 | avconv -i INPUT -metadata:s:a:0 language=eng OUTPUT |
039267f1 AK |
322 | @end example |
323 | ||
172efad7 | 324 | @item -target @var{type} (@emph{output}) |
d159060a AK |
325 | Specify target file type (@code{vcd}, @code{svcd}, @code{dvd}, @code{dv}, |
326 | @code{dv50}). @var{type} may be prefixed with @code{pal-}, @code{ntsc-} or | |
327 | @code{film-} to use the corresponding standard. All the format options | |
328 | (bitrate, codecs, buffer sizes) are then set automatically. You can just type: | |
6291d7e4 AK |
329 | |
330 | @example | |
331 | avconv -i myfile.avi -target vcd /tmp/vcd.mpg | |
332 | @end example | |
333 | ||
334 | Nevertheless you can specify additional options as long as you know | |
335 | they do not conflict with the standard, as in: | |
336 | ||
337 | @example | |
338 | avconv -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg | |
339 | @end example | |
340 | ||
172efad7 | 341 | @item -dframes @var{number} (@emph{output}) |
96139b5e | 342 | Set the number of data frames to record. This is an alias for @code{-frames:d}. |
6291d7e4 | 343 | |
172efad7 | 344 | @item -frames[:@var{stream_specifier}] @var{framecount} (@emph{output,per-stream}) |
96139b5e AK |
345 | Stop writing to the stream after @var{framecount} frames. |
346 | ||
172efad7 AK |
347 | @item -q[:@var{stream_specifier}] @var{q} (@emph{output,per-stream}) |
348 | @itemx -qscale[:@var{stream_specifier}] @var{q} (@emph{output,per-stream}) | |
77d9c454 AK |
349 | Use fixed quality scale (VBR). The meaning of @var{q} is |
350 | codec-dependent. | |
351 | ||
667d9818 | 352 | @item -filter[:@var{stream_specifier}] @var{filter_graph} (@emph{output,per-stream}) |
8e5ce590 AK |
353 | @var{filter_graph} is a description of the filter graph to apply to |
354 | the stream. Use @code{-filters} to show all the available filters | |
355 | (including also sources and sinks). | |
3b266da3 AK |
356 | |
357 | See also the @option{-filter_complex} option if you want to create filter graphs | |
358 | with multiple inputs and/or outputs. | |
a4208b9b AK |
359 | |
360 | @item -filter_script[:@var{stream_specifier}] @var{filename} (@emph{output,per-stream}) | |
361 | This option is similar to @option{-filter}, the only difference is that its | |
362 | argument is the name of the file from which a filtergraph description is to be | |
363 | read. | |
364 | ||
3ec34462 AK |
365 | @item -pre[:@var{stream_specifier}] @var{preset_name} (@emph{output,per-stream}) |
366 | Specify the preset for matching stream(s). | |
8e5ce590 | 367 | |
3460dd8a AK |
368 | @item -stats (@emph{global}) |
369 | Print encoding progress/statistics. On by default. | |
370 | ||
4dbc6cee AK |
371 | @item -attach @var{filename} (@emph{output}) |
372 | Add an attachment to the output file. This is supported by a few formats | |
373 | like Matroska for e.g. fonts used in rendering subtitles. Attachments | |
374 | are implemented as a specific type of stream, so this option will add | |
375 | a new stream to the file. It is then possible to use per-stream options | |
376 | on this stream in the usual way. Attachment streams created with this | |
377 | option will be created after all the other streams (i.e. those created | |
378 | with @code{-map} or automatic mappings). | |
379 | ||
380 | Note that for Matroska you also have to set the mimetype metadata tag: | |
381 | @example | |
382 | avconv -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv | |
383 | @end example | |
384 | (assuming that the attachment stream will be third in the output file). | |
385 | ||
a2c0b830 AK |
386 | @item -dump_attachment[:@var{stream_specifier}] @var{filename} (@emph{input,per-stream}) |
387 | Extract the matching attachment stream into a file named @var{filename}. If | |
388 | @var{filename} is empty, then the value of the @code{filename} metadata tag | |
389 | will be used. | |
390 | ||
391 | E.g. to extract the first attachment to a file named 'out.ttf': | |
392 | @example | |
393 | avconv -dump_attachment:t:0 out.ttf INPUT | |
394 | @end example | |
395 | To extract all attachments to files determined by the @code{filename} tag: | |
396 | @example | |
397 | avconv -dump_attachment:t "" INPUT | |
398 | @end example | |
399 | ||
400 | Technical note -- attachments are implemented as codec extradata, so this | |
401 | option can actually be used to extract extradata from any stream, not just | |
402 | attachments. | |
403 | ||
6291d7e4 AK |
404 | @end table |
405 | ||
406 | @section Video Options | |
407 | ||
408 | @table @option | |
172efad7 | 409 | @item -vframes @var{number} (@emph{output}) |
96139b5e | 410 | Set the number of video frames to record. This is an alias for @code{-frames:v}. |
172efad7 | 411 | @item -r[:@var{stream_specifier}] @var{fps} (@emph{input/output,per-stream}) |
c9cc7629 AK |
412 | Set frame rate (Hz value, fraction or abbreviation). |
413 | ||
414 | As an input option, ignore any timestamps stored in the file and instead | |
415 | generate timestamps assuming constant frame rate @var{fps}. | |
416 | ||
417 | As an output option, duplicate or drop input frames to achieve constant output | |
418 | frame rate @var{fps} (note that this actually causes the @code{fps} filter to be | |
419 | inserted to the end of the corresponding filtergraph). | |
420 | ||
172efad7 | 421 | @item -s[:@var{stream_specifier}] @var{size} (@emph{input/output,per-stream}) |
4f81a507 AK |
422 | Set frame size. |
423 | ||
424 | As an input option, this is a shortcut for the @option{video_size} private | |
425 | option, recognized by some demuxers for which the frame size is either not | |
426 | stored in the file or is configurable -- e.g. raw video or video grabbers. | |
427 | ||
428 | As an output option, this inserts the @code{scale} video filter to the | |
429 | @emph{end} of the corresponding filtergraph. Please use the @code{scale} filter | |
430 | directly to insert it at the beginning or some other place. | |
431 | ||
432 | The format is @samp{wxh} (default - same as source). The following | |
433 | abbreviations are recognized: | |
6291d7e4 AK |
434 | @table @samp |
435 | @item sqcif | |
436 | 128x96 | |
437 | @item qcif | |
438 | 176x144 | |
439 | @item cif | |
440 | 352x288 | |
441 | @item 4cif | |
442 | 704x576 | |
443 | @item 16cif | |
444 | 1408x1152 | |
445 | @item qqvga | |
446 | 160x120 | |
447 | @item qvga | |
448 | 320x240 | |
449 | @item vga | |
450 | 640x480 | |
451 | @item svga | |
452 | 800x600 | |
453 | @item xga | |
454 | 1024x768 | |
455 | @item uxga | |
456 | 1600x1200 | |
457 | @item qxga | |
458 | 2048x1536 | |
459 | @item sxga | |
460 | 1280x1024 | |
461 | @item qsxga | |
462 | 2560x2048 | |
463 | @item hsxga | |
464 | 5120x4096 | |
465 | @item wvga | |
466 | 852x480 | |
467 | @item wxga | |
468 | 1366x768 | |
469 | @item wsxga | |
470 | 1600x1024 | |
471 | @item wuxga | |
472 | 1920x1200 | |
473 | @item woxga | |
474 | 2560x1600 | |
475 | @item wqsxga | |
476 | 3200x2048 | |
477 | @item wquxga | |
478 | 3840x2400 | |
479 | @item whsxga | |
480 | 6400x4096 | |
481 | @item whuxga | |
482 | 7680x4800 | |
483 | @item cga | |
484 | 320x200 | |
485 | @item ega | |
486 | 640x350 | |
487 | @item hd480 | |
488 | 852x480 | |
489 | @item hd720 | |
490 | 1280x720 | |
491 | @item hd1080 | |
492 | 1920x1080 | |
493 | @end table | |
494 | ||
172efad7 | 495 | @item -aspect[:@var{stream_specifier}] @var{aspect} (@emph{output,per-stream}) |
6291d7e4 AK |
496 | Set the video display aspect ratio specified by @var{aspect}. |
497 | ||
498 | @var{aspect} can be a floating point number string, or a string of the | |
499 | form @var{num}:@var{den}, where @var{num} and @var{den} are the | |
500 | numerator and denominator of the aspect ratio. For example "4:3", | |
501 | "16:9", "1.3333", and "1.7777" are valid argument values. | |
502 | ||
172efad7 | 503 | @item -vn (@emph{output}) |
6291d7e4 | 504 | Disable video recording. |
4fea8959 | 505 | |
172efad7 | 506 | @item -vcodec @var{codec} (@emph{output}) |
92f1940e | 507 | Set the video codec. This is an alias for @code{-codec:v}. |
f4ad238c | 508 | |
038c0b1e | 509 | @item -pass[:@var{stream_specifier}] @var{n} (@emph{output,per-stream}) |
6291d7e4 AK |
510 | Select the pass number (1 or 2). It is used to do two-pass |
511 | video encoding. The statistics of the video are recorded in the first | |
512 | pass into a log file (see also the option -passlogfile), | |
513 | and in the second pass that log file is used to generate the video | |
514 | at the exact requested bitrate. | |
515 | On pass 1, you may just deactivate audio and set output to null, | |
516 | examples for Windows and Unix: | |
517 | @example | |
92f1940e AK |
518 | avconv -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL |
519 | avconv -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null | |
6291d7e4 AK |
520 | @end example |
521 | ||
bbcedade | 522 | @item -passlogfile[:@var{stream_specifier}] @var{prefix} (@emph{output,per-stream}) |
6291d7e4 AK |
523 | Set two-pass log file name prefix to @var{prefix}, the default file name |
524 | prefix is ``av2pass''. The complete file name will be | |
525 | @file{PREFIX-N.log}, where N is a number specific to the output | |
526 | stream. | |
527 | ||
172efad7 | 528 | @item -vf @var{filter_graph} (@emph{output}) |
6291d7e4 AK |
529 | @var{filter_graph} is a description of the filter graph to apply to |
530 | the input video. | |
531 | Use the option "-filters" to show all the available filters (including | |
8e5ce590 | 532 | also sources and sinks). This is an alias for @code{-filter:v}. |
6291d7e4 AK |
533 | |
534 | @end table | |
535 | ||
536 | @section Advanced Video Options | |
537 | ||
538 | @table @option | |
172efad7 | 539 | @item -pix_fmt[:@var{stream_specifier}] @var{format} (@emph{input/output,per-stream}) |
b2254d83 | 540 | Set pixel format. Use @code{-pix_fmts} to show all the supported |
6291d7e4 | 541 | pixel formats. |
172efad7 | 542 | @item -sws_flags @var{flags} (@emph{input/output}) |
6291d7e4 | 543 | Set SwScaler flags. |
6291d7e4 AK |
544 | @item -vdt @var{n} |
545 | Discard threshold. | |
6291d7e4 | 546 | |
172efad7 | 547 | @item -rc_override[:@var{stream_specifier}] @var{override} (@emph{output,per-stream}) |
6291d7e4 | 548 | rate control override for specific intervals |
6291d7e4 | 549 | |
6291d7e4 AK |
550 | @item -vstats |
551 | Dump video coding statistics to @file{vstats_HHMMSS.log}. | |
552 | @item -vstats_file @var{file} | |
553 | Dump video coding statistics to @var{file}. | |
172efad7 | 554 | @item -top[:@var{stream_specifier}] @var{n} (@emph{output,per-stream}) |
6291d7e4 AK |
555 | top=1/bottom=0/auto=-1 field first |
556 | @item -dc @var{precision} | |
557 | Intra_dc_precision. | |
172efad7 | 558 | @item -vtag @var{fourcc/tag} (@emph{output}) |
013887eb | 559 | Force video tag/fourcc. This is an alias for @code{-tag:v}. |
172efad7 | 560 | @item -qphist (@emph{global}) |
6291d7e4 | 561 | Show QP histogram. |
172efad7 | 562 | @item -force_key_frames[:@var{stream_specifier}] @var{time}[,@var{time}...] (@emph{output,per-stream}) |
6291d7e4 AK |
563 | Force key frames at the specified timestamps, more precisely at the first |
564 | frames after each specified time. | |
565 | This option can be useful to ensure that a seek point is present at a | |
566 | chapter mark or any other designated place in the output file. | |
567 | The timestamps must be specified in ascending order. | |
a2aeeb22 AK |
568 | |
569 | @item -copyinkf[:@var{stream_specifier}] (@emph{output,per-stream}) | |
570 | When doing stream copy, copy also non-key frames found at the | |
571 | beginning. | |
07fd0a22 AK |
572 | |
573 | @item -hwaccel[:@var{stream_specifier}] @var{hwaccel} (@emph{input,per-stream}) | |
574 | Use hardware acceleration to decode the matching stream(s). The allowed values | |
575 | of @var{hwaccel} are: | |
576 | @table @option | |
577 | @item none | |
578 | Do not use any hardware acceleration (the default). | |
579 | ||
580 | @item auto | |
581 | Automatically select the hardware acceleration method. | |
7671dd7c | 582 | |
1839fafa AK |
583 | @item vda |
584 | Use Apple VDA hardware acceleration. | |
585 | ||
7671dd7c AK |
586 | @item vdpau |
587 | Use VDPAU (Video Decode and Presentation API for Unix) hardware acceleration. | |
35177ba7 HL |
588 | |
589 | @item dxva2 | |
590 | Use DXVA2 (DirectX Video Acceleration) hardware acceleration. | |
07fd0a22 AK |
591 | @end table |
592 | ||
593 | This option has no effect if the selected hwaccel is not available or not | |
594 | supported by the chosen decoder. | |
595 | ||
596 | Note that most acceleration methods are intended for playback and will not be | |
597 | faster than software decoding on modern CPUs. Additionally, @command{avconv} | |
598 | will usually need to copy the decoded frames from the GPU memory into the system | |
599 | memory, resulting in further performance loss. This option is thus mainly | |
600 | useful for testing. | |
601 | ||
602 | @item -hwaccel_device[:@var{stream_specifier}] @var{hwaccel_device} (@emph{input,per-stream}) | |
603 | Select a device to use for hardware acceleration. | |
604 | ||
605 | This option only makes sense when the @option{-hwaccel} option is also | |
606 | specified. Its exact meaning depends on the specific hardware acceleration | |
607 | method chosen. | |
7671dd7c AK |
608 | |
609 | @table @option | |
610 | @item vdpau | |
611 | For VDPAU, this option specifies the X11 display/screen to use. If this option | |
612 | is not specified, the value of the @var{DISPLAY} environment variable is used | |
35177ba7 HL |
613 | |
614 | @item dxva2 | |
615 | For DXVA2, this option should contain the number of the display adapter to use. | |
616 | If this option is not specified, the default adapter is used. | |
7671dd7c | 617 | @end table |
6291d7e4 AK |
618 | @end table |
619 | ||
620 | @section Audio Options | |
621 | ||
622 | @table @option | |
172efad7 | 623 | @item -aframes @var{number} (@emph{output}) |
96139b5e | 624 | Set the number of audio frames to record. This is an alias for @code{-frames:a}. |
172efad7 | 625 | @item -ar[:@var{stream_specifier}] @var{freq} (@emph{input/output,per-stream}) |
6291d7e4 AK |
626 | Set the audio sampling frequency. For output streams it is set by |
627 | default to the frequency of the corresponding input stream. For input | |
628 | streams this option only makes sense for audio grabbing devices and raw | |
629 | demuxers and is mapped to the corresponding demuxer options. | |
172efad7 | 630 | @item -aq @var{q} (@emph{output}) |
77d9c454 | 631 | Set the audio quality (codec-specific, VBR). This is an alias for -q:a. |
172efad7 | 632 | @item -ac[:@var{stream_specifier}] @var{channels} (@emph{input/output,per-stream}) |
6291d7e4 AK |
633 | Set the number of audio channels. For output streams it is set by |
634 | default to the number of input audio channels. For input streams | |
635 | this option only makes sense for audio grabbing devices and raw demuxers | |
636 | and is mapped to the corresponding demuxer options. | |
172efad7 | 637 | @item -an (@emph{output}) |
6291d7e4 | 638 | Disable audio recording. |
172efad7 | 639 | @item -acodec @var{codec} (@emph{input/output}) |
92f1940e | 640 | Set the audio codec. This is an alias for @code{-codec:a}. |
172efad7 | 641 | @item -sample_fmt[:@var{stream_specifier}] @var{sample_fmt} (@emph{output,per-stream}) |
2b56db58 | 642 | Set the audio sample format. Use @code{-sample_fmts} to get a list |
05bffc12 | 643 | of supported sample formats. |
369cb092 AK |
644 | @item -af @var{filter_graph} (@emph{output}) |
645 | @var{filter_graph} is a description of the filter graph to apply to | |
646 | the input audio. | |
647 | Use the option "-filters" to show all the available filters (including | |
648 | also sources and sinks). This is an alias for @code{-filter:a}. | |
6291d7e4 AK |
649 | @end table |
650 | ||
651 | @section Advanced Audio options: | |
652 | ||
653 | @table @option | |
172efad7 | 654 | @item -atag @var{fourcc/tag} (@emph{output}) |
013887eb | 655 | Force audio tag/fourcc. This is an alias for @code{-tag:a}. |
6291d7e4 AK |
656 | @end table |
657 | ||
658 | @section Subtitle options: | |
659 | ||
660 | @table @option | |
172efad7 | 661 | @item -scodec @var{codec} (@emph{input/output}) |
92f1940e | 662 | Set the subtitle codec. This is an alias for @code{-codec:s}. |
172efad7 | 663 | @item -sn (@emph{output}) |
6291d7e4 | 664 | Disable subtitle recording. |
6291d7e4 AK |
665 | @end table |
666 | ||
6291d7e4 AK |
667 | @section Advanced options |
668 | ||
669 | @table @option | |
3b266da3 | 670 | @item -map [-]@var{input_file_id}[:@var{stream_specifier}][,@var{sync_file_id}[:@var{stream_specifier}]] | @var{[linklabel]} (@emph{output}) |
6291d7e4 | 671 | |
8d2e4a7e | 672 | Designate one or more input streams as a source for the output file. Each input |
6291d7e4 AK |
673 | stream is identified by the input file index @var{input_file_id} and |
674 | the input stream index @var{input_stream_id} within the input | |
8d2e4a7e | 675 | file. Both indices start at 0. If specified, |
172efad7 | 676 | @var{sync_file_id}:@var{stream_specifier} sets which input stream |
6291d7e4 AK |
677 | is used as a presentation sync reference. |
678 | ||
3d4f0dab | 679 | The first @code{-map} option on the command line specifies the |
6291d7e4 AK |
680 | source for output stream 0, the second @code{-map} option specifies |
681 | the source for output stream 1, etc. | |
682 | ||
8d2e4a7e AK |
683 | A @code{-} character before the stream identifier creates a "negative" mapping. |
684 | It disables matching streams from already created mappings. | |
685 | ||
3b266da3 AK |
686 | An alternative @var{[linklabel]} form will map outputs from complex filter |
687 | graphs (see the @option{-filter_complex} option) to the output file. | |
688 | @var{linklabel} must correspond to a defined output link label in the graph. | |
689 | ||
8d2e4a7e AK |
690 | For example, to map ALL streams from the first input file to output |
691 | @example | |
f5bae2c6 | 692 | avconv -i INPUT -map 0 output |
8d2e4a7e AK |
693 | @end example |
694 | ||
6291d7e4 | 695 | For example, if you have two audio streams in the first input file, |
8d2e4a7e | 696 | these streams are identified by "0:0" and "0:1". You can use |
3d4f0dab | 697 | @code{-map} to select which streams to place in an output file. For |
6291d7e4 AK |
698 | example: |
699 | @example | |
8d2e4a7e | 700 | avconv -i INPUT -map 0:1 out.wav |
6291d7e4 | 701 | @end example |
8d2e4a7e | 702 | will map the input stream in @file{INPUT} identified by "0:1" to |
6291d7e4 AK |
703 | the (single) output stream in @file{out.wav}. |
704 | ||
705 | For example, to select the stream with index 2 from input file | |
8d2e4a7e AK |
706 | @file{a.mov} (specified by the identifier "0:2"), and stream with |
707 | index 6 from input @file{b.mov} (specified by the identifier "1:6"), | |
6291d7e4 AK |
708 | and copy them to the output file @file{out.mov}: |
709 | @example | |
92f1940e | 710 | avconv -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov |
8d2e4a7e AK |
711 | @end example |
712 | ||
713 | To select all video and the third audio stream from an input file: | |
714 | @example | |
715 | avconv -i INPUT -map 0:v -map 0:a:2 OUTPUT | |
716 | @end example | |
717 | ||
718 | To map all the streams except the second audio, use negative mappings | |
719 | @example | |
720 | avconv -i INPUT -map 0 -map -0:a:1 OUTPUT | |
6291d7e4 AK |
721 | @end example |
722 | ||
481a3667 AK |
723 | To pick the English audio stream: |
724 | @example | |
725 | avconv -i INPUT -map 0:m:language:eng OUTPUT | |
726 | @end example | |
727 | ||
3d4f0dab | 728 | Note that using this option disables the default mappings for this output file. |
6291d7e4 | 729 | |
a7b5e841 | 730 | @item -map_metadata[:@var{metadata_spec_out}] @var{infile}[:@var{metadata_spec_in}] (@emph{output,per-metadata}) |
e6e6060c AK |
731 | Set metadata information of the next output file from @var{infile}. Note that |
732 | those are file indices (zero-based), not filenames. | |
a7b5e841 AK |
733 | Optional @var{metadata_spec_in/out} parameters specify, which metadata to copy. |
734 | A metadata specifier can have the following forms: | |
735 | @table @option | |
736 | @item @var{g} | |
737 | global metadata, i.e. metadata that applies to the whole file | |
738 | ||
739 | @item @var{s}[:@var{stream_spec}] | |
740 | per-stream metadata. @var{stream_spec} is a stream specifier as described | |
741 | in the @ref{Stream specifiers} chapter. In an input metadata specifier, the first | |
742 | matching stream is copied from. In an output metadata specifier, all matching | |
743 | streams are copied to. | |
744 | ||
745 | @item @var{c}:@var{chapter_index} | |
746 | per-chapter metadata. @var{chapter_index} is the zero-based chapter index. | |
747 | ||
748 | @item @var{p}:@var{program_index} | |
749 | per-program metadata. @var{program_index} is the zero-based program index. | |
750 | @end table | |
751 | If metadata specifier is omitted, it defaults to global. | |
6291d7e4 | 752 | |
e6e6060c | 753 | By default, global metadata is copied from the first input file, |
6291d7e4 AK |
754 | per-stream and per-chapter metadata is copied along with streams/chapters. These |
755 | default mappings are disabled by creating any mapping of the relevant type. A negative | |
756 | file index can be used to create a dummy mapping that just disables automatic copying. | |
757 | ||
758 | For example to copy metadata from the first stream of the input file to global metadata | |
759 | of the output file: | |
760 | @example | |
e6e6060c | 761 | avconv -i in.ogg -map_metadata 0:s:0 out.mp3 |
6291d7e4 | 762 | @end example |
a7b5e841 AK |
763 | |
764 | To do the reverse, i.e. copy global metadata to all audio streams: | |
765 | @example | |
766 | avconv -i in.mkv -map_metadata:s:a 0:g out.mkv | |
767 | @end example | |
768 | Note that simple @code{0} would work as well in this example, since global | |
769 | metadata is assumed by default. | |
770 | ||
172efad7 | 771 | @item -map_chapters @var{input_file_index} (@emph{output}) |
b9aac90b AK |
772 | Copy chapters from input file with index @var{input_file_index} to the next |
773 | output file. If no chapter mapping is specified, then chapters are copied from | |
774 | the first input file with at least one chapter. Use a negative file index to | |
775 | disable any chapter copying. | |
6291d7e4 AK |
776 | @item -debug |
777 | Print specific debug info. | |
172efad7 | 778 | @item -benchmark (@emph{global}) |
6291d7e4 AK |
779 | Show benchmarking information at the end of an encode. |
780 | Shows CPU time used and maximum memory consumption. | |
781 | Maximum memory consumption is not supported on all systems, | |
782 | it will usually display as 0 if not supported. | |
5aa3fcec AK |
783 | @item -timelimit @var{duration} (@emph{global}) |
784 | Exit after avconv has been running for @var{duration} seconds. | |
172efad7 | 785 | @item -dump (@emph{global}) |
d159060a | 786 | Dump each input packet to stderr. |
172efad7 | 787 | @item -hex (@emph{global}) |
6291d7e4 | 788 | When dumping packets, also dump the payload. |
172efad7 | 789 | @item -re (@emph{input}) |
205a4502 MS |
790 | Read input at native frame rate. Mainly used to simulate a grab device |
791 | or live input stream (e.g. when reading from a file). Should not be used | |
792 | with actual grab devices or live input streams (where it can cause packet | |
793 | loss). | |
6291d7e4 AK |
794 | @item -vsync @var{parameter} |
795 | Video sync method. | |
796 | ||
797 | @table @option | |
e8c04f62 | 798 | @item passthrough |
6291d7e4 | 799 | Each frame is passed with its timestamp from the demuxer to the muxer. |
e8c04f62 | 800 | @item cfr |
6291d7e4 AK |
801 | Frames will be duplicated and dropped to achieve exactly the requested |
802 | constant framerate. | |
e8c04f62 | 803 | @item vfr |
6291d7e4 AK |
804 | Frames are passed through with their timestamp or dropped so as to |
805 | prevent 2 frames from having the same timestamp. | |
e8c04f62 | 806 | @item auto |
6291d7e4 AK |
807 | Chooses between 1 and 2 depending on muxer capabilities. This is the |
808 | default method. | |
809 | @end table | |
810 | ||
811 | With -map you can select from which stream the timestamps should be | |
812 | taken. You can leave either video or audio unchanged and sync the | |
813 | remaining stream(s) to the unchanged one. | |
814 | ||
815 | @item -async @var{samples_per_second} | |
816 | Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps, | |
817 | the parameter is the maximum samples per second by which the audio is changed. | |
818 | -async 1 is a special case where only the start of the audio stream is corrected | |
819 | without any later correction. | |
6eeb9a04 | 820 | This option has been deprecated. Use the @code{asyncts} audio filter instead. |
6291d7e4 AK |
821 | @item -copyts |
822 | Copy timestamps from input to output. | |
823 | @item -copytb | |
824 | Copy input stream time base from input to output when stream copying. | |
3c0df905 | 825 | @item -shortest (@emph{output}) |
6291d7e4 AK |
826 | Finish encoding when the shortest input stream ends. |
827 | @item -dts_delta_threshold | |
828 | Timestamp discontinuity delta threshold. | |
172efad7 | 829 | @item -muxdelay @var{seconds} (@emph{input}) |
6291d7e4 | 830 | Set the maximum demux-decode delay. |
172efad7 | 831 | @item -muxpreload @var{seconds} (@emph{input}) |
6291d7e4 | 832 | Set the initial demux-decode delay. |
172efad7 | 833 | @item -streamid @var{output-stream-index}:@var{new-value} (@emph{output}) |
6291d7e4 AK |
834 | Assign a new stream-id value to an output stream. This option should be |
835 | specified prior to the output filename to which it applies. | |
836 | For the situation where multiple output files exist, a streamid | |
837 | may be reassigned to a different value. | |
838 | ||
839 | For example, to set the stream 0 PID to 33 and the stream 1 PID to 36 for | |
840 | an output mpegts file: | |
841 | @example | |
842 | avconv -i infile -streamid 0:33 -streamid 1:36 out.ts | |
843 | @end example | |
d821cbe2 | 844 | |
172efad7 | 845 | @item -bsf[:@var{stream_specifier}] @var{bitstream_filters} (@emph{output,per-stream}) |
d821cbe2 AK |
846 | Set bitstream filters for matching streams. @var{bistream_filters} is |
847 | a comma-separated list of bitstream filters. Use the @code{-bsfs} option | |
848 | to get the list of bitstream filters. | |
849 | @example | |
d6a77e2b | 850 | avconv -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264 |
d821cbe2 AK |
851 | @end example |
852 | @example | |
d6a77e2b | 853 | avconv -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt |
d821cbe2 | 854 | @end example |
013887eb | 855 | |
746dca48 | 856 | @item -tag[:@var{stream_specifier}] @var{codec_tag} (@emph{input/output,per-stream}) |
013887eb | 857 | Force a tag/fourcc for matching streams. |
4138cd29 | 858 | |
3b266da3 AK |
859 | @item -filter_complex @var{filtergraph} (@emph{global}) |
860 | Define a complex filter graph, i.e. one with arbitrary number of inputs and/or | |
861 | outputs. For simple graphs -- those with one input and one output of the same | |
862 | type -- see the @option{-filter} options. @var{filtergraph} is a description of | |
863 | the filter graph, as described in @ref{Filtergraph syntax}. | |
864 | ||
865 | Input link labels must refer to input streams using the | |
866 | @code{[file_index:stream_specifier]} syntax (i.e. the same as @option{-map} | |
867 | uses). If @var{stream_specifier} matches multiple streams, the first one will be | |
868 | used. An unlabeled input will be connected to the first unused input stream of | |
869 | the matching type. | |
870 | ||
871 | Output link labels are referred to with @option{-map}. Unlabeled outputs are | |
872 | added to the first output file. | |
873 | ||
ab296097 AK |
874 | Note that with this option it is possible to use only lavfi sources without |
875 | normal input files. | |
876 | ||
3b266da3 AK |
877 | For example, to overlay an image over video |
878 | @example | |
879 | avconv -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map | |
880 | '[out]' out.mkv | |
881 | @end example | |
882 | Here @code{[0:v]} refers to the first video stream in the first input file, | |
883 | which is linked to the first (main) input of the overlay filter. Similarly the | |
884 | first video stream in the second input is linked to the second (overlay) input | |
885 | of overlay. | |
886 | ||
887 | Assuming there is only one video stream in each input file, we can omit input | |
888 | labels, so the above is equivalent to | |
889 | @example | |
890 | avconv -i video.mkv -i image.png -filter_complex 'overlay[out]' -map | |
891 | '[out]' out.mkv | |
892 | @end example | |
893 | ||
894 | Furthermore we can omit the output label and the single output from the filter | |
895 | graph will be added to the output file automatically, so we can simply write | |
896 | @example | |
897 | avconv -i video.mkv -i image.png -filter_complex 'overlay' out.mkv | |
898 | @end example | |
ab296097 AK |
899 | |
900 | To generate 5 seconds of pure red video using lavfi @code{color} source: | |
901 | @example | |
902 | avconv -filter_complex 'color=red' -t 5 out.mkv | |
903 | @end example | |
a4208b9b AK |
904 | |
905 | @item -filter_complex_script @var{filename} (@emph{global}) | |
906 | This option is similar to @option{-filter_complex}, the only difference is that | |
907 | its argument is the name of the file from which a complex filtergraph | |
908 | description is to be read. | |
909 | ||
811bd078 AK |
910 | @item -accurate_seek (@emph{input}) |
911 | This option enables or disables accurate seeking in input files with the | |
912 | @option{-ss} option. It is enabled by default, so seeking is accurate when | |
913 | transcoding. Use @option{-noaccurate_seek} to disable it, which may be useful | |
914 | e.g. when copying some streams and transcoding the others. | |
915 | ||
6291d7e4 | 916 | @end table |
7478ab5a | 917 | @c man end OPTIONS |
6291d7e4 | 918 | |
6291d7e4 AK |
919 | @chapter Tips |
920 | @c man begin TIPS | |
921 | ||
922 | @itemize | |
923 | @item | |
924 | For streaming at very low bitrate application, use a low frame rate | |
925 | and a small GOP size. This is especially true for RealVideo where | |
926 | the Linux player does not seem to be very fast, so it can miss | |
927 | frames. An example is: | |
928 | ||
929 | @example | |
930 | avconv -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm | |
931 | @end example | |
932 | ||
933 | @item | |
934 | The parameter 'q' which is displayed while encoding is the current | |
935 | quantizer. The value 1 indicates that a very good quality could | |
936 | be achieved. The value 31 indicates the worst quality. If q=31 appears | |
937 | too often, it means that the encoder cannot compress enough to meet | |
938 | your bitrate. You must either increase the bitrate, decrease the | |
939 | frame rate or decrease the frame size. | |
940 | ||
941 | @item | |
942 | If your computer is not fast enough, you can speed up the | |
943 | compression at the expense of the compression ratio. You can use | |
3607dc2b | 944 | '-me zero' to speed up motion estimation, and '-g 0' to disable |
6291d7e4 AK |
945 | motion estimation completely (you have only I-frames, which means it |
946 | is about as good as JPEG compression). | |
947 | ||
948 | @item | |
949 | To have very low audio bitrates, reduce the sampling frequency | |
950 | (down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3). | |
951 | ||
952 | @item | |
953 | To have a constant quality (but a variable bitrate), use the option | |
954 | '-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst | |
955 | quality). | |
956 | ||
6291d7e4 AK |
957 | @end itemize |
958 | @c man end TIPS | |
959 | ||
960 | @chapter Examples | |
961 | @c man begin EXAMPLES | |
962 | ||
3ec34462 AK |
963 | @section Preset files |
964 | ||
965 | A preset file contains a sequence of @var{option=value} pairs, one for | |
966 | each line, specifying a sequence of options which can be specified also on | |
967 | the command line. Lines starting with the hash ('#') character are ignored and | |
968 | are used to provide comments. Empty lines are also ignored. Check the | |
8096fdf0 | 969 | @file{presets} directory in the Libav source tree for examples. |
3ec34462 AK |
970 | |
971 | Preset files are specified with the @code{pre} option, this option takes a | |
972 | preset name as input. Avconv searches for a file named @var{preset_name}.avpreset in | |
973 | the directories @file{$AVCONV_DATADIR} (if set), and @file{$HOME/.avconv}, and in | |
974 | the data directory defined at configuration time (usually @file{$PREFIX/share/avconv}) | |
975 | in that order. For example, if the argument is @code{libx264-max}, it will | |
976 | search for the file @file{libx264-max.avpreset}. | |
977 | ||
6291d7e4 AK |
978 | @section Video and Audio grabbing |
979 | ||
980 | If you specify the input format and device then avconv can grab video | |
981 | and audio directly. | |
982 | ||
983 | @example | |
984 | avconv -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg | |
985 | @end example | |
986 | ||
987 | Note that you must activate the right video source and channel before | |
988 | launching avconv with any TV viewer such as | |
989 | @uref{http://linux.bytesex.org/xawtv/, xawtv} by Gerd Knorr. You also | |
990 | have to set the audio recording levels correctly with a | |
991 | standard mixer. | |
992 | ||
993 | @section X11 grabbing | |
994 | ||
995 | Grab the X11 display with avconv via | |
996 | ||
997 | @example | |
998 | avconv -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg | |
999 | @end example | |
1000 | ||
1001 | 0.0 is display.screen number of your X11 server, same as | |
1002 | the DISPLAY environment variable. | |
1003 | ||
1004 | @example | |
1005 | avconv -f x11grab -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg | |
1006 | @end example | |
1007 | ||
1008 | 0.0 is display.screen number of your X11 server, same as the DISPLAY environment | |
1009 | variable. 10 is the x-offset and 20 the y-offset for the grabbing. | |
1010 | ||
1011 | @section Video and Audio file format conversion | |
1012 | ||
1013 | Any supported file format and protocol can serve as input to avconv: | |
1014 | ||
1015 | Examples: | |
1016 | @itemize | |
1017 | @item | |
1018 | You can use YUV files as input: | |
1019 | ||
1020 | @example | |
1021 | avconv -i /tmp/test%d.Y /tmp/out.mpg | |
1022 | @end example | |
1023 | ||
1024 | It will use the files: | |
1025 | @example | |
1026 | /tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, | |
1027 | /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc... | |
1028 | @end example | |
1029 | ||
1030 | The Y files use twice the resolution of the U and V files. They are | |
1031 | raw files, without header. They can be generated by all decent video | |
1032 | decoders. You must specify the size of the image with the @option{-s} option | |
1033 | if avconv cannot guess it. | |
1034 | ||
1035 | @item | |
1036 | You can input from a raw YUV420P file: | |
1037 | ||
1038 | @example | |
1039 | avconv -i /tmp/test.yuv /tmp/out.avi | |
1040 | @end example | |
1041 | ||
1042 | test.yuv is a file containing raw YUV planar data. Each frame is composed | |
1043 | of the Y plane followed by the U and V planes at half vertical and | |
1044 | horizontal resolution. | |
1045 | ||
1046 | @item | |
1047 | You can output to a raw YUV420P file: | |
1048 | ||
1049 | @example | |
1050 | avconv -i mydivx.avi hugefile.yuv | |
1051 | @end example | |
1052 | ||
1053 | @item | |
1054 | You can set several input files and output files: | |
1055 | ||
1056 | @example | |
1057 | avconv -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg | |
1058 | @end example | |
1059 | ||
1060 | Converts the audio file a.wav and the raw YUV video file a.yuv | |
1061 | to MPEG file a.mpg. | |
1062 | ||
1063 | @item | |
1064 | You can also do audio and video conversions at the same time: | |
1065 | ||
1066 | @example | |
1067 | avconv -i /tmp/a.wav -ar 22050 /tmp/a.mp2 | |
1068 | @end example | |
1069 | ||
1070 | Converts a.wav to MPEG audio at 22050 Hz sample rate. | |
1071 | ||
1072 | @item | |
1073 | You can encode to several formats at the same time and define a | |
1074 | mapping from input stream to output streams: | |
1075 | ||
1076 | @example | |
64db1a82 | 1077 | avconv -i /tmp/a.wav -map 0:a -b 64k /tmp/a.mp2 -map 0:a -b 128k /tmp/b.mp2 |
6291d7e4 AK |
1078 | @end example |
1079 | ||
1080 | Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map | |
1081 | file:index' specifies which input stream is used for each output | |
1082 | stream, in the order of the definition of output streams. | |
1083 | ||
1084 | @item | |
1085 | You can transcode decrypted VOBs: | |
1086 | ||
1087 | @example | |
64db1a82 | 1088 | avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi |
6291d7e4 AK |
1089 | @end example |
1090 | ||
1091 | This is a typical DVD ripping example; the input is a VOB file, the | |
1092 | output an AVI file with MPEG-4 video and MP3 audio. Note that in this | |
1093 | command we use B-frames so the MPEG-4 stream is DivX5 compatible, and | |
1094 | GOP size is 300 which means one intra frame every 10 seconds for 29.97fps | |
1095 | input video. Furthermore, the audio stream is MP3-encoded so you need | |
1096 | to enable LAME support by passing @code{--enable-libmp3lame} to configure. | |
1097 | The mapping is particularly useful for DVD transcoding | |
1098 | to get the desired audio language. | |
1099 | ||
1100 | NOTE: To see the supported input formats, use @code{avconv -formats}. | |
1101 | ||
1102 | @item | |
1103 | You can extract images from a video, or create a video from many images: | |
1104 | ||
1105 | For extracting images from a video: | |
1106 | @example | |
1107 | avconv -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg | |
1108 | @end example | |
1109 | ||
1110 | This will extract one video frame per second from the video and will | |
1111 | output them in files named @file{foo-001.jpeg}, @file{foo-002.jpeg}, | |
1112 | etc. Images will be rescaled to fit the new WxH values. | |
1113 | ||
1114 | If you want to extract just a limited number of frames, you can use the | |
1115 | above command in combination with the -vframes or -t option, or in | |
1116 | combination with -ss to start extracting from a certain point in time. | |
1117 | ||
1118 | For creating a video from many images: | |
1119 | @example | |
1120 | avconv -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi | |
1121 | @end example | |
1122 | ||
1123 | The syntax @code{foo-%03d.jpeg} specifies to use a decimal number | |
1124 | composed of three digits padded with zeroes to express the sequence | |
1125 | number. It is the same syntax supported by the C printf function, but | |
1126 | only formats accepting a normal integer are suitable. | |
1127 | ||
1128 | @item | |
1129 | You can put many streams of the same type in the output: | |
1130 | ||
1131 | @example | |
775a0b04 | 1132 | avconv -i test1.avi -i test2.avi -map 1:1 -map 1:0 -map 0:1 -map 0:0 -c copy -y test12.nut |
6291d7e4 AK |
1133 | @end example |
1134 | ||
775a0b04 DB |
1135 | The resulting output file @file{test12.nut} will contain the first four streams |
1136 | from the input files in reverse order. | |
6291d7e4 | 1137 | |
4fea8959 AK |
1138 | @item |
1139 | To force CBR video output: | |
1140 | @example | |
1141 | avconv -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v | |
1142 | @end example | |
1143 | ||
1144 | @item | |
1145 | The four options lmin, lmax, mblmin and mblmax use 'lambda' units, | |
1146 | but you may use the QP2LAMBDA constant to easily convert from 'q' units: | |
1147 | @example | |
1148 | avconv -i src.ext -lmax 21*QP2LAMBDA dst.ext | |
1149 | @end example | |
1150 | ||
6291d7e4 AK |
1151 | @end itemize |
1152 | @c man end EXAMPLES | |
1153 | ||
1154 | @include eval.texi | |
a17ab0e4 | 1155 | @include decoders.texi |
6291d7e4 AK |
1156 | @include encoders.texi |
1157 | @include demuxers.texi | |
1158 | @include muxers.texi | |
1159 | @include indevs.texi | |
1160 | @include outdevs.texi | |
1161 | @include protocols.texi | |
1162 | @include bitstream_filters.texi | |
1163 | @include filters.texi | |
1164 | @include metadata.texi | |
1165 | ||
1166 | @ignore | |
1167 | ||
1168 | @setfilename avconv | |
1169 | @settitle avconv video converter | |
1170 | ||
1171 | @c man begin SEEALSO | |
2e87b4c5 | 1172 | avplay(1), avprobe(1) and the Libav HTML documentation |
6291d7e4 AK |
1173 | @c man end |
1174 | ||
1175 | @c man begin AUTHORS | |
1176 | The Libav developers | |
1177 | @c man end | |
1178 | ||
1179 | @end ignore | |
1180 | ||
1181 | @bye |