1@chapter Input Devices 2@c man begin INPUT DEVICES 3 4Input devices are configured elements in FFmpeg which enable accessing 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@subsection Options 55 56@table @option 57 58@item sample_rate 59Set the sample rate in Hz. Default is 48000. 60 61@item channels 62Set the number of channels. Default is 2. 63 64@end table 65 66@section android_camera 67 68Android camera input device. 69 70This input devices uses the Android Camera2 NDK API which is 71available on devices with API level 24+. The availability of 72android_camera is autodetected during configuration. 73 74This device allows capturing from all cameras on an Android device, 75which are integrated into the Camera2 NDK API. 76 77The available cameras are enumerated internally and can be selected 78with the @var{camera_index} parameter. The input file string is 79discarded. 80 81Generally the back facing camera has index 0 while the front facing 82camera has index 1. 83 84@subsection Options 85 86@table @option 87 88@item video_size 89Set the video size given as a string such as 640x480 or hd720. 90Falls back to the first available configuration reported by 91Android if requested video size is not available or by default. 92 93@item framerate 94Set the video framerate. 95Falls back to the first available configuration reported by 96Android if requested framerate is not available or by default (-1). 97 98@item camera_index 99Set the index of the camera to use. Default is 0. 100 101@item input_queue_size 102Set the maximum number of frames to buffer. Default is 5. 103 104@end table 105 106@section avfoundation 107 108AVFoundation input device. 109 110AVFoundation is the currently recommended framework by Apple for streamgrabbing on OSX >= 10.7 as well as on iOS. 111 112The input filename has to be given in the following syntax: 113@example 114-i "[[VIDEO]:[AUDIO]]" 115@end example 116The first entry selects the video input while the latter selects the audio input. 117The stream has to be specified by the device name or the device index as shown by the device list. 118Alternatively, the video and/or audio input device can be chosen by index using the 119@option{ 120 -video_device_index <INDEX> 121} 122and/or 123@option{ 124 -audio_device_index <INDEX> 125} 126, overriding any 127device name or index given in the input filename. 128 129All available devices can be enumerated by using @option{-list_devices true}, listing 130all device names and corresponding indices. 131 132There are two device name aliases: 133@table @code 134 135@item default 136Select the AVFoundation default device of the corresponding type. 137 138@item none 139Do not record the corresponding media type. 140This is equivalent to specifying an empty device name or index. 141 142@end table 143 144@subsection Options 145 146AVFoundation supports the following options: 147 148@table @option 149 150@item -list_devices <TRUE|FALSE> 151If set to true, a list of all available input devices is given showing all 152device names and indices. 153 154@item -video_device_index <INDEX> 155Specify the video device by its index. Overrides anything given in the input filename. 156 157@item -audio_device_index <INDEX> 158Specify the audio device by its index. Overrides anything given in the input filename. 159 160@item -pixel_format <FORMAT> 161Request the video device to use a specific pixel format. 162If the specified format is not supported, a list of available formats is given 163and the first one in this list is used instead. Available pixel formats are: 164@code{monob, rgb555be, rgb555le, rgb565be, rgb565le, rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0, 165 bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10, 166 yuv420p, nv12, yuyv422, gray} 167 168@item -framerate 169Set the grabbing frame rate. Default is @code{ntsc}, corresponding to a 170frame rate of @code{30000/1001}. 171 172@item -video_size 173Set the video frame size. 174 175@item -capture_cursor 176Capture the mouse pointer. Default is 0. 177 178@item -capture_mouse_clicks 179Capture the screen mouse clicks. Default is 0. 180 181@item -capture_raw_data 182Capture the raw device data. Default is 0. 183Using this option may result in receiving the underlying data delivered to the AVFoundation framework. E.g. for muxed devices that sends raw DV data to the framework (like tape-based camcorders), setting this option to false results in extracted video frames captured in the designated pixel format only. Setting this option to true results in receiving the raw DV stream untouched. 184@end table 185 186@subsection Examples 187 188@itemize 189 190@item 191Print the list of AVFoundation supported devices and exit: 192@example 193$ ffmpeg -f avfoundation -list_devices true -i "" 194@end example 195 196@item 197Record video from video device 0 and audio from audio device 0 into out.avi: 198@example 199$ ffmpeg -f avfoundation -i "0:0" out.avi 200@end example 201 202@item 203Record video from video device 2 and audio from audio device 1 into out.avi: 204@example 205$ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi 206@end example 207 208@item 209Record video from the system default video device using the pixel format bgr0 and do not record any audio into out.avi: 210@example 211$ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi 212@end example 213 214@item 215Record raw DV data from a suitable input device and write the output into out.dv: 216@example 217$ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv 218@end example 219 220 221@end itemize 222 223@section bktr 224 225BSD video input device. 226 227@subsection Options 228 229@table @option 230 231@item framerate 232Set the frame rate. 233 234@item video_size 235Set the video frame size. Default is @code{vga}. 236 237@item standard 238 239Available values are: 240@table @samp 241@item pal 242 243@item ntsc 244 245@item secam 246 247@item paln 248 249@item palm 250 251@item ntscj 252 253@end table 254 255@end table 256 257@section decklink 258 259The decklink input device provides capture capabilities for Blackmagic 260DeckLink devices. 261 262To enable this input device, you need the Blackmagic DeckLink SDK and you 263need to configure with the appropriate @code{--extra-cflags} 264and @code{--extra-ldflags}. 265On Windows, you need to run the IDL files through @command{widl}. 266 267DeckLink is very picky about the formats it supports. Pixel format of the 268input can be set with @option{raw_format}. 269Framerate and video size must be determined for your device with 270@command{-list_formats 1}. Audio sample rate is always 48 kHz and the number 271of channels can be 2, 8 or 16. Note that all audio channels are bundled in one single 272audio track. 273 274@subsection Options 275 276@table @option 277 278@item list_devices 279If set to @option{true}, print a list of devices and exit. 280Defaults to @option{false}. This option is deprecated, please use the 281@code{-sources} option of ffmpeg to list the available input devices. 282 283@item list_formats 284If set to @option{true}, print a list of supported formats and exit. 285Defaults to @option{false}. 286 287@item format_code <FourCC> 288This sets the input video format to the format given by the FourCC. To see 289the supported values of your device(s) use @option{list_formats}. 290Note that there is a FourCC @option{'pal '} that can also be used 291as @option{pal} (3 letters). 292Default behavior is autodetection of the input video format, if the hardware 293supports it. 294 295@item raw_format 296Set the pixel format of the captured video. 297Available values are: 298@table @samp 299@item auto 300 301This is the default which means 8-bit YUV 422 or 8-bit ARGB if format 302autodetection is used, 8-bit YUV 422 otherwise. 303 304@item uyvy422 305 3068-bit YUV 422. 307 308@item yuv422p10 309 31010-bit YUV 422. 311 312@item argb 313 3148-bit RGB. 315 316@item bgra 317 3188-bit RGB. 319 320@item rgb10 321 32210-bit RGB. 323 324@end table 325 326@item teletext_lines 327If set to nonzero, an additional teletext stream will be captured from the 328vertical ancillary data. Both SD PAL (576i) and HD (1080i or 1080p) 329sources are supported. In case of HD sources, OP47 packets are decoded. 330 331This option is a bitmask of the SD PAL VBI lines captured, specifically lines 6 332to 22, and lines 318 to 335. Line 6 is the LSB in the mask. Selected lines 333which do not contain teletext information will be ignored. You can use the 334special @option{all} constant to select all possible lines, or 335@option{standard} to skip lines 6, 318 and 319, which are not compatible with 336all receivers. 337 338For SD sources, ffmpeg needs to be compiled with @code{--enable-libzvbi}. For 339HD sources, on older (pre-4K) DeckLink card models you have to capture in 10 340bit mode. 341 342@item channels 343Defines number of audio channels to capture. Must be @samp{2}, @samp{8} or @samp{16}. 344Defaults to @samp{2}. 345 346@item duplex_mode 347Sets the decklink device duplex/profile mode. Must be @samp{unset}, @samp{half}, @samp{full}, 348@samp{one_sub_device_full}, @samp{one_sub_device_half}, @samp{two_sub_device_full}, 349@samp{four_sub_device_half} 350Defaults to @samp{unset}. 351 352Note: DeckLink SDK 11.0 have replaced the duplex property by a profile property. 353For the DeckLink Duo 2 and DeckLink Quad 2, a profile is shared between any 2 354sub-devices that utilize the same connectors. For the DeckLink 8K Pro, a profile 355is shared between all 4 sub-devices. So DeckLink 8K Pro support four profiles. 356 357Valid profile modes for DeckLink 8K Pro(with DeckLink SDK >= 11.0): 358@samp{one_sub_device_full}, @samp{one_sub_device_half}, @samp{two_sub_device_full}, 359@samp{four_sub_device_half} 360 361Valid profile modes for DeckLink Quad 2 and DeckLink Duo 2: 362@samp{half}, @samp{full} 363 364@item timecode_format 365Timecode type to include in the frame and video stream metadata. Must be 366@samp{none}, @samp{rp188vitc}, @samp{rp188vitc2}, @samp{rp188ltc}, 367@samp{rp188hfr}, @samp{rp188any}, @samp{vitc}, @samp{vitc2}, or @samp{serial}. 368Defaults to @samp{none} (not included). 369 370In order to properly support 50/60 fps timecodes, the ordering of the queried 371timecode types for @samp{rp188any} is HFR, VITC1, VITC2 and LTC for >30 fps 372content. Note that this is slightly different to the ordering used by the 373DeckLink API, which is HFR, VITC1, LTC, VITC2. 374 375@item video_input 376Sets the video input source. Must be @samp{unset}, @samp{sdi}, @samp{hdmi}, 377@samp{optical_sdi}, @samp{component}, @samp{composite} or @samp{s_video}. 378Defaults to @samp{unset}. 379 380@item audio_input 381Sets the audio input source. Must be @samp{unset}, @samp{embedded}, 382@samp{aes_ebu}, @samp{analog}, @samp{analog_xlr}, @samp{analog_rca} or 383@samp{microphone}. Defaults to @samp{unset}. 384 385@item video_pts 386Sets the video packet timestamp source. Must be @samp{video}, @samp{audio}, 387@samp{reference}, @samp{wallclock} or @samp{abs_wallclock}. 388Defaults to @samp{video}. 389 390@item audio_pts 391Sets the audio packet timestamp source. Must be @samp{video}, @samp{audio}, 392@samp{reference}, @samp{wallclock} or @samp{abs_wallclock}. 393Defaults to @samp{audio}. 394 395@item draw_bars 396If set to @samp{true}, color bars are drawn in the event of a signal loss. 397Defaults to @samp{true}. 398 399@item queue_size 400Sets maximum input buffer size in bytes. If the buffering reaches this value, 401incoming frames will be dropped. 402Defaults to @samp{1073741824}. 403 404@item audio_depth 405Sets the audio sample bit depth. Must be @samp{16} or @samp{32}. 406Defaults to @samp{16}. 407 408@item decklink_copyts 409If set to @option{true}, timestamps are forwarded as they are without removing 410the initial offset. 411Defaults to @option{false}. 412 413@item timestamp_align 414Capture start time alignment in seconds. If set to nonzero, input frames are 415dropped till the system timestamp aligns with configured value. 416Alignment difference of up to one frame duration is tolerated. 417This is useful for maintaining input synchronization across N different 418hardware devices deployed for 'N-way' redundancy. The system time of different 419hardware devices should be synchronized with protocols such as NTP or PTP, 420before using this option. 421Note that this method is not foolproof. In some border cases input 422synchronization may not happen due to thread scheduling jitters in the OS. 423Either sync could go wrong by 1 frame or in a rarer case 424@option{timestamp_align} seconds. 425Defaults to @samp{0}. 426 427@item wait_for_tc (@emph{bool}) 428Drop frames till a frame with timecode is received. Sometimes serial timecode 429isn't received with the first input frame. If that happens, the stored stream 430timecode will be inaccurate. If this option is set to @option{true}, input frames 431are dropped till a frame with timecode is received. 432Option @var{timecode_format} must be specified. 433Defaults to @option{false}. 434 435@item enable_klv(@emph{bool}) 436If set to @option{true}, extracts KLV data from VANC and outputs KLV packets. 437KLV VANC packets are joined based on MID and PSC fields and aggregated into 438one KLV packet. 439Defaults to @option{false}. 440 441@end table 442 443@subsection Examples 444 445@itemize 446 447@item 448List input devices: 449@example 450ffmpeg -sources decklink 451@end example 452 453@item 454List supported formats: 455@example 456ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro' 457@end example 458 459@item 460Capture video clip at 1080i50: 461@example 462ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi 463@end example 464 465@item 466Capture video clip at 1080i50 10 bit: 467@example 468ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi 469@end example 470 471@item 472Capture video clip at 1080i50 with 16 audio channels: 473@example 474ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi 475@end example 476 477@end itemize 478 479@section dshow 480 481Windows DirectShow input device. 482 483DirectShow support is enabled when FFmpeg is built with the mingw-w64 project. 484Currently only audio and video devices are supported. 485 486Multiple devices may be opened as separate inputs, but they may also be 487opened on the same input, which should improve synchronism between them. 488 489The input name should be in the format: 490 491@example 492@var{TYPE}=@var{NAME}[:@var{TYPE}=@var{NAME}] 493@end example 494 495where @var{TYPE} can be either @var{audio} or @var{video}, 496and @var{NAME} is the device's name or alternative name.. 497 498@subsection Options 499 500If no options are specified, the device's defaults are used. 501If the device does not support the requested options, it will 502fail to open. 503 504@table @option 505 506@item video_size 507Set the video size in the captured video. 508 509@item framerate 510Set the frame rate in the captured video. 511 512@item sample_rate 513Set the sample rate (in Hz) of the captured audio. 514 515@item sample_size 516Set the sample size (in bits) of the captured audio. 517 518@item channels 519Set the number of channels in the captured audio. 520 521@item list_devices 522If set to @option{true}, print a list of devices and exit. 523 524@item list_options 525If set to @option{true}, print a list of selected device's options 526and exit. 527 528@item video_device_number 529Set video device number for devices with the same name (starts at 0, 530defaults to 0). 531 532@item audio_device_number 533Set audio device number for devices with the same name (starts at 0, 534defaults to 0). 535 536@item pixel_format 537Select pixel format to be used by DirectShow. This may only be set when 538the video codec is not set or set to rawvideo. 539 540@item audio_buffer_size 541Set audio device buffer size in milliseconds (which can directly 542impact latency, depending on the device). 543Defaults to using the audio device's 544default buffer size (typically some multiple of 500ms). 545Setting this value too low can degrade performance. 546See also 547@url{http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx} 548 549@item video_pin_name 550Select video capture pin to use by name or alternative name. 551 552@item audio_pin_name 553Select audio capture pin to use by name or alternative name. 554 555@item crossbar_video_input_pin_number 556Select video input pin number for crossbar device. This will be 557routed to the crossbar device's Video Decoder output pin. 558Note that changing this value can affect future invocations 559(sets a new default) until system reboot occurs. 560 561@item crossbar_audio_input_pin_number 562Select audio input pin number for crossbar device. This will be 563routed to the crossbar device's Audio Decoder output pin. 564Note that changing this value can affect future invocations 565(sets a new default) until system reboot occurs. 566 567@item show_video_device_dialog 568If set to @option{true}, before capture starts, popup a display dialog 569to the end user, allowing them to change video filter properties 570and configurations manually. 571Note that for crossbar devices, adjusting values in this dialog 572may be needed at times to toggle between PAL (25 fps) and NTSC (29.97) 573input frame rates, sizes, interlacing, etc. Changing these values can 574enable different scan rates/frame rates and avoiding green bars at 575the bottom, flickering scan lines, etc. 576Note that with some devices, changing these properties can also affect future 577invocations (sets new defaults) until system reboot occurs. 578 579@item show_audio_device_dialog 580If set to @option{true}, before capture starts, popup a display dialog 581to the end user, allowing them to change audio filter properties 582and configurations manually. 583 584@item show_video_crossbar_connection_dialog 585If set to @option{true}, before capture starts, popup a display 586dialog to the end user, allowing them to manually 587modify crossbar pin routings, when it opens a video device. 588 589@item show_audio_crossbar_connection_dialog 590If set to @option{true}, before capture starts, popup a display 591dialog to the end user, allowing them to manually 592modify crossbar pin routings, when it opens an audio device. 593 594@item show_analog_tv_tuner_dialog 595If set to @option{true}, before capture starts, popup a display 596dialog to the end user, allowing them to manually 597modify TV channels and frequencies. 598 599@item show_analog_tv_tuner_audio_dialog 600If set to @option{true}, before capture starts, popup a display 601dialog to the end user, allowing them to manually 602modify TV audio (like mono vs. stereo, Language A,B or C). 603 604@item audio_device_load 605Load an audio capture filter device from file instead of searching 606it by name. It may load additional parameters too, if the filter 607supports the serialization of its properties to. 608To use this an audio capture source has to be specified, but it can 609be anything even fake one. 610 611@item audio_device_save 612Save the currently used audio capture filter device and its 613parameters (if the filter supports it) to a file. 614If a file with the same name exists it will be overwritten. 615 616@item video_device_load 617Load a video capture filter device from file instead of searching 618it by name. It may load additional parameters too, if the filter 619supports the serialization of its properties to. 620To use this a video capture source has to be specified, but it can 621be anything even fake one. 622 623@item video_device_save 624Save the currently used video capture filter device and its 625parameters (if the filter supports it) to a file. 626If a file with the same name exists it will be overwritten. 627 628@item use_video_device_timestamps 629If set to @option{false}, the timestamp for video frames will be 630derived from the wallclock instead of the timestamp provided by 631the capture device. This allows working around devices that 632provide unreliable timestamps. 633 634@end table 635 636@subsection Examples 637 638@itemize 639 640@item 641Print the list of DirectShow supported devices and exit: 642@example 643$ ffmpeg -list_devices true -f dshow -i dummy 644@end example 645 646@item 647Open video device @var{Camera}: 648@example 649$ ffmpeg -f dshow -i video="Camera" 650@end example 651 652@item 653Open second video device with name @var{Camera}: 654@example 655$ ffmpeg -f dshow -video_device_number 1 -i video="Camera" 656@end example 657 658@item 659Open video device @var{Camera} and audio device @var{Microphone}: 660@example 661$ ffmpeg -f dshow -i video="Camera":audio="Microphone" 662@end example 663 664@item 665Print the list of supported options in selected device and exit: 666@example 667$ ffmpeg -list_options true -f dshow -i video="Camera" 668@end example 669 670@item 671Specify pin names to capture by name or alternative name, specify alternative device name: 672@example 673$ ffmpeg -f dshow -audio_pin_name "Audio Out" -video_pin_name 2 -i video=video="@@device_pnp_\\?\pci#ven_1a0a&dev_6200&subsys_62021461&rev_01#4&e2c7dd6&0&00e1#@{65e8773d-8f56-11d0-a3b9-00a0c9223196@}\@{ca465100-deb0-4d59-818f-8c477184adf6@}":audio="Microphone" 674@end example 675 676@item 677Configure a crossbar device, specifying crossbar pins, allow user to adjust video capture properties at startup: 678@example 679$ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0 680 -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture" 681@end example 682 683@end itemize 684 685@section fbdev 686 687Linux framebuffer input device. 688 689The Linux framebuffer is a graphic hardware-independent abstraction 690layer to show graphics on a computer monitor, typically on the 691console. It is accessed through a file device node, usually 692@file{/dev/fb0}. 693 694For more detailed information read the file 695Documentation/fb/framebuffer.txt included in the Linux source tree. 696 697See also @url{http://linux-fbdev.sourceforge.net/}, and fbset(1). 698 699To record from the framebuffer device @file{/dev/fb0} with 700@command{ffmpeg}: 701@example 702ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi 703@end example 704 705You can take a single screenshot image with the command: 706@example 707ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg 708@end example 709 710@subsection Options 711 712@table @option 713 714@item framerate 715Set the frame rate. Default is 25. 716 717@end table 718 719@section gdigrab 720 721Win32 GDI-based screen capture device. 722 723This device allows you to capture a region of the display on Windows. 724 725There are two options for the input filename: 726@example 727desktop 728@end example 729or 730@example 731title=@var{window_title} 732@end example 733 734The first option will capture the entire desktop, or a fixed region of the 735desktop. The second option will instead capture the contents of a single 736window, regardless of its position on the screen. 737 738For example, to grab the entire desktop using @command{ffmpeg}: 739@example 740ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg 741@end example 742 743Grab a 640x480 region at position @code{10,20}: 744@example 745ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg 746@end example 747 748Grab the contents of the window named "Calculator" 749@example 750ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg 751@end example 752 753@subsection Options 754 755@table @option 756@item draw_mouse 757Specify whether to draw the mouse pointer. Use the value @code{0} to 758not draw the pointer. Default value is @code{1}. 759 760@item framerate 761Set the grabbing frame rate. Default value is @code{ntsc}, 762corresponding to a frame rate of @code{30000/1001}. 763 764@item show_region 765Show grabbed region on screen. 766 767If @var{show_region} is specified with @code{1}, then the grabbing 768region will be indicated on screen. With this option, it is easy to 769know what is being grabbed if only a portion of the screen is grabbed. 770 771Note that @var{show_region} is incompatible with grabbing the contents 772of a single window. 773 774For example: 775@example 776ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg 777@end example 778 779@item video_size 780Set 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. 781 782@item offset_x 783When capturing a region with @var{video_size}, set the distance from the left edge of the screen or desktop. 784 785Note 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. 786 787@item offset_y 788When capturing a region with @var{video_size}, set the distance from the top edge of the screen or desktop. 789 790Note 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. 791 792@end table 793 794@section iec61883 795 796FireWire DV/HDV input device using libiec61883. 797 798To enable this input device, you need libiec61883, libraw1394 and 799libavc1394 installed on your system. Use the configure option 800@code{--enable-libiec61883} to compile with the device enabled. 801 802The iec61883 capture device supports capturing from a video device 803connected via IEEE1394 (FireWire), using libiec61883 and the new Linux 804FireWire stack (juju). This is the default DV/HDV input method in Linux 805Kernel 2.6.37 and later, since the old FireWire stack was removed. 806 807Specify the FireWire port to be used as input file, or "auto" 808to choose the first port connected. 809 810@subsection Options 811 812@table @option 813 814@item dvtype 815Override autodetection of DV/HDV. This should only be used if auto 816detection does not work, or if usage of a different device type 817should be prohibited. Treating a DV device as HDV (or vice versa) will 818not work and result in undefined behavior. 819The values @option{auto}, @option{dv} and @option{hdv} are supported. 820 821@item dvbuffer 822Set maximum size of buffer for incoming data, in frames. For DV, this 823is an exact value. For HDV, it is not frame exact, since HDV does 824not have a fixed frame size. 825 826@item dvguid 827Select the capture device by specifying its GUID. Capturing will only 828be performed from the specified device and fails if no device with the 829given GUID is found. This is useful to select the input if multiple 830devices are connected at the same time. 831Look at /sys/bus/firewire/devices to find out the GUIDs. 832 833@end table 834 835@subsection Examples 836 837@itemize 838 839@item 840Grab and show the input of a FireWire DV/HDV device. 841@example 842ffplay -f iec61883 -i auto 843@end example 844 845@item 846Grab and record the input of a FireWire DV/HDV device, 847using a packet buffer of 100000 packets if the source is HDV. 848@example 849ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg 850@end example 851 852@end itemize 853 854@section jack 855 856JACK input device. 857 858To enable this input device during configuration you need libjack 859installed on your system. 860 861A JACK input device creates one or more JACK writable clients, one for 862each audio channel, with name @var{client_name}:input_@var{N}, where 863@var{client_name} is the name provided by the application, and @var{N} 864is a number which identifies the channel. 865Each writable client will send the acquired data to the FFmpeg input 866device. 867 868Once you have created one or more JACK readable clients, you need to 869connect them to one or more JACK writable clients. 870 871To connect or disconnect JACK clients you can use the @command{jack_connect} 872and @command{jack_disconnect} programs, or do it through a graphical interface, 873for example with @command{qjackctl}. 874 875To list the JACK clients and their properties you can invoke the command 876@command{jack_lsp}. 877 878Follows an example which shows how to capture a JACK readable client 879with @command{ffmpeg}. 880@example 881# Create a JACK writable client with name "ffmpeg". 882$ ffmpeg -f jack -i ffmpeg -y out.wav 883 884# Start the sample jack_metro readable client. 885$ jack_metro -b 120 -d 0.2 -f 4000 886 887# List the current JACK clients. 888$ jack_lsp -c 889system:capture_1 890system:capture_2 891system:playback_1 892system:playback_2 893ffmpeg:input_1 894metro:120_bpm 895 896# Connect metro to the ffmpeg writable client. 897$ jack_connect metro:120_bpm ffmpeg:input_1 898@end example 899 900For more information read: 901@url{http://jackaudio.org/} 902 903@subsection Options 904 905@table @option 906 907@item channels 908Set the number of channels. Default is 2. 909 910@end table 911 912@section kmsgrab 913 914KMS video input device. 915 916Captures the KMS scanout framebuffer associated with a specified CRTC or plane as a 917DRM object that can be passed to other hardware functions. 918 919Requires either DRM master or CAP_SYS_ADMIN to run. 920 921If you don't understand what all of that means, you probably don't want this. Look at 922@option{x11grab} instead. 923 924@subsection Options 925 926@table @option 927 928@item device 929DRM device to capture on. Defaults to @option{/dev/dri/card0}. 930 931@item format 932Pixel format of the framebuffer. This can be autodetected if you are running Linux 5.7 933or later, but needs to be provided for earlier versions. Defaults to @option{bgr0}, 934which is the most common format used by the Linux console and Xorg X server. 935 936@item format_modifier 937Format modifier to signal on output frames. This is necessary to import correctly into 938some APIs. It can be autodetected if you are running Linux 5.7 or later, but will need 939to be provided explicitly when needed in earlier versions. See the libdrm documentation 940for possible values. 941 942@item crtc_id 943KMS CRTC ID to define the capture source. The first active plane on the given CRTC 944will be used. 945 946@item plane_id 947KMS plane ID to define the capture source. Defaults to the first active plane found if 948neither @option{crtc_id} nor @option{plane_id} are specified. 949 950@item framerate 951Framerate to capture at. This is not synchronised to any page flipping or framebuffer 952changes - it just defines the interval at which the framebuffer is sampled. Sampling 953faster than the framebuffer update rate will generate independent frames with the same 954content. Defaults to @code{30}. 955 956@end table 957 958@subsection Examples 959 960@itemize 961 962@item 963Capture from the first active plane, download the result to normal frames and encode. 964This will only work if the framebuffer is both linear and mappable - if not, the result 965may be scrambled or fail to download. 966@example 967ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4 968@end example 969 970@item 971Capture from CRTC ID 42 at 60fps, map the result to VAAPI, convert to NV12 and encode as H.264. 972@example 973ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4 974@end example 975 976@item 977To capture only part of a plane the output can be cropped - this can be used to capture 978a single window, as long as it has a known absolute position and size. For example, to 979capture and encode the middle quarter of a 1920x1080 plane: 980@example 981ffmpeg -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,crop=960:540:480:270,scale_vaapi=960:540:nv12' -c:v h264_vaapi output.mp4 982@end example 983 984@end itemize 985 986@section lavfi 987 988Libavfilter input virtual device. 989 990This input device reads data from the open output pads of a libavfilter 991filtergraph. 992 993For each filtergraph open output, the input device will create a 994corresponding stream which is mapped to the generated output. Currently 995only video data is supported. The filtergraph is specified through the 996option @option{graph}. 997 998@subsection Options 999 1000@table @option 1001 1002@item graph 1003Specify the filtergraph to use as input. Each video open output must be 1004labelled by a unique string of the form "out@var{N}", where @var{N} is a 1005number starting from 0 corresponding to the mapped input stream 1006generated by the device. 1007The first unlabelled output is automatically assigned to the "out0" 1008label, but all the others need to be specified explicitly. 1009 1010The suffix "+subcc" can be appended to the output label to create an extra 1011stream with the closed captions packets attached to that output 1012(experimental; only for EIA-608 / CEA-708 for now). 1013The subcc streams are created after all the normal streams, in the order of 1014the corresponding stream. 1015For example, if there is "out19+subcc", "out7+subcc" and up to "out42", the 1016stream #43 is subcc for stream #7 and stream #44 is subcc for stream #19. 1017 1018If not specified defaults to the filename specified for the input 1019device. 1020 1021@item graph_file 1022Set the filename of the filtergraph to be read and sent to the other 1023filters. Syntax of the filtergraph is the same as the one specified by 1024the option @var{graph}. 1025 1026@item dumpgraph 1027Dump graph to stderr. 1028 1029@end table 1030 1031@subsection Examples 1032 1033@itemize 1034@item 1035Create a color video stream and play it back with @command{ffplay}: 1036@example 1037ffplay -f lavfi -graph "color=c=pink [out0]" dummy 1038@end example 1039 1040@item 1041As the previous example, but use filename for specifying the graph 1042description, and omit the "out0" label: 1043@example 1044ffplay -f lavfi color=c=pink 1045@end example 1046 1047@item 1048Create three different video test filtered sources and play them: 1049@example 1050ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3 1051@end example 1052 1053@item 1054Read an audio stream from a file using the amovie source and play it 1055back with @command{ffplay}: 1056@example 1057ffplay -f lavfi "amovie=test.wav" 1058@end example 1059 1060@item 1061Read an audio stream and a video stream and play it back with 1062@command{ffplay}: 1063@example 1064ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]" 1065@end example 1066 1067@item 1068Dump decoded frames to images and closed captions to a file (experimental): 1069@example 1070ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rawvideo subcc.bin 1071@end example 1072 1073@end itemize 1074 1075@section libcdio 1076 1077Audio-CD input device based on libcdio. 1078 1079To enable this input device during configuration you need libcdio 1080installed on your system. It requires the configure option 1081@code{--enable-libcdio}. 1082 1083This device allows playing and grabbing from an Audio-CD. 1084 1085For example to copy with @command{ffmpeg} the entire Audio-CD in @file{/dev/sr0}, 1086you may run the command: 1087@example 1088ffmpeg -f libcdio -i /dev/sr0 cd.wav 1089@end example 1090 1091@subsection Options 1092@table @option 1093@item speed 1094Set drive reading speed. Default value is 0. 1095 1096The speed is specified CD-ROM speed units. The speed is set through 1097the libcdio @code{cdio_cddap_speed_set} function. On many CD-ROM 1098drives, specifying a value too large will result in using the fastest 1099speed. 1100 1101@item paranoia_mode 1102Set paranoia recovery mode flags. It accepts one of the following values: 1103 1104@table @samp 1105@item disable 1106@item verify 1107@item overlap 1108@item neverskip 1109@item full 1110@end table 1111 1112Default value is @samp{disable}. 1113 1114For more information about the available recovery modes, consult the 1115paranoia project documentation. 1116@end table 1117 1118@section libdc1394 1119 1120IIDC1394 input device, based on libdc1394 and libraw1394. 1121 1122Requires the configure option @code{--enable-libdc1394}. 1123 1124@subsection Options 1125@table @option 1126 1127@item framerate 1128Set the frame rate. Default is @code{ntsc}, corresponding to a frame 1129rate of @code{30000/1001}. 1130 1131@item pixel_format 1132Select the pixel format. Default is @code{uyvy422}. 1133 1134@item video_size 1135Set the video size given as a string such as @code{640x480} or @code{hd720}. 1136Default is @code{qvga}. 1137@end table 1138 1139@section openal 1140 1141The OpenAL input device provides audio capture on all systems with a 1142working OpenAL 1.1 implementation. 1143 1144To enable this input device during configuration, you need OpenAL 1145headers and libraries installed on your system, and need to configure 1146FFmpeg with @code{--enable-openal}. 1147 1148OpenAL headers and libraries should be provided as part of your OpenAL 1149implementation, or as an additional download (an SDK). Depending on your 1150installation you may need to specify additional flags via the 1151@code{--extra-cflags} and @code{--extra-ldflags} for allowing the build 1152system to locate the OpenAL headers and libraries. 1153 1154An incomplete list of OpenAL implementations follows: 1155 1156@table @strong 1157@item Creative 1158The official Windows implementation, providing hardware acceleration 1159with supported devices and software fallback. 1160See @url{http://openal.org/}. 1161@item OpenAL Soft 1162Portable, open source (LGPL) software implementation. Includes 1163backends for the most common sound APIs on the Windows, Linux, 1164Solaris, and BSD operating systems. 1165See @url{http://kcat.strangesoft.net/openal.html}. 1166@item Apple 1167OpenAL is part of Core Audio, the official Mac OS X Audio interface. 1168See @url{http://developer.apple.com/technologies/mac/audio-and-video.html} 1169@end table 1170 1171This device allows one to capture from an audio input device handled 1172through OpenAL. 1173 1174You need to specify the name of the device to capture in the provided 1175filename. If the empty string is provided, the device will 1176automatically select the default device. You can get the list of the 1177supported devices by using the option @var{list_devices}. 1178 1179@subsection Options 1180 1181@table @option 1182 1183@item channels 1184Set the number of channels in the captured audio. Only the values 1185@option{1} (monaural) and @option{2} (stereo) are currently supported. 1186Defaults to @option{2}. 1187 1188@item sample_size 1189Set the sample size (in bits) of the captured audio. Only the values 1190@option{8} and @option{16} are currently supported. Defaults to 1191@option{16}. 1192 1193@item sample_rate 1194Set the sample rate (in Hz) of the captured audio. 1195Defaults to @option{44.1k}. 1196 1197@item list_devices 1198If set to @option{true}, print a list of devices and exit. 1199Defaults to @option{false}. 1200 1201@end table 1202 1203@subsection Examples 1204 1205Print the list of OpenAL supported devices and exit: 1206@example 1207$ ffmpeg -list_devices true -f openal -i dummy out.ogg 1208@end example 1209 1210Capture from the OpenAL device @file{DR-BT101 via PulseAudio}: 1211@example 1212$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg 1213@end example 1214 1215Capture from the default device (note the empty string '' as filename): 1216@example 1217$ ffmpeg -f openal -i '' out.ogg 1218@end example 1219 1220Capture from two devices simultaneously, writing to two different files, 1221within the same @command{ffmpeg} command: 1222@example 1223$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg 1224@end example 1225Note: not all OpenAL implementations support multiple simultaneous capture - 1226try the latest OpenAL Soft if the above does not work. 1227 1228@section oss 1229 1230Open Sound System input device. 1231 1232The filename to provide to the input device is the device node 1233representing the OSS input device, and is usually set to 1234@file{/dev/dsp}. 1235 1236For example to grab from @file{/dev/dsp} using @command{ffmpeg} use the 1237command: 1238@example 1239ffmpeg -f oss -i /dev/dsp /tmp/oss.wav 1240@end example 1241 1242For more information about OSS see: 1243@url{http://manuals.opensound.com/usersguide/dsp.html} 1244 1245@subsection Options 1246 1247@table @option 1248 1249@item sample_rate 1250Set the sample rate in Hz. Default is 48000. 1251 1252@item channels 1253Set the number of channels. Default is 2. 1254 1255@end table 1256 1257@section pulse 1258 1259PulseAudio input device. 1260 1261To enable this output device you need to configure FFmpeg with @code{--enable-libpulse}. 1262 1263The filename to provide to the input device is a source device or the 1264string "default" 1265 1266To list the PulseAudio source devices and their properties you can invoke 1267the command @command{pactl list sources}. 1268 1269More information about PulseAudio can be found on @url{http://www.pulseaudio.org}. 1270 1271@subsection Options 1272@table @option 1273@item server 1274Connect to a specific PulseAudio server, specified by an IP address. 1275Default server is used when not provided. 1276 1277@item name 1278Specify the application name PulseAudio will use when showing active clients, 1279by default it is the @code{LIBAVFORMAT_IDENT} string. 1280 1281@item stream_name 1282Specify the stream name PulseAudio will use when showing active streams, 1283by default it is "record". 1284 1285@item sample_rate 1286Specify the samplerate in Hz, by default 48kHz is used. 1287 1288@item channels 1289Specify the channels in use, by default 2 (stereo) is set. 1290 1291@item frame_size 1292This option does nothing and is deprecated. 1293 1294@item fragment_size 1295Specify the size in bytes of the minimal buffering fragment in PulseAudio, it 1296will affect the audio latency. By default it is set to 50 ms amount of data. 1297 1298@item wallclock 1299Set the initial PTS using the current time. Default is 1. 1300 1301@end table 1302 1303@subsection Examples 1304Record a stream from default device: 1305@example 1306ffmpeg -f pulse -i default /tmp/pulse.wav 1307@end example 1308 1309@section sndio 1310 1311sndio input device. 1312 1313To enable this input device during configuration you need libsndio 1314installed on your system. 1315 1316The filename to provide to the input device is the device node 1317representing the sndio input device, and is usually set to 1318@file{/dev/audio0}. 1319 1320For example to grab from @file{/dev/audio0} using @command{ffmpeg} use the 1321command: 1322@example 1323ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav 1324@end example 1325 1326@subsection Options 1327 1328@table @option 1329 1330@item sample_rate 1331Set the sample rate in Hz. Default is 48000. 1332 1333@item channels 1334Set the number of channels. Default is 2. 1335 1336@end table 1337 1338@section video4linux2, v4l2 1339 1340Video4Linux2 input video device. 1341 1342"v4l2" can be used as alias for "video4linux2". 1343 1344If FFmpeg is built with v4l-utils support (by using the 1345@code{--enable-libv4l2} configure option), it is possible to use it with the 1346@code{-use_libv4l2} input device option. 1347 1348The name of the device to grab is a file device node, usually Linux 1349systems tend to automatically create such nodes when the device 1350(e.g. an USB webcam) is plugged into the system, and has a name of the 1351kind @file{/dev/video@var{N}}, where @var{N} is a number associated to 1352the device. 1353 1354Video4Linux2 devices usually support a limited set of 1355@var{width}x@var{height} sizes and frame rates. You can check which are 1356supported using @command{-list_formats all} for Video4Linux2 devices. 1357Some devices, like TV cards, support one or more standards. It is possible 1358to list all the supported standards using @command{-list_standards all}. 1359 1360The time base for the timestamps is 1 microsecond. Depending on the kernel 1361version and configuration, the timestamps may be derived from the real time 1362clock (origin at the Unix Epoch) or the monotonic clock (origin usually at 1363boot time, unaffected by NTP or manual changes to the clock). The 1364@option{-timestamps abs} or @option{-ts abs} option can be used to force 1365conversion into the real time clock. 1366 1367Some usage examples of the video4linux2 device with @command{ffmpeg} 1368and @command{ffplay}: 1369@itemize 1370@item 1371List supported formats for a video4linux2 device: 1372@example 1373ffplay -f video4linux2 -list_formats all /dev/video0 1374@end example 1375 1376@item 1377Grab and show the input of a video4linux2 device: 1378@example 1379ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0 1380@end example 1381 1382@item 1383Grab and record the input of a video4linux2 device, leave the 1384frame rate and size as previously set: 1385@example 1386ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg 1387@end example 1388@end itemize 1389 1390For more information about Video4Linux, check @url{http://linuxtv.org/}. 1391 1392@subsection Options 1393 1394@table @option 1395@item standard 1396Set the standard. Must be the name of a supported standard. To get a 1397list of the supported standards, use the @option{list_standards} 1398option. 1399 1400@item channel 1401Set the input channel number. Default to -1, which means using the 1402previously selected channel. 1403 1404@item video_size 1405Set the video frame size. The argument must be a string in the form 1406@var{WIDTH}x@var{HEIGHT} or a valid size abbreviation. 1407 1408@item pixel_format 1409Select the pixel format (only valid for raw video input). 1410 1411@item input_format 1412Set the preferred pixel format (for raw video) or a codec name. 1413This option allows one to select the input format, when several are 1414available. 1415 1416@item framerate 1417Set the preferred video frame rate. 1418 1419@item list_formats 1420List available formats (supported pixel formats, codecs, and frame 1421sizes) and exit. 1422 1423Available values are: 1424@table @samp 1425@item all 1426Show all available (compressed and non-compressed) formats. 1427 1428@item raw 1429Show only raw video (non-compressed) formats. 1430 1431@item compressed 1432Show only compressed formats. 1433@end table 1434 1435@item list_standards 1436List supported standards and exit. 1437 1438Available values are: 1439@table @samp 1440@item all 1441Show all supported standards. 1442@end table 1443 1444@item timestamps, ts 1445Set type of timestamps for grabbed frames. 1446 1447Available values are: 1448@table @samp 1449@item default 1450Use timestamps from the kernel. 1451 1452@item abs 1453Use absolute timestamps (wall clock). 1454 1455@item mono2abs 1456Force conversion from monotonic to absolute timestamps. 1457@end table 1458 1459Default value is @code{default}. 1460 1461@item use_libv4l2 1462Use libv4l2 (v4l-utils) conversion functions. Default is 0. 1463 1464@end table 1465 1466@section vfwcap 1467 1468VfW (Video for Windows) capture input device. 1469 1470The filename passed as input is the capture driver number, ranging from 14710 to 9. You may use "list" as filename to print a list of drivers. Any 1472other filename will be interpreted as device number 0. 1473 1474@subsection Options 1475 1476@table @option 1477 1478@item video_size 1479Set the video frame size. 1480 1481@item framerate 1482Set the grabbing frame rate. Default value is @code{ntsc}, 1483corresponding to a frame rate of @code{30000/1001}. 1484 1485@end table 1486 1487@section x11grab 1488 1489X11 video input device. 1490 1491To enable this input device during configuration you need libxcb 1492installed on your system. It will be automatically detected during 1493configuration. 1494 1495This device allows one to capture a region of an X11 display. 1496 1497The filename passed as input has the syntax: 1498@example 1499[@var{hostname}]:@var{display_number}.@var{screen_number}[+@var{x_offset},@var{y_offset}] 1500@end example 1501 1502@var{hostname}:@var{display_number}.@var{screen_number} specifies the 1503X11 display name of the screen to grab from. @var{hostname} can be 1504omitted, and defaults to "localhost". The environment variable 1505@env{DISPLAY} contains the default display name. 1506 1507@var{x_offset} and @var{y_offset} specify the offsets of the grabbed 1508area with respect to the top-left border of the X11 screen. They 1509default to 0. 1510 1511Check the X11 documentation (e.g. @command{man X}) for more detailed 1512information. 1513 1514Use the @command{xdpyinfo} program for getting basic information about 1515the properties of your X11 display (e.g. grep for "name" or 1516"dimensions"). 1517 1518For example to grab from @file{:0.0} using @command{ffmpeg}: 1519@example 1520ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg 1521@end example 1522 1523Grab at position @code{10,20}: 1524@example 1525ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg 1526@end example 1527 1528@subsection Options 1529 1530@table @option 1531@item select_region 1532Specify whether to select the grabbing area graphically using the pointer. 1533A value of @code{1} prompts the user to select the grabbing area graphically 1534by clicking and dragging. A single click with no dragging will select the 1535whole screen. A region with zero width or height will also select the whole 1536screen. This option overwrites the @var{video_size}, @var{grab_x}, and 1537@var{grab_y} options. Default value is @code{0}. 1538 1539@item draw_mouse 1540Specify whether to draw the mouse pointer. A value of @code{0} specifies 1541not to draw the pointer. Default value is @code{1}. 1542 1543@item follow_mouse 1544Make the grabbed area follow the mouse. The argument can be 1545@code{centered} or a number of pixels @var{PIXELS}. 1546 1547When it is specified with "centered", the grabbing region follows the mouse 1548pointer and keeps the pointer at the center of region; otherwise, the region 1549follows only when the mouse pointer reaches within @var{PIXELS} (greater than 1550zero) to the edge of region. 1551 1552For example: 1553@example 1554ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg 1555@end example 1556 1557To follow only when the mouse pointer reaches within 100 pixels to edge: 1558@example 1559ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg 1560@end example 1561 1562@item framerate 1563Set the grabbing frame rate. Default value is @code{ntsc}, 1564corresponding to a frame rate of @code{30000/1001}. 1565 1566@item show_region 1567Show grabbed region on screen. 1568 1569If @var{show_region} is specified with @code{1}, then the grabbing 1570region will be indicated on screen. With this option, it is easy to 1571know what is being grabbed if only a portion of the screen is grabbed. 1572 1573@item region_border 1574Set the region border thickness if @option{-show_region 1} is used. 1575Range is 1 to 128 and default is 3 (XCB-based x11grab only). 1576 1577For example: 1578@example 1579ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg 1580@end example 1581 1582With @var{follow_mouse}: 1583@example 1584ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg 1585@end example 1586 1587@item window_id 1588Grab this window, instead of the whole screen. Default value is 0, which maps to 1589the whole screen (root window). 1590 1591The id of a window can be found using the @command{xwininfo} program, possibly with options -tree and 1592-root. 1593 1594If the window is later enlarged, the new area is not recorded. Video ends when 1595the window is closed, unmapped (i.e., iconified) or shrunk beyond the video 1596size (which defaults to the initial window size). 1597 1598This option disables options @option{follow_mouse} and @option{select_region}. 1599 1600@item video_size 1601Set the video frame size. Default is the full desktop or window. 1602 1603@item grab_x 1604@item grab_y 1605Set the grabbing region coordinates. They are expressed as offset from 1606the top left corner of the X11 window and correspond to the 1607@var{x_offset} and @var{y_offset} parameters in the device name. The 1608default value for both options is 0. 1609@end table 1610 1611@c man end INPUT DEVICES 1612