yading@10: @chapter Input Devices yading@10: @c man begin INPUT DEVICES yading@10: yading@10: Input devices are configured elements in FFmpeg which allow to access yading@10: the data coming from a multimedia device attached to your system. yading@10: yading@10: When you configure your FFmpeg build, all the supported input devices yading@10: are enabled by default. You can list all available ones using the yading@10: configure option "--list-indevs". yading@10: yading@10: You can disable all the input devices using the configure option yading@10: "--disable-indevs", and selectively enable an input device using the yading@10: option "--enable-indev=@var{INDEV}", or you can disable a particular yading@10: input device using the option "--disable-indev=@var{INDEV}". yading@10: yading@10: The option "-formats" of the ff* tools will display the list of yading@10: supported input devices (amongst the demuxers). yading@10: yading@10: A description of the currently available input devices follows. yading@10: yading@10: @section alsa yading@10: yading@10: ALSA (Advanced Linux Sound Architecture) input device. yading@10: yading@10: To enable this input device during configuration you need libasound yading@10: installed on your system. yading@10: yading@10: This device allows capturing from an ALSA device. The name of the yading@10: device to capture has to be an ALSA card identifier. yading@10: yading@10: An ALSA identifier has the syntax: yading@10: @example yading@10: hw:@var{CARD}[,@var{DEV}[,@var{SUBDEV}]] yading@10: @end example yading@10: yading@10: where the @var{DEV} and @var{SUBDEV} components are optional. yading@10: yading@10: The three arguments (in order: @var{CARD},@var{DEV},@var{SUBDEV}) yading@10: specify card number or identifier, device number and subdevice number yading@10: (-1 means any). yading@10: yading@10: To see the list of cards currently recognized by your system check the yading@10: files @file{/proc/asound/cards} and @file{/proc/asound/devices}. yading@10: yading@10: For example to capture with @command{ffmpeg} from an ALSA device with yading@10: card id 0, you may run the command: yading@10: @example yading@10: ffmpeg -f alsa -i hw:0 alsaout.wav yading@10: @end example yading@10: yading@10: For more information see: yading@10: @url{http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html} yading@10: yading@10: @section bktr yading@10: yading@10: BSD video input device. yading@10: yading@10: @section dshow yading@10: yading@10: Windows DirectShow input device. yading@10: yading@10: DirectShow support is enabled when FFmpeg is built with the mingw-w64 project. yading@10: Currently only audio and video devices are supported. yading@10: yading@10: Multiple devices may be opened as separate inputs, but they may also be yading@10: opened on the same input, which should improve synchronism between them. yading@10: yading@10: The input name should be in the format: yading@10: yading@10: @example yading@10: @var{TYPE}=@var{NAME}[:@var{TYPE}=@var{NAME}] yading@10: @end example yading@10: yading@10: where @var{TYPE} can be either @var{audio} or @var{video}, yading@10: and @var{NAME} is the device's name. yading@10: yading@10: @subsection Options yading@10: yading@10: If no options are specified, the device's defaults are used. yading@10: If the device does not support the requested options, it will yading@10: fail to open. yading@10: yading@10: @table @option yading@10: yading@10: @item video_size yading@10: Set the video size in the captured video. yading@10: yading@10: @item framerate yading@10: Set the frame rate in the captured video. yading@10: yading@10: @item sample_rate yading@10: Set the sample rate (in Hz) of the captured audio. yading@10: yading@10: @item sample_size yading@10: Set the sample size (in bits) of the captured audio. yading@10: yading@10: @item channels yading@10: Set the number of channels in the captured audio. yading@10: yading@10: @item list_devices yading@10: If set to @option{true}, print a list of devices and exit. yading@10: yading@10: @item list_options yading@10: If set to @option{true}, print a list of selected device's options yading@10: and exit. yading@10: yading@10: @item video_device_number yading@10: Set video device number for devices with same name (starts at 0, yading@10: defaults to 0). yading@10: yading@10: @item audio_device_number yading@10: Set audio device number for devices with same name (starts at 0, yading@10: defaults to 0). yading@10: yading@10: @item pixel_format yading@10: Select pixel format to be used by DirectShow. This may only be set when yading@10: the video codec is not set or set to rawvideo. yading@10: yading@10: @item audio_buffer_size yading@10: Set audio device buffer size in milliseconds (which can directly yading@10: impact latency, depending on the device). yading@10: Defaults to using the audio device's yading@10: default buffer size (typically some multiple of 500ms). yading@10: Setting this value too low can degrade performance. yading@10: See also yading@10: @url{http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx} yading@10: yading@10: @end table yading@10: yading@10: @subsection Examples yading@10: yading@10: @itemize yading@10: yading@10: @item yading@10: Print the list of DirectShow supported devices and exit: yading@10: @example yading@10: $ ffmpeg -list_devices true -f dshow -i dummy yading@10: @end example yading@10: yading@10: @item yading@10: Open video device @var{Camera}: yading@10: @example yading@10: $ ffmpeg -f dshow -i video="Camera" yading@10: @end example yading@10: yading@10: @item yading@10: Open second video device with name @var{Camera}: yading@10: @example yading@10: $ ffmpeg -f dshow -video_device_number 1 -i video="Camera" yading@10: @end example yading@10: yading@10: @item yading@10: Open video device @var{Camera} and audio device @var{Microphone}: yading@10: @example yading@10: $ ffmpeg -f dshow -i video="Camera":audio="Microphone" yading@10: @end example yading@10: yading@10: @item yading@10: Print the list of supported options in selected device and exit: yading@10: @example yading@10: $ ffmpeg -list_options true -f dshow -i video="Camera" yading@10: @end example yading@10: yading@10: @end itemize yading@10: yading@10: @section dv1394 yading@10: yading@10: Linux DV 1394 input device. yading@10: yading@10: @section fbdev yading@10: yading@10: Linux framebuffer input device. yading@10: yading@10: The Linux framebuffer is a graphic hardware-independent abstraction yading@10: layer to show graphics on a computer monitor, typically on the yading@10: console. It is accessed through a file device node, usually yading@10: @file{/dev/fb0}. yading@10: yading@10: For more detailed information read the file yading@10: Documentation/fb/framebuffer.txt included in the Linux source tree. yading@10: yading@10: To record from the framebuffer device @file{/dev/fb0} with yading@10: @command{ffmpeg}: yading@10: @example yading@10: ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi yading@10: @end example yading@10: yading@10: You can take a single screenshot image with the command: yading@10: @example yading@10: ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg yading@10: @end example yading@10: yading@10: See also @url{http://linux-fbdev.sourceforge.net/}, and fbset(1). yading@10: yading@10: @section iec61883 yading@10: yading@10: FireWire DV/HDV input device using libiec61883. yading@10: yading@10: To enable this input device, you need libiec61883, libraw1394 and yading@10: libavc1394 installed on your system. Use the configure option yading@10: @code{--enable-libiec61883} to compile with the device enabled. yading@10: yading@10: The iec61883 capture device supports capturing from a video device yading@10: connected via IEEE1394 (FireWire), using libiec61883 and the new Linux yading@10: FireWire stack (juju). This is the default DV/HDV input method in Linux yading@10: Kernel 2.6.37 and later, since the old FireWire stack was removed. yading@10: yading@10: Specify the FireWire port to be used as input file, or "auto" yading@10: to choose the first port connected. yading@10: yading@10: @subsection Options yading@10: yading@10: @table @option yading@10: yading@10: @item dvtype yading@10: Override autodetection of DV/HDV. This should only be used if auto yading@10: detection does not work, or if usage of a different device type yading@10: should be prohibited. Treating a DV device as HDV (or vice versa) will yading@10: not work and result in undefined behavior. yading@10: The values @option{auto}, @option{dv} and @option{hdv} are supported. yading@10: yading@10: @item dvbuffer yading@10: Set maxiumum size of buffer for incoming data, in frames. For DV, this yading@10: is an exact value. For HDV, it is not frame exact, since HDV does yading@10: not have a fixed frame size. yading@10: yading@10: @item dvguid yading@10: Select the capture device by specifying it's GUID. Capturing will only yading@10: be performed from the specified device and fails if no device with the yading@10: given GUID is found. This is useful to select the input if multiple yading@10: devices are connected at the same time. yading@10: Look at /sys/bus/firewire/devices to find out the GUIDs. yading@10: yading@10: @end table yading@10: yading@10: @subsection Examples yading@10: yading@10: @itemize yading@10: yading@10: @item yading@10: Grab and show the input of a FireWire DV/HDV device. yading@10: @example yading@10: ffplay -f iec61883 -i auto yading@10: @end example yading@10: yading@10: @item yading@10: Grab and record the input of a FireWire DV/HDV device, yading@10: using a packet buffer of 100000 packets if the source is HDV. yading@10: @example yading@10: ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg yading@10: @end example yading@10: yading@10: @end itemize yading@10: yading@10: @section jack yading@10: yading@10: JACK input device. yading@10: yading@10: To enable this input device during configuration you need libjack yading@10: installed on your system. yading@10: yading@10: A JACK input device creates one or more JACK writable clients, one for yading@10: each audio channel, with name @var{client_name}:input_@var{N}, where yading@10: @var{client_name} is the name provided by the application, and @var{N} yading@10: is a number which identifies the channel. yading@10: Each writable client will send the acquired data to the FFmpeg input yading@10: device. yading@10: yading@10: Once you have created one or more JACK readable clients, you need to yading@10: connect them to one or more JACK writable clients. yading@10: yading@10: To connect or disconnect JACK clients you can use the @command{jack_connect} yading@10: and @command{jack_disconnect} programs, or do it through a graphical interface, yading@10: for example with @command{qjackctl}. yading@10: yading@10: To list the JACK clients and their properties you can invoke the command yading@10: @command{jack_lsp}. yading@10: yading@10: Follows an example which shows how to capture a JACK readable client yading@10: with @command{ffmpeg}. yading@10: @example yading@10: # Create a JACK writable client with name "ffmpeg". yading@10: $ ffmpeg -f jack -i ffmpeg -y out.wav yading@10: yading@10: # Start the sample jack_metro readable client. yading@10: $ jack_metro -b 120 -d 0.2 -f 4000 yading@10: yading@10: # List the current JACK clients. yading@10: $ jack_lsp -c yading@10: system:capture_1 yading@10: system:capture_2 yading@10: system:playback_1 yading@10: system:playback_2 yading@10: ffmpeg:input_1 yading@10: metro:120_bpm yading@10: yading@10: # Connect metro to the ffmpeg writable client. yading@10: $ jack_connect metro:120_bpm ffmpeg:input_1 yading@10: @end example yading@10: yading@10: For more information read: yading@10: @url{http://jackaudio.org/} yading@10: yading@10: @section lavfi yading@10: yading@10: Libavfilter input virtual device. yading@10: yading@10: This input device reads data from the open output pads of a libavfilter yading@10: filtergraph. yading@10: yading@10: For each filtergraph open output, the input device will create a yading@10: corresponding stream which is mapped to the generated output. Currently yading@10: only video data is supported. The filtergraph is specified through the yading@10: option @option{graph}. yading@10: yading@10: @subsection Options yading@10: yading@10: @table @option yading@10: yading@10: @item graph yading@10: Specify the filtergraph to use as input. Each video open output must be yading@10: labelled by a unique string of the form "out@var{N}", where @var{N} is a yading@10: number starting from 0 corresponding to the mapped input stream yading@10: generated by the device. yading@10: The first unlabelled output is automatically assigned to the "out0" yading@10: label, but all the others need to be specified explicitly. yading@10: yading@10: If not specified defaults to the filename specified for the input yading@10: device. yading@10: yading@10: @item graph_file yading@10: Set the filename of the filtergraph to be read and sent to the other yading@10: filters. Syntax of the filtergraph is the same as the one specified by yading@10: the option @var{graph}. yading@10: yading@10: @end table yading@10: yading@10: @subsection Examples yading@10: yading@10: @itemize yading@10: @item yading@10: Create a color video stream and play it back with @command{ffplay}: yading@10: @example yading@10: ffplay -f lavfi -graph "color=c=pink [out0]" dummy yading@10: @end example yading@10: yading@10: @item yading@10: As the previous example, but use filename for specifying the graph yading@10: description, and omit the "out0" label: yading@10: @example yading@10: ffplay -f lavfi color=c=pink yading@10: @end example yading@10: yading@10: @item yading@10: Create three different video test filtered sources and play them: yading@10: @example yading@10: ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3 yading@10: @end example yading@10: yading@10: @item yading@10: Read an audio stream from a file using the amovie source and play it yading@10: back with @command{ffplay}: yading@10: @example yading@10: ffplay -f lavfi "amovie=test.wav" yading@10: @end example yading@10: yading@10: @item yading@10: Read an audio stream and a video stream and play it back with yading@10: @command{ffplay}: yading@10: @example yading@10: ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]" yading@10: @end example yading@10: yading@10: @end itemize yading@10: yading@10: @section libdc1394 yading@10: yading@10: IIDC1394 input device, based on libdc1394 and libraw1394. yading@10: yading@10: @section openal yading@10: yading@10: The OpenAL input device provides audio capture on all systems with a yading@10: working OpenAL 1.1 implementation. yading@10: yading@10: To enable this input device during configuration, you need OpenAL yading@10: headers and libraries installed on your system, and need to configure yading@10: FFmpeg with @code{--enable-openal}. yading@10: yading@10: OpenAL headers and libraries should be provided as part of your OpenAL yading@10: implementation, or as an additional download (an SDK). Depending on your yading@10: installation you may need to specify additional flags via the yading@10: @code{--extra-cflags} and @code{--extra-ldflags} for allowing the build yading@10: system to locate the OpenAL headers and libraries. yading@10: yading@10: An incomplete list of OpenAL implementations follows: yading@10: yading@10: @table @strong yading@10: @item Creative yading@10: The official Windows implementation, providing hardware acceleration yading@10: with supported devices and software fallback. yading@10: See @url{http://openal.org/}. yading@10: @item OpenAL Soft yading@10: Portable, open source (LGPL) software implementation. Includes yading@10: backends for the most common sound APIs on the Windows, Linux, yading@10: Solaris, and BSD operating systems. yading@10: See @url{http://kcat.strangesoft.net/openal.html}. yading@10: @item Apple yading@10: OpenAL is part of Core Audio, the official Mac OS X Audio interface. yading@10: See @url{http://developer.apple.com/technologies/mac/audio-and-video.html} yading@10: @end table yading@10: yading@10: This device allows to capture from an audio input device handled yading@10: through OpenAL. yading@10: yading@10: You need to specify the name of the device to capture in the provided yading@10: filename. If the empty string is provided, the device will yading@10: automatically select the default device. You can get the list of the yading@10: supported devices by using the option @var{list_devices}. yading@10: yading@10: @subsection Options yading@10: yading@10: @table @option yading@10: yading@10: @item channels yading@10: Set the number of channels in the captured audio. Only the values yading@10: @option{1} (monaural) and @option{2} (stereo) are currently supported. yading@10: Defaults to @option{2}. yading@10: yading@10: @item sample_size yading@10: Set the sample size (in bits) of the captured audio. Only the values yading@10: @option{8} and @option{16} are currently supported. Defaults to yading@10: @option{16}. yading@10: yading@10: @item sample_rate yading@10: Set the sample rate (in Hz) of the captured audio. yading@10: Defaults to @option{44.1k}. yading@10: yading@10: @item list_devices yading@10: If set to @option{true}, print a list of devices and exit. yading@10: Defaults to @option{false}. yading@10: yading@10: @end table yading@10: yading@10: @subsection Examples yading@10: yading@10: Print the list of OpenAL supported devices and exit: yading@10: @example yading@10: $ ffmpeg -list_devices true -f openal -i dummy out.ogg yading@10: @end example yading@10: yading@10: Capture from the OpenAL device @file{DR-BT101 via PulseAudio}: yading@10: @example yading@10: $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg yading@10: @end example yading@10: yading@10: Capture from the default device (note the empty string '' as filename): yading@10: @example yading@10: $ ffmpeg -f openal -i '' out.ogg yading@10: @end example yading@10: yading@10: Capture from two devices simultaneously, writing to two different files, yading@10: within the same @command{ffmpeg} command: yading@10: @example yading@10: $ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg yading@10: @end example yading@10: Note: not all OpenAL implementations support multiple simultaneous capture - yading@10: try the latest OpenAL Soft if the above does not work. yading@10: yading@10: @section oss yading@10: yading@10: Open Sound System input device. yading@10: yading@10: The filename to provide to the input device is the device node yading@10: representing the OSS input device, and is usually set to yading@10: @file{/dev/dsp}. yading@10: yading@10: For example to grab from @file{/dev/dsp} using @command{ffmpeg} use the yading@10: command: yading@10: @example yading@10: ffmpeg -f oss -i /dev/dsp /tmp/oss.wav yading@10: @end example yading@10: yading@10: For more information about OSS see: yading@10: @url{http://manuals.opensound.com/usersguide/dsp.html} yading@10: yading@10: @section pulse yading@10: yading@10: pulseaudio input device. yading@10: yading@10: To enable this input device during configuration you need libpulse-simple yading@10: installed in your system. yading@10: yading@10: The filename to provide to the input device is a source device or the yading@10: string "default" yading@10: yading@10: To list the pulse source devices and their properties you can invoke yading@10: the command @command{pactl list sources}. yading@10: yading@10: @example yading@10: ffmpeg -f pulse -i default /tmp/pulse.wav yading@10: @end example yading@10: yading@10: @subsection @var{server} AVOption yading@10: yading@10: The syntax is: yading@10: @example yading@10: -server @var{server name} yading@10: @end example yading@10: yading@10: Connects to a specific server. yading@10: yading@10: @subsection @var{name} AVOption yading@10: yading@10: The syntax is: yading@10: @example yading@10: -name @var{application name} yading@10: @end example yading@10: yading@10: Specify the application name pulse will use when showing active clients, yading@10: by default it is the LIBAVFORMAT_IDENT string yading@10: yading@10: @subsection @var{stream_name} AVOption yading@10: yading@10: The syntax is: yading@10: @example yading@10: -stream_name @var{stream name} yading@10: @end example yading@10: yading@10: Specify the stream name pulse will use when showing active streams, yading@10: by default it is "record" yading@10: yading@10: @subsection @var{sample_rate} AVOption yading@10: yading@10: The syntax is: yading@10: @example yading@10: -sample_rate @var{samplerate} yading@10: @end example yading@10: yading@10: Specify the samplerate in Hz, by default 48kHz is used. yading@10: yading@10: @subsection @var{channels} AVOption yading@10: yading@10: The syntax is: yading@10: @example yading@10: -channels @var{N} yading@10: @end example yading@10: yading@10: Specify the channels in use, by default 2 (stereo) is set. yading@10: yading@10: @subsection @var{frame_size} AVOption yading@10: yading@10: The syntax is: yading@10: @example yading@10: -frame_size @var{bytes} yading@10: @end example yading@10: yading@10: Specify the number of byte per frame, by default it is set to 1024. yading@10: yading@10: @subsection @var{fragment_size} AVOption yading@10: yading@10: The syntax is: yading@10: @example yading@10: -fragment_size @var{bytes} yading@10: @end example yading@10: yading@10: Specify the minimal buffering fragment in pulseaudio, it will affect the yading@10: audio latency. By default it is unset. yading@10: yading@10: @section sndio yading@10: yading@10: sndio input device. yading@10: yading@10: To enable this input device during configuration you need libsndio yading@10: installed on your system. yading@10: yading@10: The filename to provide to the input device is the device node yading@10: representing the sndio input device, and is usually set to yading@10: @file{/dev/audio0}. yading@10: yading@10: For example to grab from @file{/dev/audio0} using @command{ffmpeg} use the yading@10: command: yading@10: @example yading@10: ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav yading@10: @end example yading@10: yading@10: @section video4linux2, v4l2 yading@10: yading@10: Video4Linux2 input video device. yading@10: yading@10: "v4l2" can be used as alias for "video4linux2". yading@10: yading@10: If FFmpeg is built with v4l-utils support (by using the yading@10: @code{--enable-libv4l2} configure option), the device will always rely yading@10: on libv4l2. yading@10: yading@10: The name of the device to grab is a file device node, usually Linux yading@10: systems tend to automatically create such nodes when the device yading@10: (e.g. an USB webcam) is plugged into the system, and has a name of the yading@10: kind @file{/dev/video@var{N}}, where @var{N} is a number associated to yading@10: the device. yading@10: yading@10: Video4Linux2 devices usually support a limited set of yading@10: @var{width}x@var{height} sizes and frame rates. You can check which are yading@10: supported using @command{-list_formats all} for Video4Linux2 devices. yading@10: Some devices, like TV cards, support one or more standards. It is possible yading@10: to list all the supported standards using @command{-list_standards all}. yading@10: yading@10: The time base for the timestamps is 1 microsecond. Depending on the kernel yading@10: version and configuration, the timestamps may be derived from the real time yading@10: clock (origin at the Unix Epoch) or the monotonic clock (origin usually at yading@10: boot time, unaffected by NTP or manual changes to the clock). The yading@10: @option{-timestamps abs} or @option{-ts abs} option can be used to force yading@10: conversion into the real time clock. yading@10: yading@10: Some usage examples of the video4linux2 device with @command{ffmpeg} yading@10: and @command{ffplay}: yading@10: @itemize yading@10: @item yading@10: Grab and show the input of a video4linux2 device: yading@10: @example yading@10: ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0 yading@10: @end example yading@10: yading@10: @item yading@10: Grab and record the input of a video4linux2 device, leave the yading@10: frame rate and size as previously set: yading@10: @example yading@10: ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg yading@10: @end example yading@10: @end itemize yading@10: yading@10: For more information about Video4Linux, check @url{http://linuxtv.org/}. yading@10: yading@10: @subsection Options yading@10: yading@10: @table @option yading@10: @item standard yading@10: Set the standard. Must be the name of a supported standard. To get a yading@10: list of the supported standards, use the @option{list_standards} yading@10: option. yading@10: yading@10: @item channel yading@10: Set the input channel number. Default to -1, which means using the yading@10: previously selected channel. yading@10: yading@10: @item video_size yading@10: Set the video frame size. The argument must be a string in the form yading@10: @var{WIDTH}x@var{HEIGHT} or a valid size abbreviation. yading@10: yading@10: @item pixel_format yading@10: Select the pixel format (only valid for raw video input). yading@10: yading@10: @item input_format yading@10: Set the preferred pixel format (for raw video) or a codec name. yading@10: This option allows to select the input format, when several are yading@10: available. yading@10: yading@10: @item framerate yading@10: Set the preferred video frame rate. yading@10: yading@10: @item list_formats yading@10: List available formats (supported pixel formats, codecs, and frame yading@10: sizes) and exit. yading@10: yading@10: Available values are: yading@10: @table @samp yading@10: @item all yading@10: Show all available (compressed and non-compressed) formats. yading@10: yading@10: @item raw yading@10: Show only raw video (non-compressed) formats. yading@10: yading@10: @item compressed yading@10: Show only compressed formats. yading@10: @end table yading@10: yading@10: @item list_standards yading@10: List supported standards and exit. yading@10: yading@10: Available values are: yading@10: @table @samp yading@10: @item all yading@10: Show all supported standards. yading@10: @end table yading@10: yading@10: @item timestamps, ts yading@10: Set type of timestamps for grabbed frames. yading@10: yading@10: Available values are: yading@10: @table @samp yading@10: @item default yading@10: Use timestamps from the kernel. yading@10: yading@10: @item abs yading@10: Use absolute timestamps (wall clock). yading@10: yading@10: @item mono2abs yading@10: Force conversion from monotonic to absolute timestamps. yading@10: @end table yading@10: yading@10: Default value is @code{default}. yading@10: @end table yading@10: yading@10: @section vfwcap yading@10: yading@10: VfW (Video for Windows) capture input device. yading@10: yading@10: The filename passed as input is the capture driver number, ranging from yading@10: 0 to 9. You may use "list" as filename to print a list of drivers. Any yading@10: other filename will be interpreted as device number 0. yading@10: yading@10: @section x11grab yading@10: yading@10: X11 video input device. yading@10: yading@10: This device allows to capture a region of an X11 display. yading@10: yading@10: The filename passed as input has the syntax: yading@10: @example yading@10: [@var{hostname}]:@var{display_number}.@var{screen_number}[+@var{x_offset},@var{y_offset}] yading@10: @end example yading@10: yading@10: @var{hostname}:@var{display_number}.@var{screen_number} specifies the yading@10: X11 display name of the screen to grab from. @var{hostname} can be yading@10: omitted, and defaults to "localhost". The environment variable yading@10: @env{DISPLAY} contains the default display name. yading@10: yading@10: @var{x_offset} and @var{y_offset} specify the offsets of the grabbed yading@10: area with respect to the top-left border of the X11 screen. They yading@10: default to 0. yading@10: yading@10: Check the X11 documentation (e.g. man X) for more detailed information. yading@10: yading@10: Use the @command{dpyinfo} program for getting basic information about the yading@10: properties of your X11 display (e.g. grep for "name" or "dimensions"). yading@10: yading@10: For example to grab from @file{:0.0} using @command{ffmpeg}: yading@10: @example yading@10: ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpg yading@10: @end example yading@10: yading@10: Grab at position @code{10,20}: yading@10: @example yading@10: ffmpeg -f x11grab -r 25 -s cif -i :0.0+10,20 out.mpg yading@10: @end example yading@10: yading@10: @subsection Options yading@10: yading@10: @table @option yading@10: @item draw_mouse yading@10: Specify whether to draw the mouse pointer. A value of @code{0} specify yading@10: not to draw the pointer. Default value is @code{1}. yading@10: yading@10: @item follow_mouse yading@10: Make the grabbed area follow the mouse. The argument can be yading@10: @code{centered} or a number of pixels @var{PIXELS}. yading@10: yading@10: When it is specified with "centered", the grabbing region follows the mouse yading@10: pointer and keeps the pointer at the center of region; otherwise, the region yading@10: follows only when the mouse pointer reaches within @var{PIXELS} (greater than yading@10: zero) to the edge of region. yading@10: yading@10: For example: yading@10: @example yading@10: ffmpeg -f x11grab -follow_mouse centered -r 25 -s cif -i :0.0 out.mpg yading@10: @end example yading@10: yading@10: To follow only when the mouse pointer reaches within 100 pixels to edge: yading@10: @example yading@10: ffmpeg -f x11grab -follow_mouse 100 -r 25 -s cif -i :0.0 out.mpg yading@10: @end example yading@10: yading@10: @item framerate yading@10: Set the grabbing frame rate. Default value is @code{ntsc}, yading@10: corresponding to a frame rate of @code{30000/1001}. yading@10: yading@10: @item show_region yading@10: Show grabbed region on screen. yading@10: yading@10: If @var{show_region} is specified with @code{1}, then the grabbing yading@10: region will be indicated on screen. With this option, it is easy to yading@10: know what is being grabbed if only a portion of the screen is grabbed. yading@10: yading@10: For example: yading@10: @example yading@10: ffmpeg -f x11grab -show_region 1 -r 25 -s cif -i :0.0+10,20 out.mpg yading@10: @end example yading@10: yading@10: With @var{follow_mouse}: yading@10: @example yading@10: ffmpeg -f x11grab -follow_mouse centered -show_region 1 -r 25 -s cif -i :0.0 out.mpg yading@10: @end example yading@10: yading@10: @item video_size yading@10: Set the video frame size. Default value is @code{vga}. yading@10: @end table yading@10: yading@10: @c man end INPUT DEVICES