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