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

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents 6840f77b83aa
children
rev   line source
yading@10 1 @chapter Input Devices
yading@10 2 @c man begin INPUT DEVICES
yading@10 3
yading@10 4 Input devices are configured elements in FFmpeg which allow to access
yading@10 5 the data coming from a multimedia device attached to your system.
yading@10 6
yading@10 7 When you configure your FFmpeg build, all the supported input devices
yading@10 8 are enabled by default. You can list all available ones using the
yading@10 9 configure option "--list-indevs".
yading@10 10
yading@10 11 You can disable all the input devices using the configure option
yading@10 12 "--disable-indevs", and selectively enable an input device using the
yading@10 13 option "--enable-indev=@var{INDEV}", or you can disable a particular
yading@10 14 input device using the option "--disable-indev=@var{INDEV}".
yading@10 15
yading@10 16 The option "-formats" of the ff* tools will display the list of
yading@10 17 supported input devices (amongst the demuxers).
yading@10 18
yading@10 19 A description of the currently available input devices follows.
yading@10 20
yading@10 21 @section alsa
yading@10 22
yading@10 23 ALSA (Advanced Linux Sound Architecture) input device.
yading@10 24
yading@10 25 To enable this input device during configuration you need libasound
yading@10 26 installed on your system.
yading@10 27
yading@10 28 This device allows capturing from an ALSA device. The name of the
yading@10 29 device to capture has to be an ALSA card identifier.
yading@10 30
yading@10 31 An ALSA identifier has the syntax:
yading@10 32 @example
yading@10 33 hw:@var{CARD}[,@var{DEV}[,@var{SUBDEV}]]
yading@10 34 @end example
yading@10 35
yading@10 36 where the @var{DEV} and @var{SUBDEV} components are optional.
yading@10 37
yading@10 38 The three arguments (in order: @var{CARD},@var{DEV},@var{SUBDEV})
yading@10 39 specify card number or identifier, device number and subdevice number
yading@10 40 (-1 means any).
yading@10 41
yading@10 42 To see the list of cards currently recognized by your system check the
yading@10 43 files @file{/proc/asound/cards} and @file{/proc/asound/devices}.
yading@10 44
yading@10 45 For example to capture with @command{ffmpeg} from an ALSA device with
yading@10 46 card id 0, you may run the command:
yading@10 47 @example
yading@10 48 ffmpeg -f alsa -i hw:0 alsaout.wav
yading@10 49 @end example
yading@10 50
yading@10 51 For more information see:
yading@10 52 @url{http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html}
yading@10 53
yading@10 54 @section bktr
yading@10 55
yading@10 56 BSD video input device.
yading@10 57
yading@10 58 @section dshow
yading@10 59
yading@10 60 Windows DirectShow input device.
yading@10 61
yading@10 62 DirectShow support is enabled when FFmpeg is built with the mingw-w64 project.
yading@10 63 Currently only audio and video devices are supported.
yading@10 64
yading@10 65 Multiple devices may be opened as separate inputs, but they may also be
yading@10 66 opened on the same input, which should improve synchronism between them.
yading@10 67
yading@10 68 The input name should be in the format:
yading@10 69
yading@10 70 @example
yading@10 71 @var{TYPE}=@var{NAME}[:@var{TYPE}=@var{NAME}]
yading@10 72 @end example
yading@10 73
yading@10 74 where @var{TYPE} can be either @var{audio} or @var{video},
yading@10 75 and @var{NAME} is the device's name.
yading@10 76
yading@10 77 @subsection Options
yading@10 78
yading@10 79 If no options are specified, the device's defaults are used.
yading@10 80 If the device does not support the requested options, it will
yading@10 81 fail to open.
yading@10 82
yading@10 83 @table @option
yading@10 84
yading@10 85 @item video_size
yading@10 86 Set the video size in the captured video.
yading@10 87
yading@10 88 @item framerate
yading@10 89 Set the frame rate in the captured video.
yading@10 90
yading@10 91 @item sample_rate
yading@10 92 Set the sample rate (in Hz) of the captured audio.
yading@10 93
yading@10 94 @item sample_size
yading@10 95 Set the sample size (in bits) of the captured audio.
yading@10 96
yading@10 97 @item channels
yading@10 98 Set the number of channels in the captured audio.
yading@10 99
yading@10 100 @item list_devices
yading@10 101 If set to @option{true}, print a list of devices and exit.
yading@10 102
yading@10 103 @item list_options
yading@10 104 If set to @option{true}, print a list of selected device's options
yading@10 105 and exit.
yading@10 106
yading@10 107 @item video_device_number
yading@10 108 Set video device number for devices with same name (starts at 0,
yading@10 109 defaults to 0).
yading@10 110
yading@10 111 @item audio_device_number
yading@10 112 Set audio device number for devices with same name (starts at 0,
yading@10 113 defaults to 0).
yading@10 114
yading@10 115 @item pixel_format
yading@10 116 Select pixel format to be used by DirectShow. This may only be set when
yading@10 117 the video codec is not set or set to rawvideo.
yading@10 118
yading@10 119 @item audio_buffer_size
yading@10 120 Set audio device buffer size in milliseconds (which can directly
yading@10 121 impact latency, depending on the device).
yading@10 122 Defaults to using the audio device's
yading@10 123 default buffer size (typically some multiple of 500ms).
yading@10 124 Setting this value too low can degrade performance.
yading@10 125 See also
yading@10 126 @url{http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx}
yading@10 127
yading@10 128 @end table
yading@10 129
yading@10 130 @subsection Examples
yading@10 131
yading@10 132 @itemize
yading@10 133
yading@10 134 @item
yading@10 135 Print the list of DirectShow supported devices and exit:
yading@10 136 @example
yading@10 137 $ ffmpeg -list_devices true -f dshow -i dummy
yading@10 138 @end example
yading@10 139
yading@10 140 @item
yading@10 141 Open video device @var{Camera}:
yading@10 142 @example
yading@10 143 $ ffmpeg -f dshow -i video="Camera"
yading@10 144 @end example
yading@10 145
yading@10 146 @item
yading@10 147 Open second video device with name @var{Camera}:
yading@10 148 @example
yading@10 149 $ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
yading@10 150 @end example
yading@10 151
yading@10 152 @item
yading@10 153 Open video device @var{Camera} and audio device @var{Microphone}:
yading@10 154 @example
yading@10 155 $ ffmpeg -f dshow -i video="Camera":audio="Microphone"
yading@10 156 @end example
yading@10 157
yading@10 158 @item
yading@10 159 Print the list of supported options in selected device and exit:
yading@10 160 @example
yading@10 161 $ ffmpeg -list_options true -f dshow -i video="Camera"
yading@10 162 @end example
yading@10 163
yading@10 164 @end itemize
yading@10 165
yading@10 166 @section dv1394
yading@10 167
yading@10 168 Linux DV 1394 input device.
yading@10 169
yading@10 170 @section fbdev
yading@10 171
yading@10 172 Linux framebuffer input device.
yading@10 173
yading@10 174 The Linux framebuffer is a graphic hardware-independent abstraction
yading@10 175 layer to show graphics on a computer monitor, typically on the
yading@10 176 console. It is accessed through a file device node, usually
yading@10 177 @file{/dev/fb0}.
yading@10 178
yading@10 179 For more detailed information read the file
yading@10 180 Documentation/fb/framebuffer.txt included in the Linux source tree.
yading@10 181
yading@10 182 To record from the framebuffer device @file{/dev/fb0} with
yading@10 183 @command{ffmpeg}:
yading@10 184 @example
yading@10 185 ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
yading@10 186 @end example
yading@10 187
yading@10 188 You can take a single screenshot image with the command:
yading@10 189 @example
yading@10 190 ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
yading@10 191 @end example
yading@10 192
yading@10 193 See also @url{http://linux-fbdev.sourceforge.net/}, and fbset(1).
yading@10 194
yading@10 195 @section iec61883
yading@10 196
yading@10 197 FireWire DV/HDV input device using libiec61883.
yading@10 198
yading@10 199 To enable this input device, you need libiec61883, libraw1394 and
yading@10 200 libavc1394 installed on your system. Use the configure option
yading@10 201 @code{--enable-libiec61883} to compile with the device enabled.
yading@10 202
yading@10 203 The iec61883 capture device supports capturing from a video device
yading@10 204 connected via IEEE1394 (FireWire), using libiec61883 and the new Linux
yading@10 205 FireWire stack (juju). This is the default DV/HDV input method in Linux
yading@10 206 Kernel 2.6.37 and later, since the old FireWire stack was removed.
yading@10 207
yading@10 208 Specify the FireWire port to be used as input file, or "auto"
yading@10 209 to choose the first port connected.
yading@10 210
yading@10 211 @subsection Options
yading@10 212
yading@10 213 @table @option
yading@10 214
yading@10 215 @item dvtype
yading@10 216 Override autodetection of DV/HDV. This should only be used if auto
yading@10 217 detection does not work, or if usage of a different device type
yading@10 218 should be prohibited. Treating a DV device as HDV (or vice versa) will
yading@10 219 not work and result in undefined behavior.
yading@10 220 The values @option{auto}, @option{dv} and @option{hdv} are supported.
yading@10 221
yading@10 222 @item dvbuffer
yading@10 223 Set maxiumum size of buffer for incoming data, in frames. For DV, this
yading@10 224 is an exact value. For HDV, it is not frame exact, since HDV does
yading@10 225 not have a fixed frame size.
yading@10 226
yading@10 227 @item dvguid
yading@10 228 Select the capture device by specifying it's GUID. Capturing will only
yading@10 229 be performed from the specified device and fails if no device with the
yading@10 230 given GUID is found. This is useful to select the input if multiple
yading@10 231 devices are connected at the same time.
yading@10 232 Look at /sys/bus/firewire/devices to find out the GUIDs.
yading@10 233
yading@10 234 @end table
yading@10 235
yading@10 236 @subsection Examples
yading@10 237
yading@10 238 @itemize
yading@10 239
yading@10 240 @item
yading@10 241 Grab and show the input of a FireWire DV/HDV device.
yading@10 242 @example
yading@10 243 ffplay -f iec61883 -i auto
yading@10 244 @end example
yading@10 245
yading@10 246 @item
yading@10 247 Grab and record the input of a FireWire DV/HDV device,
yading@10 248 using a packet buffer of 100000 packets if the source is HDV.
yading@10 249 @example
yading@10 250 ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg
yading@10 251 @end example
yading@10 252
yading@10 253 @end itemize
yading@10 254
yading@10 255 @section jack
yading@10 256
yading@10 257 JACK input device.
yading@10 258
yading@10 259 To enable this input device during configuration you need libjack
yading@10 260 installed on your system.
yading@10 261
yading@10 262 A JACK input device creates one or more JACK writable clients, one for
yading@10 263 each audio channel, with name @var{client_name}:input_@var{N}, where
yading@10 264 @var{client_name} is the name provided by the application, and @var{N}
yading@10 265 is a number which identifies the channel.
yading@10 266 Each writable client will send the acquired data to the FFmpeg input
yading@10 267 device.
yading@10 268
yading@10 269 Once you have created one or more JACK readable clients, you need to
yading@10 270 connect them to one or more JACK writable clients.
yading@10 271
yading@10 272 To connect or disconnect JACK clients you can use the @command{jack_connect}
yading@10 273 and @command{jack_disconnect} programs, or do it through a graphical interface,
yading@10 274 for example with @command{qjackctl}.
yading@10 275
yading@10 276 To list the JACK clients and their properties you can invoke the command
yading@10 277 @command{jack_lsp}.
yading@10 278
yading@10 279 Follows an example which shows how to capture a JACK readable client
yading@10 280 with @command{ffmpeg}.
yading@10 281 @example
yading@10 282 # Create a JACK writable client with name "ffmpeg".
yading@10 283 $ ffmpeg -f jack -i ffmpeg -y out.wav
yading@10 284
yading@10 285 # Start the sample jack_metro readable client.
yading@10 286 $ jack_metro -b 120 -d 0.2 -f 4000
yading@10 287
yading@10 288 # List the current JACK clients.
yading@10 289 $ jack_lsp -c
yading@10 290 system:capture_1
yading@10 291 system:capture_2
yading@10 292 system:playback_1
yading@10 293 system:playback_2
yading@10 294 ffmpeg:input_1
yading@10 295 metro:120_bpm
yading@10 296
yading@10 297 # Connect metro to the ffmpeg writable client.
yading@10 298 $ jack_connect metro:120_bpm ffmpeg:input_1
yading@10 299 @end example
yading@10 300
yading@10 301 For more information read:
yading@10 302 @url{http://jackaudio.org/}
yading@10 303
yading@10 304 @section lavfi
yading@10 305
yading@10 306 Libavfilter input virtual device.
yading@10 307
yading@10 308 This input device reads data from the open output pads of a libavfilter
yading@10 309 filtergraph.
yading@10 310
yading@10 311 For each filtergraph open output, the input device will create a
yading@10 312 corresponding stream which is mapped to the generated output. Currently
yading@10 313 only video data is supported. The filtergraph is specified through the
yading@10 314 option @option{graph}.
yading@10 315
yading@10 316 @subsection Options
yading@10 317
yading@10 318 @table @option
yading@10 319
yading@10 320 @item graph
yading@10 321 Specify the filtergraph to use as input. Each video open output must be
yading@10 322 labelled by a unique string of the form "out@var{N}", where @var{N} is a
yading@10 323 number starting from 0 corresponding to the mapped input stream
yading@10 324 generated by the device.
yading@10 325 The first unlabelled output is automatically assigned to the "out0"
yading@10 326 label, but all the others need to be specified explicitly.
yading@10 327
yading@10 328 If not specified defaults to the filename specified for the input
yading@10 329 device.
yading@10 330
yading@10 331 @item graph_file
yading@10 332 Set the filename of the filtergraph to be read and sent to the other
yading@10 333 filters. Syntax of the filtergraph is the same as the one specified by
yading@10 334 the option @var{graph}.
yading@10 335
yading@10 336 @end table
yading@10 337
yading@10 338 @subsection Examples
yading@10 339
yading@10 340 @itemize
yading@10 341 @item
yading@10 342 Create a color video stream and play it back with @command{ffplay}:
yading@10 343 @example
yading@10 344 ffplay -f lavfi -graph "color=c=pink [out0]" dummy
yading@10 345 @end example
yading@10 346
yading@10 347 @item
yading@10 348 As the previous example, but use filename for specifying the graph
yading@10 349 description, and omit the "out0" label:
yading@10 350 @example
yading@10 351 ffplay -f lavfi color=c=pink
yading@10 352 @end example
yading@10 353
yading@10 354 @item
yading@10 355 Create three different video test filtered sources and play them:
yading@10 356 @example
yading@10 357 ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
yading@10 358 @end example
yading@10 359
yading@10 360 @item
yading@10 361 Read an audio stream from a file using the amovie source and play it
yading@10 362 back with @command{ffplay}:
yading@10 363 @example
yading@10 364 ffplay -f lavfi "amovie=test.wav"
yading@10 365 @end example
yading@10 366
yading@10 367 @item
yading@10 368 Read an audio stream and a video stream and play it back with
yading@10 369 @command{ffplay}:
yading@10 370 @example
yading@10 371 ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
yading@10 372 @end example
yading@10 373
yading@10 374 @end itemize
yading@10 375
yading@10 376 @section libdc1394
yading@10 377
yading@10 378 IIDC1394 input device, based on libdc1394 and libraw1394.
yading@10 379
yading@10 380 @section openal
yading@10 381
yading@10 382 The OpenAL input device provides audio capture on all systems with a
yading@10 383 working OpenAL 1.1 implementation.
yading@10 384
yading@10 385 To enable this input device during configuration, you need OpenAL
yading@10 386 headers and libraries installed on your system, and need to configure
yading@10 387 FFmpeg with @code{--enable-openal}.
yading@10 388
yading@10 389 OpenAL headers and libraries should be provided as part of your OpenAL
yading@10 390 implementation, or as an additional download (an SDK). Depending on your
yading@10 391 installation you may need to specify additional flags via the
yading@10 392 @code{--extra-cflags} and @code{--extra-ldflags} for allowing the build
yading@10 393 system to locate the OpenAL headers and libraries.
yading@10 394
yading@10 395 An incomplete list of OpenAL implementations follows:
yading@10 396
yading@10 397 @table @strong
yading@10 398 @item Creative
yading@10 399 The official Windows implementation, providing hardware acceleration
yading@10 400 with supported devices and software fallback.
yading@10 401 See @url{http://openal.org/}.
yading@10 402 @item OpenAL Soft
yading@10 403 Portable, open source (LGPL) software implementation. Includes
yading@10 404 backends for the most common sound APIs on the Windows, Linux,
yading@10 405 Solaris, and BSD operating systems.
yading@10 406 See @url{http://kcat.strangesoft.net/openal.html}.
yading@10 407 @item Apple
yading@10 408 OpenAL is part of Core Audio, the official Mac OS X Audio interface.
yading@10 409 See @url{http://developer.apple.com/technologies/mac/audio-and-video.html}
yading@10 410 @end table
yading@10 411
yading@10 412 This device allows to capture from an audio input device handled
yading@10 413 through OpenAL.
yading@10 414
yading@10 415 You need to specify the name of the device to capture in the provided
yading@10 416 filename. If the empty string is provided, the device will
yading@10 417 automatically select the default device. You can get the list of the
yading@10 418 supported devices by using the option @var{list_devices}.
yading@10 419
yading@10 420 @subsection Options
yading@10 421
yading@10 422 @table @option
yading@10 423
yading@10 424 @item channels
yading@10 425 Set the number of channels in the captured audio. Only the values
yading@10 426 @option{1} (monaural) and @option{2} (stereo) are currently supported.
yading@10 427 Defaults to @option{2}.
yading@10 428
yading@10 429 @item sample_size
yading@10 430 Set the sample size (in bits) of the captured audio. Only the values
yading@10 431 @option{8} and @option{16} are currently supported. Defaults to
yading@10 432 @option{16}.
yading@10 433
yading@10 434 @item sample_rate
yading@10 435 Set the sample rate (in Hz) of the captured audio.
yading@10 436 Defaults to @option{44.1k}.
yading@10 437
yading@10 438 @item list_devices
yading@10 439 If set to @option{true}, print a list of devices and exit.
yading@10 440 Defaults to @option{false}.
yading@10 441
yading@10 442 @end table
yading@10 443
yading@10 444 @subsection Examples
yading@10 445
yading@10 446 Print the list of OpenAL supported devices and exit:
yading@10 447 @example
yading@10 448 $ ffmpeg -list_devices true -f openal -i dummy out.ogg
yading@10 449 @end example
yading@10 450
yading@10 451 Capture from the OpenAL device @file{DR-BT101 via PulseAudio}:
yading@10 452 @example
yading@10 453 $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
yading@10 454 @end example
yading@10 455
yading@10 456 Capture from the default device (note the empty string '' as filename):
yading@10 457 @example
yading@10 458 $ ffmpeg -f openal -i '' out.ogg
yading@10 459 @end example
yading@10 460
yading@10 461 Capture from two devices simultaneously, writing to two different files,
yading@10 462 within the same @command{ffmpeg} command:
yading@10 463 @example
yading@10 464 $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
yading@10 465 @end example
yading@10 466 Note: not all OpenAL implementations support multiple simultaneous capture -
yading@10 467 try the latest OpenAL Soft if the above does not work.
yading@10 468
yading@10 469 @section oss
yading@10 470
yading@10 471 Open Sound System input device.
yading@10 472
yading@10 473 The filename to provide to the input device is the device node
yading@10 474 representing the OSS input device, and is usually set to
yading@10 475 @file{/dev/dsp}.
yading@10 476
yading@10 477 For example to grab from @file{/dev/dsp} using @command{ffmpeg} use the
yading@10 478 command:
yading@10 479 @example
yading@10 480 ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
yading@10 481 @end example
yading@10 482
yading@10 483 For more information about OSS see:
yading@10 484 @url{http://manuals.opensound.com/usersguide/dsp.html}
yading@10 485
yading@10 486 @section pulse
yading@10 487
yading@10 488 pulseaudio input device.
yading@10 489
yading@10 490 To enable this input device during configuration you need libpulse-simple
yading@10 491 installed in your system.
yading@10 492
yading@10 493 The filename to provide to the input device is a source device or the
yading@10 494 string "default"
yading@10 495
yading@10 496 To list the pulse source devices and their properties you can invoke
yading@10 497 the command @command{pactl list sources}.
yading@10 498
yading@10 499 @example
yading@10 500 ffmpeg -f pulse -i default /tmp/pulse.wav
yading@10 501 @end example
yading@10 502
yading@10 503 @subsection @var{server} AVOption
yading@10 504
yading@10 505 The syntax is:
yading@10 506 @example
yading@10 507 -server @var{server name}
yading@10 508 @end example
yading@10 509
yading@10 510 Connects to a specific server.
yading@10 511
yading@10 512 @subsection @var{name} AVOption
yading@10 513
yading@10 514 The syntax is:
yading@10 515 @example
yading@10 516 -name @var{application name}
yading@10 517 @end example
yading@10 518
yading@10 519 Specify the application name pulse will use when showing active clients,
yading@10 520 by default it is the LIBAVFORMAT_IDENT string
yading@10 521
yading@10 522 @subsection @var{stream_name} AVOption
yading@10 523
yading@10 524 The syntax is:
yading@10 525 @example
yading@10 526 -stream_name @var{stream name}
yading@10 527 @end example
yading@10 528
yading@10 529 Specify the stream name pulse will use when showing active streams,
yading@10 530 by default it is "record"
yading@10 531
yading@10 532 @subsection @var{sample_rate} AVOption
yading@10 533
yading@10 534 The syntax is:
yading@10 535 @example
yading@10 536 -sample_rate @var{samplerate}
yading@10 537 @end example
yading@10 538
yading@10 539 Specify the samplerate in Hz, by default 48kHz is used.
yading@10 540
yading@10 541 @subsection @var{channels} AVOption
yading@10 542
yading@10 543 The syntax is:
yading@10 544 @example
yading@10 545 -channels @var{N}
yading@10 546 @end example
yading@10 547
yading@10 548 Specify the channels in use, by default 2 (stereo) is set.
yading@10 549
yading@10 550 @subsection @var{frame_size} AVOption
yading@10 551
yading@10 552 The syntax is:
yading@10 553 @example
yading@10 554 -frame_size @var{bytes}
yading@10 555 @end example
yading@10 556
yading@10 557 Specify the number of byte per frame, by default it is set to 1024.
yading@10 558
yading@10 559 @subsection @var{fragment_size} AVOption
yading@10 560
yading@10 561 The syntax is:
yading@10 562 @example
yading@10 563 -fragment_size @var{bytes}
yading@10 564 @end example
yading@10 565
yading@10 566 Specify the minimal buffering fragment in pulseaudio, it will affect the
yading@10 567 audio latency. By default it is unset.
yading@10 568
yading@10 569 @section sndio
yading@10 570
yading@10 571 sndio input device.
yading@10 572
yading@10 573 To enable this input device during configuration you need libsndio
yading@10 574 installed on your system.
yading@10 575
yading@10 576 The filename to provide to the input device is the device node
yading@10 577 representing the sndio input device, and is usually set to
yading@10 578 @file{/dev/audio0}.
yading@10 579
yading@10 580 For example to grab from @file{/dev/audio0} using @command{ffmpeg} use the
yading@10 581 command:
yading@10 582 @example
yading@10 583 ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
yading@10 584 @end example
yading@10 585
yading@10 586 @section video4linux2, v4l2
yading@10 587
yading@10 588 Video4Linux2 input video device.
yading@10 589
yading@10 590 "v4l2" can be used as alias for "video4linux2".
yading@10 591
yading@10 592 If FFmpeg is built with v4l-utils support (by using the
yading@10 593 @code{--enable-libv4l2} configure option), the device will always rely
yading@10 594 on libv4l2.
yading@10 595
yading@10 596 The name of the device to grab is a file device node, usually Linux
yading@10 597 systems tend to automatically create such nodes when the device
yading@10 598 (e.g. an USB webcam) is plugged into the system, and has a name of the
yading@10 599 kind @file{/dev/video@var{N}}, where @var{N} is a number associated to
yading@10 600 the device.
yading@10 601
yading@10 602 Video4Linux2 devices usually support a limited set of
yading@10 603 @var{width}x@var{height} sizes and frame rates. You can check which are
yading@10 604 supported using @command{-list_formats all} for Video4Linux2 devices.
yading@10 605 Some devices, like TV cards, support one or more standards. It is possible
yading@10 606 to list all the supported standards using @command{-list_standards all}.
yading@10 607
yading@10 608 The time base for the timestamps is 1 microsecond. Depending on the kernel
yading@10 609 version and configuration, the timestamps may be derived from the real time
yading@10 610 clock (origin at the Unix Epoch) or the monotonic clock (origin usually at
yading@10 611 boot time, unaffected by NTP or manual changes to the clock). The
yading@10 612 @option{-timestamps abs} or @option{-ts abs} option can be used to force
yading@10 613 conversion into the real time clock.
yading@10 614
yading@10 615 Some usage examples of the video4linux2 device with @command{ffmpeg}
yading@10 616 and @command{ffplay}:
yading@10 617 @itemize
yading@10 618 @item
yading@10 619 Grab and show the input of a video4linux2 device:
yading@10 620 @example
yading@10 621 ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
yading@10 622 @end example
yading@10 623
yading@10 624 @item
yading@10 625 Grab and record the input of a video4linux2 device, leave the
yading@10 626 frame rate and size as previously set:
yading@10 627 @example
yading@10 628 ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
yading@10 629 @end example
yading@10 630 @end itemize
yading@10 631
yading@10 632 For more information about Video4Linux, check @url{http://linuxtv.org/}.
yading@10 633
yading@10 634 @subsection Options
yading@10 635
yading@10 636 @table @option
yading@10 637 @item standard
yading@10 638 Set the standard. Must be the name of a supported standard. To get a
yading@10 639 list of the supported standards, use the @option{list_standards}
yading@10 640 option.
yading@10 641
yading@10 642 @item channel
yading@10 643 Set the input channel number. Default to -1, which means using the
yading@10 644 previously selected channel.
yading@10 645
yading@10 646 @item video_size
yading@10 647 Set the video frame size. The argument must be a string in the form
yading@10 648 @var{WIDTH}x@var{HEIGHT} or a valid size abbreviation.
yading@10 649
yading@10 650 @item pixel_format
yading@10 651 Select the pixel format (only valid for raw video input).
yading@10 652
yading@10 653 @item input_format
yading@10 654 Set the preferred pixel format (for raw video) or a codec name.
yading@10 655 This option allows to select the input format, when several are
yading@10 656 available.
yading@10 657
yading@10 658 @item framerate
yading@10 659 Set the preferred video frame rate.
yading@10 660
yading@10 661 @item list_formats
yading@10 662 List available formats (supported pixel formats, codecs, and frame
yading@10 663 sizes) and exit.
yading@10 664
yading@10 665 Available values are:
yading@10 666 @table @samp
yading@10 667 @item all
yading@10 668 Show all available (compressed and non-compressed) formats.
yading@10 669
yading@10 670 @item raw
yading@10 671 Show only raw video (non-compressed) formats.
yading@10 672
yading@10 673 @item compressed
yading@10 674 Show only compressed formats.
yading@10 675 @end table
yading@10 676
yading@10 677 @item list_standards
yading@10 678 List supported standards and exit.
yading@10 679
yading@10 680 Available values are:
yading@10 681 @table @samp
yading@10 682 @item all
yading@10 683 Show all supported standards.
yading@10 684 @end table
yading@10 685
yading@10 686 @item timestamps, ts
yading@10 687 Set type of timestamps for grabbed frames.
yading@10 688
yading@10 689 Available values are:
yading@10 690 @table @samp
yading@10 691 @item default
yading@10 692 Use timestamps from the kernel.
yading@10 693
yading@10 694 @item abs
yading@10 695 Use absolute timestamps (wall clock).
yading@10 696
yading@10 697 @item mono2abs
yading@10 698 Force conversion from monotonic to absolute timestamps.
yading@10 699 @end table
yading@10 700
yading@10 701 Default value is @code{default}.
yading@10 702 @end table
yading@10 703
yading@10 704 @section vfwcap
yading@10 705
yading@10 706 VfW (Video for Windows) capture input device.
yading@10 707
yading@10 708 The filename passed as input is the capture driver number, ranging from
yading@10 709 0 to 9. You may use "list" as filename to print a list of drivers. Any
yading@10 710 other filename will be interpreted as device number 0.
yading@10 711
yading@10 712 @section x11grab
yading@10 713
yading@10 714 X11 video input device.
yading@10 715
yading@10 716 This device allows to capture a region of an X11 display.
yading@10 717
yading@10 718 The filename passed as input has the syntax:
yading@10 719 @example
yading@10 720 [@var{hostname}]:@var{display_number}.@var{screen_number}[+@var{x_offset},@var{y_offset}]
yading@10 721 @end example
yading@10 722
yading@10 723 @var{hostname}:@var{display_number}.@var{screen_number} specifies the
yading@10 724 X11 display name of the screen to grab from. @var{hostname} can be
yading@10 725 omitted, and defaults to "localhost". The environment variable
yading@10 726 @env{DISPLAY} contains the default display name.
yading@10 727
yading@10 728 @var{x_offset} and @var{y_offset} specify the offsets of the grabbed
yading@10 729 area with respect to the top-left border of the X11 screen. They
yading@10 730 default to 0.
yading@10 731
yading@10 732 Check the X11 documentation (e.g. man X) for more detailed information.
yading@10 733
yading@10 734 Use the @command{dpyinfo} program for getting basic information about the
yading@10 735 properties of your X11 display (e.g. grep for "name" or "dimensions").
yading@10 736
yading@10 737 For example to grab from @file{:0.0} using @command{ffmpeg}:
yading@10 738 @example
yading@10 739 ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpg
yading@10 740 @end example
yading@10 741
yading@10 742 Grab at position @code{10,20}:
yading@10 743 @example
yading@10 744 ffmpeg -f x11grab -r 25 -s cif -i :0.0+10,20 out.mpg
yading@10 745 @end example
yading@10 746
yading@10 747 @subsection Options
yading@10 748
yading@10 749 @table @option
yading@10 750 @item draw_mouse
yading@10 751 Specify whether to draw the mouse pointer. A value of @code{0} specify
yading@10 752 not to draw the pointer. Default value is @code{1}.
yading@10 753
yading@10 754 @item follow_mouse
yading@10 755 Make the grabbed area follow the mouse. The argument can be
yading@10 756 @code{centered} or a number of pixels @var{PIXELS}.
yading@10 757
yading@10 758 When it is specified with "centered", the grabbing region follows the mouse
yading@10 759 pointer and keeps the pointer at the center of region; otherwise, the region
yading@10 760 follows only when the mouse pointer reaches within @var{PIXELS} (greater than
yading@10 761 zero) to the edge of region.
yading@10 762
yading@10 763 For example:
yading@10 764 @example
yading@10 765 ffmpeg -f x11grab -follow_mouse centered -r 25 -s cif -i :0.0 out.mpg
yading@10 766 @end example
yading@10 767
yading@10 768 To follow only when the mouse pointer reaches within 100 pixels to edge:
yading@10 769 @example
yading@10 770 ffmpeg -f x11grab -follow_mouse 100 -r 25 -s cif -i :0.0 out.mpg
yading@10 771 @end example
yading@10 772
yading@10 773 @item framerate
yading@10 774 Set the grabbing frame rate. Default value is @code{ntsc},
yading@10 775 corresponding to a frame rate of @code{30000/1001}.
yading@10 776
yading@10 777 @item show_region
yading@10 778 Show grabbed region on screen.
yading@10 779
yading@10 780 If @var{show_region} is specified with @code{1}, then the grabbing
yading@10 781 region will be indicated on screen. With this option, it is easy to
yading@10 782 know what is being grabbed if only a portion of the screen is grabbed.
yading@10 783
yading@10 784 For example:
yading@10 785 @example
yading@10 786 ffmpeg -f x11grab -show_region 1 -r 25 -s cif -i :0.0+10,20 out.mpg
yading@10 787 @end example
yading@10 788
yading@10 789 With @var{follow_mouse}:
yading@10 790 @example
yading@10 791 ffmpeg -f x11grab -follow_mouse centered -show_region 1 -r 25 -s cif -i :0.0 out.mpg
yading@10 792 @end example
yading@10 793
yading@10 794 @item video_size
yading@10 795 Set the video frame size. Default value is @code{vga}.
yading@10 796 @end table
yading@10 797
yading@10 798 @c man end INPUT DEVICES