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