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