annotate ffmpeg/doc/ffmpeg-devices.pod @ 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 =head1 NAME
yading@10 2
yading@10 3 ffmpeg-devices - FFmpeg devices
yading@10 4
yading@10 5 =head1 DESCRIPTION
yading@10 6
yading@10 7
yading@10 8 This document describes the input and output devices provided by the
yading@10 9 libavdevice library.
yading@10 10
yading@10 11
yading@10 12
yading@10 13 =head1 DEVICE OPTIONS
yading@10 14
yading@10 15
yading@10 16 The libavdevice library provides the same interface as
yading@10 17 libavformat. Namely, an input device is considered like a demuxer, and
yading@10 18 an output device like a muxer, and the interface and generic device
yading@10 19 options are the same provided by libavformat (see the ffmpeg-formats
yading@10 20 manual).
yading@10 21
yading@10 22 In addition each input or output device may support so-called private
yading@10 23 options, which are specific for that component.
yading@10 24
yading@10 25 Options may be set by specifying -I<option> I<value> in the
yading@10 26 FFmpeg tools, or by setting the value explicitly in the device
yading@10 27 C<AVFormatContext> options or using the F<libavutil/opt.h> API
yading@10 28 for programmatic use.
yading@10 29
yading@10 30
yading@10 31
yading@10 32 =head1 INPUT DEVICES
yading@10 33
yading@10 34
yading@10 35 Input devices are configured elements in FFmpeg which allow to access
yading@10 36 the data coming from a multimedia device attached to your system.
yading@10 37
yading@10 38 When you configure your FFmpeg build, all the supported input devices
yading@10 39 are enabled by default. You can list all available ones using the
yading@10 40 configure option "--list-indevs".
yading@10 41
yading@10 42 You can disable all the input devices using the configure option
yading@10 43 "--disable-indevs", and selectively enable an input device using the
yading@10 44 option "--enable-indev=I<INDEV>", or you can disable a particular
yading@10 45 input device using the option "--disable-indev=I<INDEV>".
yading@10 46
yading@10 47 The option "-formats" of the ff* tools will display the list of
yading@10 48 supported input devices (amongst the demuxers).
yading@10 49
yading@10 50 A description of the currently available input devices follows.
yading@10 51
yading@10 52
yading@10 53 =head2 alsa
yading@10 54
yading@10 55
yading@10 56 ALSA (Advanced Linux Sound Architecture) input device.
yading@10 57
yading@10 58 To enable this input device during configuration you need libasound
yading@10 59 installed on your system.
yading@10 60
yading@10 61 This device allows capturing from an ALSA device. The name of the
yading@10 62 device to capture has to be an ALSA card identifier.
yading@10 63
yading@10 64 An ALSA identifier has the syntax:
yading@10 65
yading@10 66 hw:<CARD>[,<DEV>[,<SUBDEV>]]
yading@10 67
yading@10 68
yading@10 69 where the I<DEV> and I<SUBDEV> components are optional.
yading@10 70
yading@10 71 The three arguments (in order: I<CARD>,I<DEV>,I<SUBDEV>)
yading@10 72 specify card number or identifier, device number and subdevice number
yading@10 73 (-1 means any).
yading@10 74
yading@10 75 To see the list of cards currently recognized by your system check the
yading@10 76 files F</proc/asound/cards> and F</proc/asound/devices>.
yading@10 77
yading@10 78 For example to capture with B<ffmpeg> from an ALSA device with
yading@10 79 card id 0, you may run the command:
yading@10 80
yading@10 81 ffmpeg -f alsa -i hw:0 alsaout.wav
yading@10 82
yading@10 83
yading@10 84 For more information see:
yading@10 85 E<lt>B<http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html>E<gt>
yading@10 86
yading@10 87
yading@10 88 =head2 bktr
yading@10 89
yading@10 90
yading@10 91 BSD video input device.
yading@10 92
yading@10 93
yading@10 94 =head2 dshow
yading@10 95
yading@10 96
yading@10 97 Windows DirectShow input device.
yading@10 98
yading@10 99 DirectShow support is enabled when FFmpeg is built with the mingw-w64 project.
yading@10 100 Currently only audio and video devices are supported.
yading@10 101
yading@10 102 Multiple devices may be opened as separate inputs, but they may also be
yading@10 103 opened on the same input, which should improve synchronism between them.
yading@10 104
yading@10 105 The input name should be in the format:
yading@10 106
yading@10 107
yading@10 108 <TYPE>=<NAME>[:<TYPE>=<NAME>]
yading@10 109
yading@10 110
yading@10 111 where I<TYPE> can be either I<audio> or I<video>,
yading@10 112 and I<NAME> is the device's name.
yading@10 113
yading@10 114
yading@10 115 =head3 Options
yading@10 116
yading@10 117
yading@10 118 If no options are specified, the device's defaults are used.
yading@10 119 If the device does not support the requested options, it will
yading@10 120 fail to open.
yading@10 121
yading@10 122
yading@10 123 =over 4
yading@10 124
yading@10 125
yading@10 126
yading@10 127 =item B<video_size>
yading@10 128
yading@10 129 Set the video size in the captured video.
yading@10 130
yading@10 131
yading@10 132 =item B<framerate>
yading@10 133
yading@10 134 Set the frame rate in the captured video.
yading@10 135
yading@10 136
yading@10 137 =item B<sample_rate>
yading@10 138
yading@10 139 Set the sample rate (in Hz) of the captured audio.
yading@10 140
yading@10 141
yading@10 142 =item B<sample_size>
yading@10 143
yading@10 144 Set the sample size (in bits) of the captured audio.
yading@10 145
yading@10 146
yading@10 147 =item B<channels>
yading@10 148
yading@10 149 Set the number of channels in the captured audio.
yading@10 150
yading@10 151
yading@10 152 =item B<list_devices>
yading@10 153
yading@10 154 If set to B<true>, print a list of devices and exit.
yading@10 155
yading@10 156
yading@10 157 =item B<list_options>
yading@10 158
yading@10 159 If set to B<true>, print a list of selected device's options
yading@10 160 and exit.
yading@10 161
yading@10 162
yading@10 163 =item B<video_device_number>
yading@10 164
yading@10 165 Set video device number for devices with same name (starts at 0,
yading@10 166 defaults to 0).
yading@10 167
yading@10 168
yading@10 169 =item B<audio_device_number>
yading@10 170
yading@10 171 Set audio device number for devices with same name (starts at 0,
yading@10 172 defaults to 0).
yading@10 173
yading@10 174
yading@10 175 =item B<pixel_format>
yading@10 176
yading@10 177 Select pixel format to be used by DirectShow. This may only be set when
yading@10 178 the video codec is not set or set to rawvideo.
yading@10 179
yading@10 180
yading@10 181 =item B<audio_buffer_size>
yading@10 182
yading@10 183 Set audio device buffer size in milliseconds (which can directly
yading@10 184 impact latency, depending on the device).
yading@10 185 Defaults to using the audio device's
yading@10 186 default buffer size (typically some multiple of 500ms).
yading@10 187 Setting this value too low can degrade performance.
yading@10 188 See also
yading@10 189 E<lt>B<http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx>E<gt>
yading@10 190
yading@10 191
yading@10 192 =back
yading@10 193
yading@10 194
yading@10 195
yading@10 196 =head3 Examples
yading@10 197
yading@10 198
yading@10 199
yading@10 200 =over 4
yading@10 201
yading@10 202
yading@10 203
yading@10 204 =item *
yading@10 205
yading@10 206 Print the list of DirectShow supported devices and exit:
yading@10 207
yading@10 208 $ ffmpeg -list_devices true -f dshow -i dummy
yading@10 209
yading@10 210
yading@10 211
yading@10 212 =item *
yading@10 213
yading@10 214 Open video device I<Camera>:
yading@10 215
yading@10 216 $ ffmpeg -f dshow -i video="Camera"
yading@10 217
yading@10 218
yading@10 219
yading@10 220 =item *
yading@10 221
yading@10 222 Open second video device with name I<Camera>:
yading@10 223
yading@10 224 $ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
yading@10 225
yading@10 226
yading@10 227
yading@10 228 =item *
yading@10 229
yading@10 230 Open video device I<Camera> and audio device I<Microphone>:
yading@10 231
yading@10 232 $ ffmpeg -f dshow -i video="Camera":audio="Microphone"
yading@10 233
yading@10 234
yading@10 235
yading@10 236 =item *
yading@10 237
yading@10 238 Print the list of supported options in selected device and exit:
yading@10 239
yading@10 240 $ ffmpeg -list_options true -f dshow -i video="Camera"
yading@10 241
yading@10 242
yading@10 243
yading@10 244 =back
yading@10 245
yading@10 246
yading@10 247
yading@10 248 =head2 dv1394
yading@10 249
yading@10 250
yading@10 251 Linux DV 1394 input device.
yading@10 252
yading@10 253
yading@10 254 =head2 fbdev
yading@10 255
yading@10 256
yading@10 257 Linux framebuffer input device.
yading@10 258
yading@10 259 The Linux framebuffer is a graphic hardware-independent abstraction
yading@10 260 layer to show graphics on a computer monitor, typically on the
yading@10 261 console. It is accessed through a file device node, usually
yading@10 262 F</dev/fb0>.
yading@10 263
yading@10 264 For more detailed information read the file
yading@10 265 Documentation/fb/framebuffer.txt included in the Linux source tree.
yading@10 266
yading@10 267 To record from the framebuffer device F</dev/fb0> with
yading@10 268 B<ffmpeg>:
yading@10 269
yading@10 270 ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
yading@10 271
yading@10 272
yading@10 273 You can take a single screenshot image with the command:
yading@10 274
yading@10 275 ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
yading@10 276
yading@10 277
yading@10 278 See also E<lt>B<http://linux-fbdev.sourceforge.net/>E<gt>, and fbset(1).
yading@10 279
yading@10 280
yading@10 281 =head2 iec61883
yading@10 282
yading@10 283
yading@10 284 FireWire DV/HDV input device using libiec61883.
yading@10 285
yading@10 286 To enable this input device, you need libiec61883, libraw1394 and
yading@10 287 libavc1394 installed on your system. Use the configure option
yading@10 288 C<--enable-libiec61883> to compile with the device enabled.
yading@10 289
yading@10 290 The iec61883 capture device supports capturing from a video device
yading@10 291 connected via IEEE1394 (FireWire), using libiec61883 and the new Linux
yading@10 292 FireWire stack (juju). This is the default DV/HDV input method in Linux
yading@10 293 Kernel 2.6.37 and later, since the old FireWire stack was removed.
yading@10 294
yading@10 295 Specify the FireWire port to be used as input file, or "auto"
yading@10 296 to choose the first port connected.
yading@10 297
yading@10 298
yading@10 299 =head3 Options
yading@10 300
yading@10 301
yading@10 302
yading@10 303 =over 4
yading@10 304
yading@10 305
yading@10 306
yading@10 307 =item B<dvtype>
yading@10 308
yading@10 309 Override autodetection of DV/HDV. This should only be used if auto
yading@10 310 detection does not work, or if usage of a different device type
yading@10 311 should be prohibited. Treating a DV device as HDV (or vice versa) will
yading@10 312 not work and result in undefined behavior.
yading@10 313 The values B<auto>, B<dv> and B<hdv> are supported.
yading@10 314
yading@10 315
yading@10 316 =item B<dvbuffer>
yading@10 317
yading@10 318 Set maxiumum size of buffer for incoming data, in frames. For DV, this
yading@10 319 is an exact value. For HDV, it is not frame exact, since HDV does
yading@10 320 not have a fixed frame size.
yading@10 321
yading@10 322
yading@10 323 =item B<dvguid>
yading@10 324
yading@10 325 Select the capture device by specifying it's GUID. Capturing will only
yading@10 326 be performed from the specified device and fails if no device with the
yading@10 327 given GUID is found. This is useful to select the input if multiple
yading@10 328 devices are connected at the same time.
yading@10 329 Look at /sys/bus/firewire/devices to find out the GUIDs.
yading@10 330
yading@10 331
yading@10 332 =back
yading@10 333
yading@10 334
yading@10 335
yading@10 336 =head3 Examples
yading@10 337
yading@10 338
yading@10 339
yading@10 340 =over 4
yading@10 341
yading@10 342
yading@10 343
yading@10 344 =item *
yading@10 345
yading@10 346 Grab and show the input of a FireWire DV/HDV device.
yading@10 347
yading@10 348 ffplay -f iec61883 -i auto
yading@10 349
yading@10 350
yading@10 351
yading@10 352 =item *
yading@10 353
yading@10 354 Grab and record the input of a FireWire DV/HDV device,
yading@10 355 using a packet buffer of 100000 packets if the source is HDV.
yading@10 356
yading@10 357 ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg
yading@10 358
yading@10 359
yading@10 360
yading@10 361 =back
yading@10 362
yading@10 363
yading@10 364
yading@10 365 =head2 jack
yading@10 366
yading@10 367
yading@10 368 JACK input device.
yading@10 369
yading@10 370 To enable this input device during configuration you need libjack
yading@10 371 installed on your system.
yading@10 372
yading@10 373 A JACK input device creates one or more JACK writable clients, one for
yading@10 374 each audio channel, with name I<client_name>:input_I<N>, where
yading@10 375 I<client_name> is the name provided by the application, and I<N>
yading@10 376 is a number which identifies the channel.
yading@10 377 Each writable client will send the acquired data to the FFmpeg input
yading@10 378 device.
yading@10 379
yading@10 380 Once you have created one or more JACK readable clients, you need to
yading@10 381 connect them to one or more JACK writable clients.
yading@10 382
yading@10 383 To connect or disconnect JACK clients you can use the B<jack_connect>
yading@10 384 and B<jack_disconnect> programs, or do it through a graphical interface,
yading@10 385 for example with B<qjackctl>.
yading@10 386
yading@10 387 To list the JACK clients and their properties you can invoke the command
yading@10 388 B<jack_lsp>.
yading@10 389
yading@10 390 Follows an example which shows how to capture a JACK readable client
yading@10 391 with B<ffmpeg>.
yading@10 392
yading@10 393 # Create a JACK writable client with name "ffmpeg".
yading@10 394 $ ffmpeg -f jack -i ffmpeg -y out.wav
yading@10 395
yading@10 396 # Start the sample jack_metro readable client.
yading@10 397 $ jack_metro -b 120 -d 0.2 -f 4000
yading@10 398
yading@10 399 # List the current JACK clients.
yading@10 400 $ jack_lsp -c
yading@10 401 system:capture_1
yading@10 402 system:capture_2
yading@10 403 system:playback_1
yading@10 404 system:playback_2
yading@10 405 ffmpeg:input_1
yading@10 406 metro:120_bpm
yading@10 407
yading@10 408 # Connect metro to the ffmpeg writable client.
yading@10 409 $ jack_connect metro:120_bpm ffmpeg:input_1
yading@10 410
yading@10 411
yading@10 412 For more information read:
yading@10 413 E<lt>B<http://jackaudio.org/>E<gt>
yading@10 414
yading@10 415
yading@10 416 =head2 lavfi
yading@10 417
yading@10 418
yading@10 419 Libavfilter input virtual device.
yading@10 420
yading@10 421 This input device reads data from the open output pads of a libavfilter
yading@10 422 filtergraph.
yading@10 423
yading@10 424 For each filtergraph open output, the input device will create a
yading@10 425 corresponding stream which is mapped to the generated output. Currently
yading@10 426 only video data is supported. The filtergraph is specified through the
yading@10 427 option B<graph>.
yading@10 428
yading@10 429
yading@10 430 =head3 Options
yading@10 431
yading@10 432
yading@10 433
yading@10 434 =over 4
yading@10 435
yading@10 436
yading@10 437
yading@10 438 =item B<graph>
yading@10 439
yading@10 440 Specify the filtergraph to use as input. Each video open output must be
yading@10 441 labelled by a unique string of the form "outI<N>", where I<N> is a
yading@10 442 number starting from 0 corresponding to the mapped input stream
yading@10 443 generated by the device.
yading@10 444 The first unlabelled output is automatically assigned to the "out0"
yading@10 445 label, but all the others need to be specified explicitly.
yading@10 446
yading@10 447 If not specified defaults to the filename specified for the input
yading@10 448 device.
yading@10 449
yading@10 450
yading@10 451 =item B<graph_file>
yading@10 452
yading@10 453 Set the filename of the filtergraph to be read and sent to the other
yading@10 454 filters. Syntax of the filtergraph is the same as the one specified by
yading@10 455 the option I<graph>.
yading@10 456
yading@10 457
yading@10 458 =back
yading@10 459
yading@10 460
yading@10 461
yading@10 462 =head3 Examples
yading@10 463
yading@10 464
yading@10 465
yading@10 466 =over 4
yading@10 467
yading@10 468
yading@10 469 =item *
yading@10 470
yading@10 471 Create a color video stream and play it back with B<ffplay>:
yading@10 472
yading@10 473 ffplay -f lavfi -graph "color=c=pink [out0]" dummy
yading@10 474
yading@10 475
yading@10 476
yading@10 477 =item *
yading@10 478
yading@10 479 As the previous example, but use filename for specifying the graph
yading@10 480 description, and omit the "out0" label:
yading@10 481
yading@10 482 ffplay -f lavfi color=c=pink
yading@10 483
yading@10 484
yading@10 485
yading@10 486 =item *
yading@10 487
yading@10 488 Create three different video test filtered sources and play them:
yading@10 489
yading@10 490 ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
yading@10 491
yading@10 492
yading@10 493
yading@10 494 =item *
yading@10 495
yading@10 496 Read an audio stream from a file using the amovie source and play it
yading@10 497 back with B<ffplay>:
yading@10 498
yading@10 499 ffplay -f lavfi "amovie=test.wav"
yading@10 500
yading@10 501
yading@10 502
yading@10 503 =item *
yading@10 504
yading@10 505 Read an audio stream and a video stream and play it back with
yading@10 506 B<ffplay>:
yading@10 507
yading@10 508 ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
yading@10 509
yading@10 510
yading@10 511
yading@10 512 =back
yading@10 513
yading@10 514
yading@10 515
yading@10 516 =head2 libdc1394
yading@10 517
yading@10 518
yading@10 519 IIDC1394 input device, based on libdc1394 and libraw1394.
yading@10 520
yading@10 521
yading@10 522 =head2 openal
yading@10 523
yading@10 524
yading@10 525 The OpenAL input device provides audio capture on all systems with a
yading@10 526 working OpenAL 1.1 implementation.
yading@10 527
yading@10 528 To enable this input device during configuration, you need OpenAL
yading@10 529 headers and libraries installed on your system, and need to configure
yading@10 530 FFmpeg with C<--enable-openal>.
yading@10 531
yading@10 532 OpenAL headers and libraries should be provided as part of your OpenAL
yading@10 533 implementation, or as an additional download (an SDK). Depending on your
yading@10 534 installation you may need to specify additional flags via the
yading@10 535 C<--extra-cflags> and C<--extra-ldflags> for allowing the build
yading@10 536 system to locate the OpenAL headers and libraries.
yading@10 537
yading@10 538 An incomplete list of OpenAL implementations follows:
yading@10 539
yading@10 540
yading@10 541 =over 4
yading@10 542
yading@10 543
yading@10 544 =item B<Creative>
yading@10 545
yading@10 546 The official Windows implementation, providing hardware acceleration
yading@10 547 with supported devices and software fallback.
yading@10 548 See E<lt>B<http://openal.org/>E<gt>.
yading@10 549
yading@10 550 =item B<OpenAL Soft>
yading@10 551
yading@10 552 Portable, open source (LGPL) software implementation. Includes
yading@10 553 backends for the most common sound APIs on the Windows, Linux,
yading@10 554 Solaris, and BSD operating systems.
yading@10 555 See E<lt>B<http://kcat.strangesoft.net/openal.html>E<gt>.
yading@10 556
yading@10 557 =item B<Apple>
yading@10 558
yading@10 559 OpenAL is part of Core Audio, the official Mac OS X Audio interface.
yading@10 560 See E<lt>B<http://developer.apple.com/technologies/mac/audio-and-video.html>E<gt>
yading@10 561
yading@10 562 =back
yading@10 563
yading@10 564
yading@10 565 This device allows to capture from an audio input device handled
yading@10 566 through OpenAL.
yading@10 567
yading@10 568 You need to specify the name of the device to capture in the provided
yading@10 569 filename. If the empty string is provided, the device will
yading@10 570 automatically select the default device. You can get the list of the
yading@10 571 supported devices by using the option I<list_devices>.
yading@10 572
yading@10 573
yading@10 574 =head3 Options
yading@10 575
yading@10 576
yading@10 577
yading@10 578 =over 4
yading@10 579
yading@10 580
yading@10 581
yading@10 582 =item B<channels>
yading@10 583
yading@10 584 Set the number of channels in the captured audio. Only the values
yading@10 585 B<1> (monaural) and B<2> (stereo) are currently supported.
yading@10 586 Defaults to B<2>.
yading@10 587
yading@10 588
yading@10 589 =item B<sample_size>
yading@10 590
yading@10 591 Set the sample size (in bits) of the captured audio. Only the values
yading@10 592 B<8> and B<16> are currently supported. Defaults to
yading@10 593 B<16>.
yading@10 594
yading@10 595
yading@10 596 =item B<sample_rate>
yading@10 597
yading@10 598 Set the sample rate (in Hz) of the captured audio.
yading@10 599 Defaults to B<44.1k>.
yading@10 600
yading@10 601
yading@10 602 =item B<list_devices>
yading@10 603
yading@10 604 If set to B<true>, print a list of devices and exit.
yading@10 605 Defaults to B<false>.
yading@10 606
yading@10 607
yading@10 608 =back
yading@10 609
yading@10 610
yading@10 611
yading@10 612 =head3 Examples
yading@10 613
yading@10 614
yading@10 615 Print the list of OpenAL supported devices and exit:
yading@10 616
yading@10 617 $ ffmpeg -list_devices true -f openal -i dummy out.ogg
yading@10 618
yading@10 619
yading@10 620 Capture from the OpenAL device F<DR-BT101 via PulseAudio>:
yading@10 621
yading@10 622 $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
yading@10 623
yading@10 624
yading@10 625 Capture from the default device (note the empty string '' as filename):
yading@10 626
yading@10 627 $ ffmpeg -f openal -i '' out.ogg
yading@10 628
yading@10 629
yading@10 630 Capture from two devices simultaneously, writing to two different files,
yading@10 631 within the same B<ffmpeg> command:
yading@10 632
yading@10 633 $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
yading@10 634
yading@10 635 Note: not all OpenAL implementations support multiple simultaneous capture -
yading@10 636 try the latest OpenAL Soft if the above does not work.
yading@10 637
yading@10 638
yading@10 639 =head2 oss
yading@10 640
yading@10 641
yading@10 642 Open Sound System input device.
yading@10 643
yading@10 644 The filename to provide to the input device is the device node
yading@10 645 representing the OSS input device, and is usually set to
yading@10 646 F</dev/dsp>.
yading@10 647
yading@10 648 For example to grab from F</dev/dsp> using B<ffmpeg> use the
yading@10 649 command:
yading@10 650
yading@10 651 ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
yading@10 652
yading@10 653
yading@10 654 For more information about OSS see:
yading@10 655 E<lt>B<http://manuals.opensound.com/usersguide/dsp.html>E<gt>
yading@10 656
yading@10 657
yading@10 658 =head2 pulse
yading@10 659
yading@10 660
yading@10 661 pulseaudio input device.
yading@10 662
yading@10 663 To enable this input device during configuration you need libpulse-simple
yading@10 664 installed in your system.
yading@10 665
yading@10 666 The filename to provide to the input device is a source device or the
yading@10 667 string "default"
yading@10 668
yading@10 669 To list the pulse source devices and their properties you can invoke
yading@10 670 the command B<pactl list sources>.
yading@10 671
yading@10 672
yading@10 673 ffmpeg -f pulse -i default /tmp/pulse.wav
yading@10 674
yading@10 675
yading@10 676
yading@10 677 =head3 I<server> AVOption
yading@10 678
yading@10 679
yading@10 680 The syntax is:
yading@10 681
yading@10 682 -server <server name>
yading@10 683
yading@10 684
yading@10 685 Connects to a specific server.
yading@10 686
yading@10 687
yading@10 688 =head3 I<name> AVOption
yading@10 689
yading@10 690
yading@10 691 The syntax is:
yading@10 692
yading@10 693 -name <application name>
yading@10 694
yading@10 695
yading@10 696 Specify the application name pulse will use when showing active clients,
yading@10 697 by default it is the LIBAVFORMAT_IDENT string
yading@10 698
yading@10 699
yading@10 700 =head3 I<stream_name> AVOption
yading@10 701
yading@10 702
yading@10 703 The syntax is:
yading@10 704
yading@10 705 -stream_name <stream name>
yading@10 706
yading@10 707
yading@10 708 Specify the stream name pulse will use when showing active streams,
yading@10 709 by default it is "record"
yading@10 710
yading@10 711
yading@10 712 =head3 I<sample_rate> AVOption
yading@10 713
yading@10 714
yading@10 715 The syntax is:
yading@10 716
yading@10 717 -sample_rate <samplerate>
yading@10 718
yading@10 719
yading@10 720 Specify the samplerate in Hz, by default 48kHz is used.
yading@10 721
yading@10 722
yading@10 723 =head3 I<channels> AVOption
yading@10 724
yading@10 725
yading@10 726 The syntax is:
yading@10 727
yading@10 728 -channels <N>
yading@10 729
yading@10 730
yading@10 731 Specify the channels in use, by default 2 (stereo) is set.
yading@10 732
yading@10 733
yading@10 734 =head3 I<frame_size> AVOption
yading@10 735
yading@10 736
yading@10 737 The syntax is:
yading@10 738
yading@10 739 -frame_size <bytes>
yading@10 740
yading@10 741
yading@10 742 Specify the number of byte per frame, by default it is set to 1024.
yading@10 743
yading@10 744
yading@10 745 =head3 I<fragment_size> AVOption
yading@10 746
yading@10 747
yading@10 748 The syntax is:
yading@10 749
yading@10 750 -fragment_size <bytes>
yading@10 751
yading@10 752
yading@10 753 Specify the minimal buffering fragment in pulseaudio, it will affect the
yading@10 754 audio latency. By default it is unset.
yading@10 755
yading@10 756
yading@10 757 =head2 sndio
yading@10 758
yading@10 759
yading@10 760 sndio input device.
yading@10 761
yading@10 762 To enable this input device during configuration you need libsndio
yading@10 763 installed on your system.
yading@10 764
yading@10 765 The filename to provide to the input device is the device node
yading@10 766 representing the sndio input device, and is usually set to
yading@10 767 F</dev/audio0>.
yading@10 768
yading@10 769 For example to grab from F</dev/audio0> using B<ffmpeg> use the
yading@10 770 command:
yading@10 771
yading@10 772 ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
yading@10 773
yading@10 774
yading@10 775
yading@10 776 =head2 video4linux2, v4l2
yading@10 777
yading@10 778
yading@10 779 Video4Linux2 input video device.
yading@10 780
yading@10 781 "v4l2" can be used as alias for "video4linux2".
yading@10 782
yading@10 783 If FFmpeg is built with v4l-utils support (by using the
yading@10 784 C<--enable-libv4l2> configure option), the device will always rely
yading@10 785 on libv4l2.
yading@10 786
yading@10 787 The name of the device to grab is a file device node, usually Linux
yading@10 788 systems tend to automatically create such nodes when the device
yading@10 789 (e.g. an USB webcam) is plugged into the system, and has a name of the
yading@10 790 kind F</dev/videoI<N>>, where I<N> is a number associated to
yading@10 791 the device.
yading@10 792
yading@10 793 Video4Linux2 devices usually support a limited set of
yading@10 794 I<width>xI<height> sizes and frame rates. You can check which are
yading@10 795 supported using B<-list_formats all> for Video4Linux2 devices.
yading@10 796 Some devices, like TV cards, support one or more standards. It is possible
yading@10 797 to list all the supported standards using B<-list_standards all>.
yading@10 798
yading@10 799 The time base for the timestamps is 1 microsecond. Depending on the kernel
yading@10 800 version and configuration, the timestamps may be derived from the real time
yading@10 801 clock (origin at the Unix Epoch) or the monotonic clock (origin usually at
yading@10 802 boot time, unaffected by NTP or manual changes to the clock). The
yading@10 803 B<-timestamps abs> or B<-ts abs> option can be used to force
yading@10 804 conversion into the real time clock.
yading@10 805
yading@10 806 Some usage examples of the video4linux2 device with B<ffmpeg>
yading@10 807 and B<ffplay>:
yading@10 808
yading@10 809 =over 4
yading@10 810
yading@10 811
yading@10 812 =item *
yading@10 813
yading@10 814 Grab and show the input of a video4linux2 device:
yading@10 815
yading@10 816 ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
yading@10 817
yading@10 818
yading@10 819
yading@10 820 =item *
yading@10 821
yading@10 822 Grab and record the input of a video4linux2 device, leave the
yading@10 823 frame rate and size as previously set:
yading@10 824
yading@10 825 ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
yading@10 826
yading@10 827
yading@10 828 =back
yading@10 829
yading@10 830
yading@10 831 For more information about Video4Linux, check E<lt>B<http://linuxtv.org/>E<gt>.
yading@10 832
yading@10 833
yading@10 834 =head3 Options
yading@10 835
yading@10 836
yading@10 837
yading@10 838 =over 4
yading@10 839
yading@10 840
yading@10 841 =item B<standard>
yading@10 842
yading@10 843 Set the standard. Must be the name of a supported standard. To get a
yading@10 844 list of the supported standards, use the B<list_standards>
yading@10 845 option.
yading@10 846
yading@10 847
yading@10 848 =item B<channel>
yading@10 849
yading@10 850 Set the input channel number. Default to -1, which means using the
yading@10 851 previously selected channel.
yading@10 852
yading@10 853
yading@10 854 =item B<video_size>
yading@10 855
yading@10 856 Set the video frame size. The argument must be a string in the form
yading@10 857 I<WIDTH>xI<HEIGHT> or a valid size abbreviation.
yading@10 858
yading@10 859
yading@10 860 =item B<pixel_format>
yading@10 861
yading@10 862 Select the pixel format (only valid for raw video input).
yading@10 863
yading@10 864
yading@10 865 =item B<input_format>
yading@10 866
yading@10 867 Set the preferred pixel format (for raw video) or a codec name.
yading@10 868 This option allows to select the input format, when several are
yading@10 869 available.
yading@10 870
yading@10 871
yading@10 872 =item B<framerate>
yading@10 873
yading@10 874 Set the preferred video frame rate.
yading@10 875
yading@10 876
yading@10 877 =item B<list_formats>
yading@10 878
yading@10 879 List available formats (supported pixel formats, codecs, and frame
yading@10 880 sizes) and exit.
yading@10 881
yading@10 882 Available values are:
yading@10 883
yading@10 884 =over 4
yading@10 885
yading@10 886
yading@10 887 =item B<all>
yading@10 888
yading@10 889 Show all available (compressed and non-compressed) formats.
yading@10 890
yading@10 891
yading@10 892 =item B<raw>
yading@10 893
yading@10 894 Show only raw video (non-compressed) formats.
yading@10 895
yading@10 896
yading@10 897 =item B<compressed>
yading@10 898
yading@10 899 Show only compressed formats.
yading@10 900
yading@10 901 =back
yading@10 902
yading@10 903
yading@10 904
yading@10 905 =item B<list_standards>
yading@10 906
yading@10 907 List supported standards and exit.
yading@10 908
yading@10 909 Available values are:
yading@10 910
yading@10 911 =over 4
yading@10 912
yading@10 913
yading@10 914 =item B<all>
yading@10 915
yading@10 916 Show all supported standards.
yading@10 917
yading@10 918 =back
yading@10 919
yading@10 920
yading@10 921
yading@10 922 =item B<timestamps, ts>
yading@10 923
yading@10 924 Set type of timestamps for grabbed frames.
yading@10 925
yading@10 926 Available values are:
yading@10 927
yading@10 928 =over 4
yading@10 929
yading@10 930
yading@10 931 =item B<default>
yading@10 932
yading@10 933 Use timestamps from the kernel.
yading@10 934
yading@10 935
yading@10 936 =item B<abs>
yading@10 937
yading@10 938 Use absolute timestamps (wall clock).
yading@10 939
yading@10 940
yading@10 941 =item B<mono2abs>
yading@10 942
yading@10 943 Force conversion from monotonic to absolute timestamps.
yading@10 944
yading@10 945 =back
yading@10 946
yading@10 947
yading@10 948 Default value is C<default>.
yading@10 949
yading@10 950 =back
yading@10 951
yading@10 952
yading@10 953
yading@10 954 =head2 vfwcap
yading@10 955
yading@10 956
yading@10 957 VfW (Video for Windows) capture input device.
yading@10 958
yading@10 959 The filename passed as input is the capture driver number, ranging from
yading@10 960 0 to 9. You may use "list" as filename to print a list of drivers. Any
yading@10 961 other filename will be interpreted as device number 0.
yading@10 962
yading@10 963
yading@10 964 =head2 x11grab
yading@10 965
yading@10 966
yading@10 967 X11 video input device.
yading@10 968
yading@10 969 This device allows to capture a region of an X11 display.
yading@10 970
yading@10 971 The filename passed as input has the syntax:
yading@10 972
yading@10 973 [<hostname>]:<display_number>.<screen_number>[+<x_offset>,<y_offset>]
yading@10 974
yading@10 975
yading@10 976 I<hostname>:I<display_number>.I<screen_number> specifies the
yading@10 977 X11 display name of the screen to grab from. I<hostname> can be
yading@10 978 omitted, and defaults to "localhost". The environment variable
yading@10 979 B<DISPLAY> contains the default display name.
yading@10 980
yading@10 981 I<x_offset> and I<y_offset> specify the offsets of the grabbed
yading@10 982 area with respect to the top-left border of the X11 screen. They
yading@10 983 default to 0.
yading@10 984
yading@10 985 Check the X11 documentation (e.g. man X) for more detailed information.
yading@10 986
yading@10 987 Use the B<dpyinfo> program for getting basic information about the
yading@10 988 properties of your X11 display (e.g. grep for "name" or "dimensions").
yading@10 989
yading@10 990 For example to grab from F<:0.0> using B<ffmpeg>:
yading@10 991
yading@10 992 ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpg
yading@10 993
yading@10 994
yading@10 995 Grab at position C<10,20>:
yading@10 996
yading@10 997 ffmpeg -f x11grab -r 25 -s cif -i :0.0+10,20 out.mpg
yading@10 998
yading@10 999
yading@10 1000
yading@10 1001 =head3 Options
yading@10 1002
yading@10 1003
yading@10 1004
yading@10 1005 =over 4
yading@10 1006
yading@10 1007
yading@10 1008 =item B<draw_mouse>
yading@10 1009
yading@10 1010 Specify whether to draw the mouse pointer. A value of C<0> specify
yading@10 1011 not to draw the pointer. Default value is C<1>.
yading@10 1012
yading@10 1013
yading@10 1014 =item B<follow_mouse>
yading@10 1015
yading@10 1016 Make the grabbed area follow the mouse. The argument can be
yading@10 1017 C<centered> or a number of pixels I<PIXELS>.
yading@10 1018
yading@10 1019 When it is specified with "centered", the grabbing region follows the mouse
yading@10 1020 pointer and keeps the pointer at the center of region; otherwise, the region
yading@10 1021 follows only when the mouse pointer reaches within I<PIXELS> (greater than
yading@10 1022 zero) to the edge of region.
yading@10 1023
yading@10 1024 For example:
yading@10 1025
yading@10 1026 ffmpeg -f x11grab -follow_mouse centered -r 25 -s cif -i :0.0 out.mpg
yading@10 1027
yading@10 1028
yading@10 1029 To follow only when the mouse pointer reaches within 100 pixels to edge:
yading@10 1030
yading@10 1031 ffmpeg -f x11grab -follow_mouse 100 -r 25 -s cif -i :0.0 out.mpg
yading@10 1032
yading@10 1033
yading@10 1034
yading@10 1035 =item B<framerate>
yading@10 1036
yading@10 1037 Set the grabbing frame rate. Default value is C<ntsc>,
yading@10 1038 corresponding to a frame rate of C<30000/1001>.
yading@10 1039
yading@10 1040
yading@10 1041 =item B<show_region>
yading@10 1042
yading@10 1043 Show grabbed region on screen.
yading@10 1044
yading@10 1045 If I<show_region> is specified with C<1>, then the grabbing
yading@10 1046 region will be indicated on screen. With this option, it is easy to
yading@10 1047 know what is being grabbed if only a portion of the screen is grabbed.
yading@10 1048
yading@10 1049 For example:
yading@10 1050
yading@10 1051 ffmpeg -f x11grab -show_region 1 -r 25 -s cif -i :0.0+10,20 out.mpg
yading@10 1052
yading@10 1053
yading@10 1054 With I<follow_mouse>:
yading@10 1055
yading@10 1056 ffmpeg -f x11grab -follow_mouse centered -show_region 1 -r 25 -s cif -i :0.0 out.mpg
yading@10 1057
yading@10 1058
yading@10 1059
yading@10 1060 =item B<video_size>
yading@10 1061
yading@10 1062 Set the video frame size. Default value is C<vga>.
yading@10 1063
yading@10 1064 =back
yading@10 1065
yading@10 1066
yading@10 1067
yading@10 1068 =head1 OUTPUT DEVICES
yading@10 1069
yading@10 1070
yading@10 1071 Output devices are configured elements in FFmpeg which allow to write
yading@10 1072 multimedia data to an output device attached to your system.
yading@10 1073
yading@10 1074 When you configure your FFmpeg build, all the supported output devices
yading@10 1075 are enabled by default. You can list all available ones using the
yading@10 1076 configure option "--list-outdevs".
yading@10 1077
yading@10 1078 You can disable all the output devices using the configure option
yading@10 1079 "--disable-outdevs", and selectively enable an output device using the
yading@10 1080 option "--enable-outdev=I<OUTDEV>", or you can disable a particular
yading@10 1081 input device using the option "--disable-outdev=I<OUTDEV>".
yading@10 1082
yading@10 1083 The option "-formats" of the ff* tools will display the list of
yading@10 1084 enabled output devices (amongst the muxers).
yading@10 1085
yading@10 1086 A description of the currently available output devices follows.
yading@10 1087
yading@10 1088
yading@10 1089 =head2 alsa
yading@10 1090
yading@10 1091
yading@10 1092 ALSA (Advanced Linux Sound Architecture) output device.
yading@10 1093
yading@10 1094
yading@10 1095 =head2 caca
yading@10 1096
yading@10 1097
yading@10 1098 CACA output device.
yading@10 1099
yading@10 1100 This output devices allows to show a video stream in CACA window.
yading@10 1101 Only one CACA window is allowed per application, so you can
yading@10 1102 have only one instance of this output device in an application.
yading@10 1103
yading@10 1104 To enable this output device you need to configure FFmpeg with
yading@10 1105 C<--enable-libcaca>.
yading@10 1106 libcaca is a graphics library that outputs text instead of pixels.
yading@10 1107
yading@10 1108 For more information about libcaca, check:
yading@10 1109 E<lt>B<http://caca.zoy.org/wiki/libcaca>E<gt>
yading@10 1110
yading@10 1111
yading@10 1112 =head3 Options
yading@10 1113
yading@10 1114
yading@10 1115
yading@10 1116 =over 4
yading@10 1117
yading@10 1118
yading@10 1119
yading@10 1120 =item B<window_title>
yading@10 1121
yading@10 1122 Set the CACA window title, if not specified default to the filename
yading@10 1123 specified for the output device.
yading@10 1124
yading@10 1125
yading@10 1126 =item B<window_size>
yading@10 1127
yading@10 1128 Set the CACA window size, can be a string of the form
yading@10 1129 I<width>xI<height> or a video size abbreviation.
yading@10 1130 If not specified it defaults to the size of the input video.
yading@10 1131
yading@10 1132
yading@10 1133 =item B<driver>
yading@10 1134
yading@10 1135 Set display driver.
yading@10 1136
yading@10 1137
yading@10 1138 =item B<algorithm>
yading@10 1139
yading@10 1140 Set dithering algorithm. Dithering is necessary
yading@10 1141 because the picture being rendered has usually far more colours than
yading@10 1142 the available palette.
yading@10 1143 The accepted values are listed with C<-list_dither algorithms>.
yading@10 1144
yading@10 1145
yading@10 1146 =item B<antialias>
yading@10 1147
yading@10 1148 Set antialias method. Antialiasing smoothens the rendered
yading@10 1149 image and avoids the commonly seen staircase effect.
yading@10 1150 The accepted values are listed with C<-list_dither antialiases>.
yading@10 1151
yading@10 1152
yading@10 1153 =item B<charset>
yading@10 1154
yading@10 1155 Set which characters are going to be used when rendering text.
yading@10 1156 The accepted values are listed with C<-list_dither charsets>.
yading@10 1157
yading@10 1158
yading@10 1159 =item B<color>
yading@10 1160
yading@10 1161 Set color to be used when rendering text.
yading@10 1162 The accepted values are listed with C<-list_dither colors>.
yading@10 1163
yading@10 1164
yading@10 1165 =item B<list_drivers>
yading@10 1166
yading@10 1167 If set to B<true>, print a list of available drivers and exit.
yading@10 1168
yading@10 1169
yading@10 1170 =item B<list_dither>
yading@10 1171
yading@10 1172 List available dither options related to the argument.
yading@10 1173 The argument must be one of C<algorithms>, C<antialiases>,
yading@10 1174 C<charsets>, C<colors>.
yading@10 1175
yading@10 1176 =back
yading@10 1177
yading@10 1178
yading@10 1179
yading@10 1180 =head3 Examples
yading@10 1181
yading@10 1182
yading@10 1183
yading@10 1184 =over 4
yading@10 1185
yading@10 1186
yading@10 1187 =item *
yading@10 1188
yading@10 1189 The following command shows the B<ffmpeg> output is an
yading@10 1190 CACA window, forcing its size to 80x25:
yading@10 1191
yading@10 1192 ffmpeg -i INPUT -vcodec rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
yading@10 1193
yading@10 1194
yading@10 1195
yading@10 1196 =item *
yading@10 1197
yading@10 1198 Show the list of available drivers and exit:
yading@10 1199
yading@10 1200 ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
yading@10 1201
yading@10 1202
yading@10 1203
yading@10 1204 =item *
yading@10 1205
yading@10 1206 Show the list of available dither colors and exit:
yading@10 1207
yading@10 1208 ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
yading@10 1209
yading@10 1210
yading@10 1211 =back
yading@10 1212
yading@10 1213
yading@10 1214
yading@10 1215 =head2 oss
yading@10 1216
yading@10 1217
yading@10 1218 OSS (Open Sound System) output device.
yading@10 1219
yading@10 1220
yading@10 1221 =head2 sdl
yading@10 1222
yading@10 1223
yading@10 1224 SDL (Simple DirectMedia Layer) output device.
yading@10 1225
yading@10 1226 This output devices allows to show a video stream in an SDL
yading@10 1227 window. Only one SDL window is allowed per application, so you can
yading@10 1228 have only one instance of this output device in an application.
yading@10 1229
yading@10 1230 To enable this output device you need libsdl installed on your system
yading@10 1231 when configuring your build.
yading@10 1232
yading@10 1233 For more information about SDL, check:
yading@10 1234 E<lt>B<http://www.libsdl.org/>E<gt>
yading@10 1235
yading@10 1236
yading@10 1237 =head3 Options
yading@10 1238
yading@10 1239
yading@10 1240
yading@10 1241 =over 4
yading@10 1242
yading@10 1243
yading@10 1244
yading@10 1245 =item B<window_title>
yading@10 1246
yading@10 1247 Set the SDL window title, if not specified default to the filename
yading@10 1248 specified for the output device.
yading@10 1249
yading@10 1250
yading@10 1251 =item B<icon_title>
yading@10 1252
yading@10 1253 Set the name of the iconified SDL window, if not specified it is set
yading@10 1254 to the same value of I<window_title>.
yading@10 1255
yading@10 1256
yading@10 1257 =item B<window_size>
yading@10 1258
yading@10 1259 Set the SDL window size, can be a string of the form
yading@10 1260 I<width>xI<height> or a video size abbreviation.
yading@10 1261 If not specified it defaults to the size of the input video,
yading@10 1262 downscaled according to the aspect ratio.
yading@10 1263
yading@10 1264 =back
yading@10 1265
yading@10 1266
yading@10 1267
yading@10 1268 =head3 Examples
yading@10 1269
yading@10 1270
yading@10 1271 The following command shows the B<ffmpeg> output is an
yading@10 1272 SDL window, forcing its size to the qcif format:
yading@10 1273
yading@10 1274 ffmpeg -i INPUT -vcodec rawvideo -pix_fmt yuv420p -window_size qcif -f sdl "SDL output"
yading@10 1275
yading@10 1276
yading@10 1277
yading@10 1278 =head2 sndio
yading@10 1279
yading@10 1280
yading@10 1281 sndio audio output device.
yading@10 1282
yading@10 1283
yading@10 1284
yading@10 1285 =head1 SEE ALSO
yading@10 1286
yading@10 1287
yading@10 1288
yading@10 1289 ffmpeg(1), ffplay(1), ffprobe(1), ffserver(1), libavdevice(3)
yading@10 1290
yading@10 1291
yading@10 1292 =head1 AUTHORS
yading@10 1293
yading@10 1294
yading@10 1295 The FFmpeg developers.
yading@10 1296
yading@10 1297 For details about the authorship, see the Git history of the project
yading@10 1298 (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
yading@10 1299 B<git log> in the FFmpeg source directory, or browsing the
yading@10 1300 online repository at E<lt>B<http://source.ffmpeg.org>E<gt>.
yading@10 1301
yading@10 1302 Maintainers for the specific components are listed in the file
yading@10 1303 F<MAINTAINERS> in the source code tree.
yading@10 1304
yading@10 1305
yading@10 1306