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