Spaces:
Running
Running
FFMPEG-DEVICES(1) FFMPEG-DEVICES(1) | |
NAME | |
ffmpeg-devices - FFmpeg devices | |
DESCRIPTION | |
This document describes the input and output devices provided by the | |
libavdevice library. | |
DEVICE OPTIONS | |
The libavdevice library provides the same interface as libavformat. | |
Namely, an input device is considered like a demuxer, and an output | |
device like a muxer, and the interface and generic device options are | |
the same provided by libavformat (see the ffmpeg-formats manual). | |
In addition each input or output device may support so-called private | |
options, which are specific for that component. | |
Options may be set by specifying -option value in the FFmpeg tools, or | |
by setting the value explicitly in the device "AVFormatContext" options | |
or using the libavutil/opt.h API for programmatic use. | |
INPUT DEVICES | |
Input devices are configured elements in FFmpeg which enable accessing | |
the data coming from a multimedia device attached to your system. | |
When you configure your FFmpeg build, all the supported input devices | |
are enabled by default. You can list all available ones using the | |
configure option "--list-indevs". | |
You can disable all the input devices using the configure option | |
"--disable-indevs", and selectively enable an input device using the | |
option "--enable-indev=INDEV", or you can disable a particular input | |
device using the option "--disable-indev=INDEV". | |
The option "-devices" of the ff* tools will display the list of | |
supported input devices. | |
A description of the currently available input devices follows. | |
alsa | |
ALSA (Advanced Linux Sound Architecture) input device. | |
To enable this input device during configuration you need libasound | |
installed on your system. | |
This device allows capturing from an ALSA device. The name of the | |
device to capture has to be an ALSA card identifier. | |
An ALSA identifier has the syntax: | |
hw:<CARD>[,<DEV>[,<SUBDEV>]] | |
where the DEV and SUBDEV components are optional. | |
The three arguments (in order: CARD,DEV,SUBDEV) specify card number or | |
identifier, device number and subdevice number (-1 means any). | |
To see the list of cards currently recognized by your system check the | |
files /proc/asound/cards and /proc/asound/devices. | |
For example to capture with ffmpeg from an ALSA device with card id 0, | |
you may run the command: | |
ffmpeg -f alsa -i hw:0 alsaout.wav | |
For more information see: | |
<http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html> | |
Options | |
sample_rate | |
Set the sample rate in Hz. Default is 48000. | |
channels | |
Set the number of channels. Default is 2. | |
android_camera | |
Android camera input device. | |
This input devices uses the Android Camera2 NDK API which is available | |
on devices with API level 24+. The availability of android_camera is | |
autodetected during configuration. | |
This device allows capturing from all cameras on an Android device, | |
which are integrated into the Camera2 NDK API. | |
The available cameras are enumerated internally and can be selected | |
with the camera_index parameter. The input file string is discarded. | |
Generally the back facing camera has index 0 while the front facing | |
camera has index 1. | |
Options | |
video_size | |
Set the video size given as a string such as 640x480 or hd720. | |
Falls back to the first available configuration reported by Android | |
if requested video size is not available or by default. | |
framerate | |
Set the video framerate. Falls back to the first available | |
configuration reported by Android if requested framerate is not | |
available or by default (-1). | |
camera_index | |
Set the index of the camera to use. Default is 0. | |
input_queue_size | |
Set the maximum number of frames to buffer. Default is 5. | |
avfoundation | |
AVFoundation input device. | |
AVFoundation is the currently recommended framework by Apple for | |
streamgrabbing on OSX >= 10.7 as well as on iOS. | |
The input filename has to be given in the following syntax: | |
-i "[[VIDEO]:[AUDIO]]" | |
The first entry selects the video input while the latter selects the | |
audio input. The stream has to be specified by the device name or the | |
device index as shown by the device list. Alternatively, the video | |
and/or audio input device can be chosen by index using the | |
B<-video_device_index E<lt>INDEXE<gt>> | |
and/or | |
B<-audio_device_index E<lt>INDEXE<gt>> | |
, overriding any device name or index given in the input filename. | |
All available devices can be enumerated by using -list_devices true, | |
listing all device names and corresponding indices. | |
There are two device name aliases: | |
"default" | |
Select the AVFoundation default device of the corresponding type. | |
"none" | |
Do not record the corresponding media type. This is equivalent to | |
specifying an empty device name or index. | |
Options | |
AVFoundation supports the following options: | |
-list_devices <TRUE|FALSE> | |
If set to true, a list of all available input devices is given | |
showing all device names and indices. | |
-video_device_index <INDEX> | |
Specify the video device by its index. Overrides anything given in | |
the input filename. | |
-audio_device_index <INDEX> | |
Specify the audio device by its index. Overrides anything given in | |
the input filename. | |
-pixel_format <FORMAT> | |
Request the video device to use a specific pixel format. If the | |
specified format is not supported, a list of available formats is | |
given and the first one in this list is used instead. Available | |
pixel formats are: "monob, rgb555be, rgb555le, rgb565be, rgb565le, | |
rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0, | |
bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, | |
yuv422p10, yuv444p10, | |
yuv420p, nv12, yuyv422, gray" | |
-framerate | |
Set the grabbing frame rate. Default is "ntsc", corresponding to a | |
frame rate of "30000/1001". | |
-video_size | |
Set the video frame size. | |
-capture_cursor | |
Capture the mouse pointer. Default is 0. | |
-capture_mouse_clicks | |
Capture the screen mouse clicks. Default is 0. | |
-capture_raw_data | |
Capture the raw device data. Default is 0. Using 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. | |
Examples | |
o Print the list of AVFoundation supported devices and exit: | |
$ ffmpeg -f avfoundation -list_devices true -i "" | |
o Record video from video device 0 and audio from audio device 0 into | |
out.avi: | |
$ ffmpeg -f avfoundation -i "0:0" out.avi | |
o Record video from video device 2 and audio from audio device 1 into | |
out.avi: | |
$ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi | |
o Record video from the system default video device using the pixel | |
format bgr0 and do not record any audio into out.avi: | |
$ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi | |
o Record raw DV data from a suitable input device and write the | |
output into out.dv: | |
$ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv | |
bktr | |
BSD video input device. Deprecated and will be removed - please contact | |
the developers if you are interested in maintaining it. | |
Options | |
framerate | |
Set the frame rate. | |
video_size | |
Set the video frame size. Default is "vga". | |
standard | |
Available values are: | |
pal | |
ntsc | |
secam | |
paln | |
palm | |
ntscj | |
decklink | |
The decklink input device provides capture capabilities for Blackmagic | |
DeckLink devices. | |
To enable this input device, you need the Blackmagic DeckLink SDK and | |
you need to configure with the appropriate "--extra-cflags" and | |
"--extra-ldflags". On Windows, you need to run the IDL files through | |
widl. | |
DeckLink is very picky about the formats it supports. Pixel format of | |
the input can be set with raw_format. Framerate and video size must be | |
determined for your device with -list_formats 1. Audio sample rate is | |
always 48 kHz and the number of channels can be 2, 8 or 16. Note that | |
all audio channels are bundled in one single audio track. | |
Options | |
list_devices | |
If set to true, print a list of devices and exit. Defaults to | |
false. This option is deprecated, please use the "-sources" option | |
of ffmpeg to list the available input devices. | |
list_formats | |
If set to true, print a list of supported formats and exit. | |
Defaults to false. | |
format_code <FourCC> | |
This sets the input video format to the format given by the FourCC. | |
To see the supported values of your device(s) use list_formats. | |
Note that there is a FourCC 'pal ' that can also be used as pal (3 | |
letters). Default behavior is autodetection of the input video | |
format, if the hardware supports it. | |
raw_format | |
Set the pixel format of the captured video. Available values are: | |
auto | |
This is the default which means 8-bit YUV 422 or 8-bit ARGB if | |
format autodetection is used, 8-bit YUV 422 otherwise. | |
uyvy422 | |
8-bit YUV 422. | |
yuv422p10 | |
10-bit YUV 422. | |
argb | |
8-bit RGB. | |
bgra | |
8-bit RGB. | |
rgb10 | |
10-bit RGB. | |
teletext_lines | |
If set to nonzero, an additional teletext stream will be captured | |
from the vertical ancillary data. Both SD PAL (576i) and HD (1080i | |
or 1080p) sources are supported. In case of HD sources, OP47 | |
packets are decoded. | |
This option is a bitmask of the SD PAL VBI lines captured, | |
specifically lines 6 to 22, and lines 318 to 335. Line 6 is the LSB | |
in the mask. Selected lines which do not contain teletext | |
information will be ignored. You can use the special all constant | |
to select all possible lines, or standard to skip lines 6, 318 and | |
319, which are not compatible with all receivers. | |
For SD sources, ffmpeg needs to be compiled with | |
"--enable-libzvbi". For HD sources, on older (pre-4K) DeckLink card | |
models you have to capture in 10 bit mode. | |
channels | |
Defines number of audio channels to capture. Must be 2, 8 or 16. | |
Defaults to 2. | |
duplex_mode | |
Sets the decklink device duplex/profile mode. Must be unset, half, | |
full, one_sub_device_full, one_sub_device_half, | |
two_sub_device_full, four_sub_device_half Defaults to unset. | |
Note: DeckLink SDK 11.0 have replaced the duplex property by a | |
profile property. For the DeckLink Duo 2 and DeckLink Quad 2, a | |
profile is shared between any 2 sub-devices that utilize the same | |
connectors. For the DeckLink 8K Pro, a profile is shared between | |
all 4 sub-devices. So DeckLink 8K Pro support four profiles. | |
Valid profile modes for DeckLink 8K Pro(with DeckLink SDK >= 11.0): | |
one_sub_device_full, one_sub_device_half, two_sub_device_full, | |
four_sub_device_half | |
Valid profile modes for DeckLink Quad 2 and DeckLink Duo 2: half, | |
full | |
timecode_format | |
Timecode type to include in the frame and video stream metadata. | |
Must be none, rp188vitc, rp188vitc2, rp188ltc, rp188hfr, rp188any, | |
vitc, vitc2, or serial. Defaults to none (not included). | |
In order to properly support 50/60 fps timecodes, the ordering of | |
the queried timecode types for rp188any is HFR, VITC1, VITC2 and | |
LTC for >30 fps content. Note that this is slightly different to | |
the ordering used by the DeckLink API, which is HFR, VITC1, LTC, | |
VITC2. | |
video_input | |
Sets the video input source. Must be unset, sdi, hdmi, optical_sdi, | |
component, composite or s_video. Defaults to unset. | |
audio_input | |
Sets the audio input source. Must be unset, embedded, aes_ebu, | |
analog, analog_xlr, analog_rca or microphone. Defaults to unset. | |
video_pts | |
Sets the video packet timestamp source. Must be video, audio, | |
reference, wallclock or abs_wallclock. Defaults to video. | |
audio_pts | |
Sets the audio packet timestamp source. Must be video, audio, | |
reference, wallclock or abs_wallclock. Defaults to audio. | |
draw_bars | |
If set to true, color bars are drawn in the event of a signal loss. | |
Defaults to true. | |
queue_size | |
Sets maximum input buffer size in bytes. If the buffering reaches | |
this value, incoming frames will be dropped. Defaults to | |
1073741824. | |
audio_depth | |
Sets the audio sample bit depth. Must be 16 or 32. Defaults to 16. | |
decklink_copyts | |
If set to true, timestamps are forwarded as they are without | |
removing the initial offset. Defaults to false. | |
timestamp_align | |
Capture start time alignment in seconds. If set to nonzero, input | |
frames are dropped till the system timestamp aligns with configured | |
value. Alignment difference of up to one frame duration is | |
tolerated. This is useful for maintaining input synchronization | |
across N different hardware devices deployed for 'N-way' | |
redundancy. The system time of different hardware devices should be | |
synchronized with protocols such as NTP or PTP, before using this | |
option. Note that this method is not foolproof. In some border | |
cases input synchronization may not happen due to thread scheduling | |
jitters in the OS. Either sync could go wrong by 1 frame or in a | |
rarer case timestamp_align seconds. Defaults to 0. | |
wait_for_tc (bool) | |
Drop frames till a frame with timecode is received. Sometimes | |
serial timecode isn't received with the first input frame. If that | |
happens, the stored stream timecode will be inaccurate. If this | |
option is set to true, input frames are dropped till a frame with | |
timecode is received. Option timecode_format must be specified. | |
Defaults to false. | |
enable_klv(bool) | |
If set to true, extracts KLV data from VANC and outputs KLV | |
packets. KLV VANC packets are joined based on MID and PSC fields | |
and aggregated into one KLV packet. Defaults to false. | |
Examples | |
o List input devices: | |
ffmpeg -sources decklink | |
o List supported formats: | |
ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro' | |
o Capture video clip at 1080i50: | |
ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi | |
o Capture video clip at 1080i50 10 bit: | |
ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi | |
o Capture video clip at 1080i50 with 16 audio channels: | |
ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi | |
dshow | |
Windows DirectShow input device. | |
DirectShow support is enabled when FFmpeg is built with the mingw-w64 | |
project. Currently only audio and video devices are supported. | |
Multiple devices may be opened as separate inputs, but they may also be | |
opened on the same input, which should improve synchronism between | |
them. | |
The input name should be in the format: | |
<TYPE>=<NAME>[:<TYPE>=<NAME>] | |
where TYPE can be either audio or video, and NAME is the device's name | |
or alternative name.. | |
Options | |
If no options are specified, the device's defaults are used. If the | |
device does not support the requested options, it will fail to open. | |
video_size | |
Set the video size in the captured video. | |
framerate | |
Set the frame rate in the captured video. | |
sample_rate | |
Set the sample rate (in Hz) of the captured audio. | |
sample_size | |
Set the sample size (in bits) of the captured audio. | |
channels | |
Set the number of channels in the captured audio. | |
list_devices | |
If set to true, print a list of devices and exit. | |
list_options | |
If set to true, print a list of selected device's options and exit. | |
video_device_number | |
Set video device number for devices with the same name (starts at | |
0, defaults to 0). | |
audio_device_number | |
Set audio device number for devices with the same name (starts at | |
0, defaults to 0). | |
pixel_format | |
Select pixel format to be used by DirectShow. This may only be set | |
when the video codec is not set or set to rawvideo. | |
audio_buffer_size | |
Set audio device buffer size in milliseconds (which can directly | |
impact latency, depending on the device). Defaults to using the | |
audio device's default buffer size (typically some multiple of | |
500ms). Setting this value too low can degrade performance. See | |
also | |
<http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx> | |
video_pin_name | |
Select video capture pin to use by name or alternative name. | |
audio_pin_name | |
Select audio capture pin to use by name or alternative name. | |
crossbar_video_input_pin_number | |
Select video input pin number for crossbar device. This will be | |
routed to the crossbar device's Video Decoder output pin. Note | |
that changing this value can affect future invocations (sets a new | |
default) until system reboot occurs. | |
crossbar_audio_input_pin_number | |
Select audio input pin number for crossbar device. This will be | |
routed to the crossbar device's Audio Decoder output pin. Note | |
that changing this value can affect future invocations (sets a new | |
default) until system reboot occurs. | |
show_video_device_dialog | |
If set to true, before capture starts, popup a display dialog to | |
the end user, allowing them to change video filter properties and | |
configurations manually. Note that for crossbar devices, adjusting | |
values in this dialog may be needed at times to toggle between PAL | |
(25 fps) and NTSC (29.97) input frame rates, sizes, interlacing, | |
etc. Changing these values can enable different scan rates/frame | |
rates and avoiding green bars at the bottom, flickering scan lines, | |
etc. Note that with some devices, changing these properties can | |
also affect future invocations (sets new defaults) until system | |
reboot occurs. | |
show_audio_device_dialog | |
If set to true, before capture starts, popup a display dialog to | |
the end user, allowing them to change audio filter properties and | |
configurations manually. | |
show_video_crossbar_connection_dialog | |
If set to true, before capture starts, popup a display dialog to | |
the end user, allowing them to manually modify crossbar pin | |
routings, when it opens a video device. | |
show_audio_crossbar_connection_dialog | |
If set to true, before capture starts, popup a display dialog to | |
the end user, allowing them to manually modify crossbar pin | |
routings, when it opens an audio device. | |
show_analog_tv_tuner_dialog | |
If set to true, before capture starts, popup a display dialog to | |
the end user, allowing them to manually modify TV channels and | |
frequencies. | |
show_analog_tv_tuner_audio_dialog | |
If set to true, before capture starts, popup a display dialog to | |
the end user, allowing them to manually modify TV audio (like mono | |
vs. stereo, Language A,B or C). | |
audio_device_load | |
Load an audio capture filter device from file instead of searching | |
it by name. It may load additional parameters too, if the filter | |
supports the serialization of its properties to. To use this an | |
audio capture source has to be specified, but it can be anything | |
even fake one. | |
audio_device_save | |
Save the currently used audio capture filter device and its | |
parameters (if the filter supports it) to a file. If a file with | |
the same name exists it will be overwritten. | |
video_device_load | |
Load a video capture filter device from file instead of searching | |
it by name. It may load additional parameters too, if the filter | |
supports the serialization of its properties to. To use this a | |
video capture source has to be specified, but it can be anything | |
even fake one. | |
video_device_save | |
Save the currently used video capture filter device and its | |
parameters (if the filter supports it) to a file. If a file with | |
the same name exists it will be overwritten. | |
use_video_device_timestamps | |
If set to false, the timestamp for video frames will be derived | |
from the wallclock instead of the timestamp provided by the capture | |
device. This allows working around devices that provide unreliable | |
timestamps. | |
Examples | |
o Print the list of DirectShow supported devices and exit: | |
$ ffmpeg -list_devices true -f dshow -i dummy | |
o Open video device Camera: | |
$ ffmpeg -f dshow -i video="Camera" | |
o Open second video device with name Camera: | |
$ ffmpeg -f dshow -video_device_number 1 -i video="Camera" | |
o Open video device Camera and audio device Microphone: | |
$ ffmpeg -f dshow -i video="Camera":audio="Microphone" | |
o Print the list of supported options in selected device and exit: | |
$ ffmpeg -list_options true -f dshow -i video="Camera" | |
o Specify pin names to capture by name or alternative name, specify | |
alternative device name: | |
$ 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" | |
o Configure a crossbar device, specifying crossbar pins, allow user | |
to adjust video capture properties at startup: | |
$ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0 | |
-crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture" | |
fbdev | |
Linux framebuffer input device. | |
The Linux framebuffer is a graphic hardware-independent abstraction | |
layer to show graphics on a computer monitor, typically on the console. | |
It is accessed through a file device node, usually /dev/fb0. | |
For more detailed information read the file | |
Documentation/fb/framebuffer.txt included in the Linux source tree. | |
See also <http://linux-fbdev.sourceforge.net/>, and fbset(1). | |
To record from the framebuffer device /dev/fb0 with ffmpeg: | |
ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi | |
You can take a single screenshot image with the command: | |
ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg | |
Options | |
framerate | |
Set the frame rate. Default is 25. | |
gdigrab | |
Win32 GDI-based screen capture device. | |
This device allows you to capture a region of the display on Windows. | |
Amongst options for the imput filenames are such elements as: | |
desktop | |
or | |
title=<window_title> | |
or | |
hwnd=<window_hwnd> | |
The first option will capture the entire desktop, or a fixed region of | |
the desktop. The second and third options will instead capture the | |
contents of a single window, regardless of its position on the screen. | |
For example, to grab the entire desktop using ffmpeg: | |
ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg | |
Grab a 640x480 region at position "10,20": | |
ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg | |
Grab the contents of the window named "Calculator" | |
ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg | |
Options | |
draw_mouse | |
Specify whether to draw the mouse pointer. Use the value 0 to not | |
draw the pointer. Default value is 1. | |
framerate | |
Set the grabbing frame rate. Default value is "ntsc", corresponding | |
to a frame rate of "30000/1001". | |
show_region | |
Show grabbed region on screen. | |
If show_region is specified with 1, then the grabbing region will | |
be indicated on screen. With this option, it is easy to know what | |
is being grabbed if only a portion of the screen is grabbed. | |
Note that show_region is incompatible with grabbing the contents of | |
a single window. | |
For example: | |
ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg | |
video_size | |
Set the video frame size. The default is to capture the full screen | |
if desktop is selected, or the full window size if | |
title=window_title is selected. | |
offset_x | |
When capturing a region with video_size, set the distance from the | |
left edge of the screen or desktop. | |
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 | |
offset_x value to move the region to that monitor. | |
offset_y | |
When capturing a region with video_size, set the distance from the | |
top edge of the screen or desktop. | |
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 offset_y | |
value to move the region to that monitor. | |
iec61883 | |
FireWire DV/HDV input device using libiec61883. | |
To enable this input device, you need libiec61883, libraw1394 and | |
libavc1394 installed on your system. Use the configure option | |
"--enable-libiec61883" to compile with the device enabled. | |
The iec61883 capture device supports capturing from a video device | |
connected via IEEE1394 (FireWire), using libiec61883 and the new Linux | |
FireWire stack (juju). This is the default DV/HDV input method in Linux | |
Kernel 2.6.37 and later, since the old FireWire stack was removed. | |
Specify the FireWire port to be used as input file, or "auto" to choose | |
the first port connected. | |
Options | |
dvtype | |
Override autodetection of DV/HDV. This should only be used if auto | |
detection does not work, or if usage of a different device type | |
should be prohibited. Treating a DV device as HDV (or vice versa) | |
will not work and result in undefined behavior. The values auto, | |
dv and hdv are supported. | |
dvbuffer | |
Set maximum size of buffer for incoming data, in frames. For DV, | |
this is an exact value. For HDV, it is not frame exact, since HDV | |
does not have a fixed frame size. | |
dvguid | |
Select the capture device by specifying its GUID. Capturing will | |
only be performed from the specified device and fails if no device | |
with the given GUID is found. This is useful to select the input if | |
multiple devices are connected at the same time. Look at | |
/sys/bus/firewire/devices to find out the GUIDs. | |
Examples | |
o Grab and show the input of a FireWire DV/HDV device. | |
ffplay -f iec61883 -i auto | |
o Grab and record the input of a FireWire DV/HDV device, using a | |
packet buffer of 100000 packets if the source is HDV. | |
ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg | |
jack | |
JACK input device. | |
To enable this input device during configuration you need libjack | |
installed on your system. | |
A JACK input device creates one or more JACK writable clients, one for | |
each audio channel, with name client_name:input_N, where client_name is | |
the name provided by the application, and N is a number which | |
identifies the channel. Each writable client will send the acquired | |
data to the FFmpeg input device. | |
Once you have created one or more JACK readable clients, you need to | |
connect them to one or more JACK writable clients. | |
To connect or disconnect JACK clients you can use the jack_connect and | |
jack_disconnect programs, or do it through a graphical interface, for | |
example with qjackctl. | |
To list the JACK clients and their properties you can invoke the | |
command jack_lsp. | |
Follows an example which shows how to capture a JACK readable client | |
with ffmpeg. | |
# Create a JACK writable client with name "ffmpeg". | |
$ ffmpeg -f jack -i ffmpeg -y out.wav | |
# Start the sample jack_metro readable client. | |
$ jack_metro -b 120 -d 0.2 -f 4000 | |
# List the current JACK clients. | |
$ jack_lsp -c | |
system:capture_1 | |
system:capture_2 | |
system:playback_1 | |
system:playback_2 | |
ffmpeg:input_1 | |
metro:120_bpm | |
# Connect metro to the ffmpeg writable client. | |
$ jack_connect metro:120_bpm ffmpeg:input_1 | |
For more information read: <http://jackaudio.org/> | |
Options | |
channels | |
Set the number of channels. Default is 2. | |
kmsgrab | |
KMS video input device. | |
Captures the KMS scanout framebuffer associated with a specified CRTC | |
or plane as a DRM object that can be passed to other hardware | |
functions. | |
Requires either DRM master or CAP_SYS_ADMIN to run. | |
If you don't understand what all of that means, you probably don't want | |
this. Look at x11grab instead. | |
Options | |
device | |
DRM device to capture on. Defaults to /dev/dri/card0. | |
format | |
Pixel format of the framebuffer. This can be autodetected if you | |
are running Linux 5.7 or later, but needs to be provided for | |
earlier versions. Defaults to bgr0, which is the most common | |
format used by the Linux console and Xorg X server. | |
format_modifier | |
Format modifier to signal on output frames. This is necessary to | |
import correctly into some APIs. It can be autodetected if you are | |
running Linux 5.7 or later, but will need to be provided explicitly | |
when needed in earlier versions. See the libdrm documentation for | |
possible values. | |
crtc_id | |
KMS CRTC ID to define the capture source. The first active plane | |
on the given CRTC will be used. | |
plane_id | |
KMS plane ID to define the capture source. Defaults to the first | |
active plane found if neither crtc_id nor plane_id are specified. | |
framerate | |
Framerate to capture at. This is not synchronised to any page | |
flipping or framebuffer changes - it just defines the interval at | |
which the framebuffer is sampled. Sampling faster than the | |
framebuffer update rate will generate independent frames with the | |
same content. Defaults to 30. | |
Examples | |
o Capture from the first active plane, download the result to normal | |
frames and encode. This will only work if the framebuffer is both | |
linear and mappable - if not, the result may be scrambled or fail | |
to download. | |
ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4 | |
o Capture from CRTC ID 42 at 60fps, map the result to VAAPI, convert | |
to NV12 and encode as H.264. | |
ffmpeg -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 | |
o To capture only part of a plane the output can be cropped - this | |
can be used to capture a single window, as long as it has a known | |
absolute position and size. For example, to capture and encode the | |
middle quarter of a 1920x1080 plane: | |
ffmpeg -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,crop=960:540:480:270,scale_vaapi=960:540:nv12' -c:v h264_vaapi output.mp4 | |
lavfi | |
Libavfilter input virtual device. | |
This input device reads data from the open output pads of a libavfilter | |
filtergraph. | |
For each filtergraph open output, the input device will create a | |
corresponding stream which is mapped to the generated output. The | |
filtergraph is specified through the option graph. | |
Options | |
graph | |
Specify the filtergraph to use as input. Each video open output | |
must be labelled by a unique string of the form "outN", where N is | |
a number starting from 0 corresponding to the mapped input stream | |
generated by the device. The first unlabelled output is | |
automatically assigned to the "out0" label, but all the others need | |
to be specified explicitly. | |
The suffix "+subcc" can be appended to the output label to create | |
an extra stream with the closed captions packets attached to that | |
output (experimental; only for EIA-608 / CEA-708 for now). The | |
subcc streams are created after all the normal streams, in the | |
order of the corresponding stream. For example, if there is | |
"out19+subcc", "out7+subcc" and up to "out42", the stream #43 is | |
subcc for stream #7 and stream #44 is subcc for stream #19. | |
If not specified defaults to the filename specified for the input | |
device. | |
graph_file | |
Set the filename of the filtergraph to be read and sent to the | |
other filters. Syntax of the filtergraph is the same as the one | |
specified by the option graph. | |
dumpgraph | |
Dump graph to stderr. | |
Examples | |
o Create a color video stream and play it back with ffplay: | |
ffplay -f lavfi -graph "color=c=pink [out0]" dummy | |
o As the previous example, but use filename for specifying the graph | |
description, and omit the "out0" label: | |
ffplay -f lavfi color=c=pink | |
o Create three different video test filtered sources and play them: | |
ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3 | |
o Read an audio stream from a file using the amovie source and play | |
it back with ffplay: | |
ffplay -f lavfi "amovie=test.wav" | |
o Read an audio stream and a video stream and play it back with | |
ffplay: | |
ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]" | |
o Dump decoded frames to images and closed captions to a file | |
(experimental): | |
ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rawvideo subcc.bin | |
libcdio | |
Audio-CD input device based on libcdio. | |
To enable this input device during configuration you need libcdio | |
installed on your system. It requires the configure option | |
"--enable-libcdio". | |
This device allows playing and grabbing from an Audio-CD. | |
For example to copy with ffmpeg the entire Audio-CD in /dev/sr0, you | |
may run the command: | |
ffmpeg -f libcdio -i /dev/sr0 cd.wav | |
Options | |
speed | |
Set drive reading speed. Default value is 0. | |
The speed is specified CD-ROM speed units. The speed is set through | |
the libcdio "cdio_cddap_speed_set" function. On many CD-ROM drives, | |
specifying a value too large will result in using the fastest | |
speed. | |
paranoia_mode | |
Set paranoia recovery mode flags. It accepts one of the following | |
values: | |
disable | |
verify | |
overlap | |
neverskip | |
full | |
Default value is disable. | |
For more information about the available recovery modes, consult | |
the paranoia project documentation. | |
libdc1394 | |
IIDC1394 input device, based on libdc1394 and libraw1394. | |
Requires the configure option "--enable-libdc1394". | |
Options | |
framerate | |
Set the frame rate. Default is "ntsc", corresponding to a frame | |
rate of "30000/1001". | |
pixel_format | |
Select the pixel format. Default is "uyvy422". | |
video_size | |
Set the video size given as a string such as "640x480" or "hd720". | |
Default is "qvga". | |
openal | |
The OpenAL input device provides audio capture on all systems with a | |
working OpenAL 1.1 implementation. | |
To enable this input device during configuration, you need OpenAL | |
headers and libraries installed on your system, and need to configure | |
FFmpeg with "--enable-openal". | |
OpenAL headers and libraries should be provided as part of your OpenAL | |
implementation, or as an additional download (an SDK). Depending on | |
your installation you may need to specify additional flags via the | |
"--extra-cflags" and "--extra-ldflags" for allowing the build system to | |
locate the OpenAL headers and libraries. | |
An incomplete list of OpenAL implementations follows: | |
Creative | |
The official Windows implementation, providing hardware | |
acceleration with supported devices and software fallback. See | |
<http://openal.org/>. | |
OpenAL Soft | |
Portable, open source (LGPL) software implementation. Includes | |
backends for the most common sound APIs on the Windows, Linux, | |
Solaris, and BSD operating systems. See | |
<http://kcat.strangesoft.net/openal.html>. | |
Apple | |
OpenAL is part of Core Audio, the official Mac OS X Audio | |
interface. See | |
<http://developer.apple.com/technologies/mac/audio-and-video.html> | |
This device allows one to capture from an audio input device handled | |
through OpenAL. | |
You need to specify the name of the device to capture in the provided | |
filename. If the empty string is provided, the device will | |
automatically select the default device. You can get the list of the | |
supported devices by using the option list_devices. | |
Options | |
channels | |
Set the number of channels in the captured audio. Only the values 1 | |
(monaural) and 2 (stereo) are currently supported. Defaults to 2. | |
sample_size | |
Set the sample size (in bits) of the captured audio. Only the | |
values 8 and 16 are currently supported. Defaults to 16. | |
sample_rate | |
Set the sample rate (in Hz) of the captured audio. Defaults to | |
44.1k. | |
list_devices | |
If set to true, print a list of devices and exit. Defaults to | |
false. | |
Examples | |
Print the list of OpenAL supported devices and exit: | |
$ ffmpeg -list_devices true -f openal -i dummy out.ogg | |
Capture from the OpenAL device DR-BT101 via PulseAudio: | |
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg | |
Capture from the default device (note the empty string '' as filename): | |
$ ffmpeg -f openal -i '' out.ogg | |
Capture from two devices simultaneously, writing to two different | |
files, within the same ffmpeg command: | |
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg | |
Note: not all OpenAL implementations support multiple simultaneous | |
capture - try the latest OpenAL Soft if the above does not work. | |
oss | |
Open Sound System input device. | |
The filename to provide to the input device is the device node | |
representing the OSS input device, and is usually set to /dev/dsp. | |
For example to grab from /dev/dsp using ffmpeg use the command: | |
ffmpeg -f oss -i /dev/dsp /tmp/oss.wav | |
For more information about OSS see: | |
<http://manuals.opensound.com/usersguide/dsp.html> | |
Options | |
sample_rate | |
Set the sample rate in Hz. Default is 48000. | |
channels | |
Set the number of channels. Default is 2. | |
pulse | |
PulseAudio input device. | |
To enable this output device you need to configure FFmpeg with | |
"--enable-libpulse". | |
The filename to provide to the input device is a source device or the | |
string "default" | |
To list the PulseAudio source devices and their properties you can | |
invoke the command pactl list sources. | |
More information about PulseAudio can be found on | |
<http://www.pulseaudio.org>. | |
Options | |
server | |
Connect to a specific PulseAudio server, specified by an IP | |
address. Default server is used when not provided. | |
name | |
Specify the application name PulseAudio will use when showing | |
active clients, by default it is the "LIBAVFORMAT_IDENT" string. | |
stream_name | |
Specify the stream name PulseAudio will use when showing active | |
streams, by default it is "record". | |
sample_rate | |
Specify the samplerate in Hz, by default 48kHz is used. | |
channels | |
Specify the channels in use, by default 2 (stereo) is set. | |
frame_size | |
This option does nothing and is deprecated. | |
fragment_size | |
Specify the size in bytes of the minimal buffering fragment in | |
PulseAudio, it will affect the audio latency. By default it is set | |
to 50 ms amount of data. | |
wallclock | |
Set the initial PTS using the current time. Default is 1. | |
Examples | |
Record a stream from default device: | |
ffmpeg -f pulse -i default /tmp/pulse.wav | |
sndio | |
sndio input device. | |
To enable this input device during configuration you need libsndio | |
installed on your system. | |
The filename to provide to the input device is the device node | |
representing the sndio input device, and is usually set to /dev/audio0. | |
For example to grab from /dev/audio0 using ffmpeg use the command: | |
ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav | |
Options | |
sample_rate | |
Set the sample rate in Hz. Default is 48000. | |
channels | |
Set the number of channels. Default is 2. | |
video4linux2, v4l2 | |
Video4Linux2 input video device. | |
"v4l2" can be used as alias for "video4linux2". | |
If FFmpeg is built with v4l-utils support (by using the | |
"--enable-libv4l2" configure option), it is possible to use it with the | |
"-use_libv4l2" input device option. | |
The name of the device to grab is a file device node, usually Linux | |
systems tend to automatically create such nodes when the device (e.g. | |
an USB webcam) is plugged into the system, and has a name of the kind | |
/dev/videoN, where N is a number associated to the device. | |
Video4Linux2 devices usually support a limited set of widthxheight | |
sizes and frame rates. You can check which are supported using | |
-list_formats all for Video4Linux2 devices. Some devices, like TV | |
cards, support one or more standards. It is possible to list all the | |
supported standards using -list_standards all. | |
The time base for the timestamps is 1 microsecond. Depending on the | |
kernel version and configuration, the timestamps may be derived from | |
the real time clock (origin at the Unix Epoch) or the monotonic clock | |
(origin usually at boot time, unaffected by NTP or manual changes to | |
the clock). The -timestamps abs or -ts abs option can be used to force | |
conversion into the real time clock. | |
Some usage examples of the video4linux2 device with ffmpeg and ffplay: | |
o List supported formats for a video4linux2 device: | |
ffplay -f video4linux2 -list_formats all /dev/video0 | |
o Grab and show the input of a video4linux2 device: | |
ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0 | |
o Grab and record the input of a video4linux2 device, leave the frame | |
rate and size as previously set: | |
ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg | |
For more information about Video4Linux, check <http://linuxtv.org/>. | |
Options | |
standard | |
Set the standard. Must be the name of a supported standard. To get | |
a list of the supported standards, use the list_standards option. | |
channel | |
Set the input channel number. Default to -1, which means using the | |
previously selected channel. | |
video_size | |
Set the video frame size. The argument must be a string in the form | |
WIDTHxHEIGHT or a valid size abbreviation. | |
pixel_format | |
Select the pixel format (only valid for raw video input). | |
input_format | |
Set the preferred pixel format (for raw video) or a codec name. | |
This option allows one to select the input format, when several are | |
available. | |
framerate | |
Set the preferred video frame rate. | |
list_formats | |
List available formats (supported pixel formats, codecs, and frame | |
sizes) and exit. | |
Available values are: | |
all Show all available (compressed and non-compressed) formats. | |
raw Show only raw video (non-compressed) formats. | |
compressed | |
Show only compressed formats. | |
list_standards | |
List supported standards and exit. | |
Available values are: | |
all Show all supported standards. | |
timestamps, ts | |
Set type of timestamps for grabbed frames. | |
Available values are: | |
default | |
Use timestamps from the kernel. | |
abs Use absolute timestamps (wall clock). | |
mono2abs | |
Force conversion from monotonic to absolute timestamps. | |
Default value is "default". | |
use_libv4l2 | |
Use libv4l2 (v4l-utils) conversion functions. Default is 0. | |
vfwcap | |
VfW (Video for Windows) capture input device. | |
The filename passed as input is the capture driver number, ranging from | |
0 to 9. You may use "list" as filename to print a list of drivers. Any | |
other filename will be interpreted as device number 0. | |
Options | |
video_size | |
Set the video frame size. | |
framerate | |
Set the grabbing frame rate. Default value is "ntsc", corresponding | |
to a frame rate of "30000/1001". | |
x11grab | |
X11 video input device. | |
To enable this input device during configuration you need libxcb | |
installed on your system. It will be automatically detected during | |
configuration. | |
This device allows one to capture a region of an X11 display. | |
The filename passed as input has the syntax: | |
[<hostname>]:<display_number>.<screen_number>[+<x_offset>,<y_offset>] | |
hostname:display_number.screen_number specifies the X11 display name of | |
the screen to grab from. hostname can be omitted, and defaults to | |
"localhost". The environment variable DISPLAY contains the default | |
display name. | |
x_offset and y_offset specify the offsets of the grabbed area with | |
respect to the top-left border of the X11 screen. They default to 0. | |
Check the X11 documentation (e.g. man X) for more detailed information. | |
Use the xdpyinfo program for getting basic information about the | |
properties of your X11 display (e.g. grep for "name" or "dimensions"). | |
For example to grab from :0.0 using ffmpeg: | |
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg | |
Grab at position "10,20": | |
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg | |
Options | |
select_region | |
Specify whether to select the grabbing area graphically using the | |
pointer. A value of 1 prompts the user to select the grabbing area | |
graphically by clicking and dragging. A single click with no | |
dragging will select the whole screen. A region with zero width or | |
height will also select the whole screen. This option overwrites | |
the video_size, grab_x, and grab_y options. Default value is 0. | |
draw_mouse | |
Specify whether to draw the mouse pointer. A value of 0 specifies | |
not to draw the pointer. Default value is 1. | |
follow_mouse | |
Make the grabbed area follow the mouse. The argument can be | |
"centered" or a number of pixels PIXELS. | |
When it is specified with "centered", the grabbing region follows | |
the mouse pointer and keeps the pointer at the center of region; | |
otherwise, the region follows only when the mouse pointer reaches | |
within PIXELS (greater than zero) to the edge of region. | |
For example: | |
ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg | |
To follow only when the mouse pointer reaches within 100 pixels to | |
edge: | |
ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg | |
framerate | |
Set the grabbing frame rate. Default value is "ntsc", corresponding | |
to a frame rate of "30000/1001". | |
show_region | |
Show grabbed region on screen. | |
If show_region is specified with 1, then the grabbing region will | |
be indicated on screen. With this option, it is easy to know what | |
is being grabbed if only a portion of the screen is grabbed. | |
region_border | |
Set the region border thickness if -show_region 1 is used. Range | |
is 1 to 128 and default is 3 (XCB-based x11grab only). | |
For example: | |
ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg | |
With follow_mouse: | |
ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg | |
window_id | |
Grab this window, instead of the whole screen. Default value is 0, | |
which maps to the whole screen (root window). | |
The id of a window can be found using the xwininfo program, | |
possibly with options -tree and -root. | |
If the window is later enlarged, the new area is not recorded. | |
Video ends when the window is closed, unmapped (i.e., iconified) or | |
shrunk beyond the video size (which defaults to the initial window | |
size). | |
This option disables options follow_mouse and select_region. | |
video_size | |
Set the video frame size. Default is the full desktop or window. | |
grab_x | |
grab_y | |
Set the grabbing region coordinates. They are expressed as offset | |
from the top left corner of the X11 window and correspond to the | |
x_offset and y_offset parameters in the device name. The default | |
value for both options is 0. | |
OUTPUT DEVICES | |
Output devices are configured elements in FFmpeg that can write | |
multimedia data to an output device attached to your system. | |
When you configure your FFmpeg build, all the supported output devices | |
are enabled by default. You can list all available ones using the | |
configure option "--list-outdevs". | |
You can disable all the output devices using the configure option | |
"--disable-outdevs", and selectively enable an output device using the | |
option "--enable-outdev=OUTDEV", or you can disable a particular input | |
device using the option "--disable-outdev=OUTDEV". | |
The option "-devices" of the ff* tools will display the list of enabled | |
output devices. | |
A description of the currently available output devices follows. | |
alsa | |
ALSA (Advanced Linux Sound Architecture) output device. | |
Examples | |
o Play a file on default ALSA device: | |
ffmpeg -i INPUT -f alsa default | |
o Play a file on soundcard 1, audio device 7: | |
ffmpeg -i INPUT -f alsa hw:1,7 | |
AudioToolbox | |
AudioToolbox output device. | |
Allows native output to CoreAudio devices on OSX. | |
The output filename can be empty (or "-") to refer to the default | |
system output device or a number that refers to the device index as | |
shown using: "-list_devices true". | |
Alternatively, the audio input device can be chosen by index using the | |
B<-audio_device_index E<lt>INDEXE<gt>> | |
, overriding any device name or index given in the input filename. | |
All available devices can be enumerated by using -list_devices true, | |
listing all device names, UIDs and corresponding indices. | |
Options | |
AudioToolbox supports the following options: | |
-audio_device_index <INDEX> | |
Specify the audio device by its index. Overrides anything given in | |
the output filename. | |
Examples | |
o Print the list of supported devices and output a sine wave to the | |
default device: | |
$ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true - | |
o Output a sine wave to the device with the index 2, overriding any | |
output filename: | |
$ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 - | |
caca | |
CACA output device. | |
This output device allows one to show a video stream in CACA window. | |
Only one CACA window is allowed per application, so you can have only | |
one instance of this output device in an application. | |
To enable this output device you need to configure FFmpeg with | |
"--enable-libcaca". libcaca is a graphics library that outputs text | |
instead of pixels. | |
For more information about libcaca, check: | |
<http://caca.zoy.org/wiki/libcaca> | |
Options | |
window_title | |
Set the CACA window title, if not specified default to the filename | |
specified for the output device. | |
window_size | |
Set the CACA window size, can be a string of the form widthxheight | |
or a video size abbreviation. If not specified it defaults to the | |
size of the input video. | |
driver | |
Set display driver. | |
algorithm | |
Set dithering algorithm. Dithering is necessary because the picture | |
being rendered has usually far more colours than the available | |
palette. The accepted values are listed with "-list_dither | |
algorithms". | |
antialias | |
Set antialias method. Antialiasing smoothens the rendered image and | |
avoids the commonly seen staircase effect. The accepted values are | |
listed with "-list_dither antialiases". | |
charset | |
Set which characters are going to be used when rendering text. The | |
accepted values are listed with "-list_dither charsets". | |
color | |
Set color to be used when rendering text. The accepted values are | |
listed with "-list_dither colors". | |
list_drivers | |
If set to true, print a list of available drivers and exit. | |
list_dither | |
List available dither options related to the argument. The | |
argument must be one of "algorithms", "antialiases", "charsets", | |
"colors". | |
Examples | |
o The following command shows the ffmpeg output is an CACA window, | |
forcing its size to 80x25: | |
ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca - | |
o Show the list of available drivers and exit: | |
ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true - | |
o Show the list of available dither colors and exit: | |
ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors - | |
decklink | |
The decklink output device provides playback capabilities for | |
Blackmagic DeckLink devices. | |
To enable this output device, you need the Blackmagic DeckLink SDK and | |
you need to configure with the appropriate "--extra-cflags" and | |
"--extra-ldflags". On Windows, you need to run the IDL files through | |
widl. | |
DeckLink is very picky about the formats it supports. Pixel format is | |
always uyvy422, framerate, field order and video size must be | |
determined for your device with -list_formats 1. Audio sample rate is | |
always 48 kHz. | |
Options | |
list_devices | |
If set to true, print a list of devices and exit. Defaults to | |
false. This option is deprecated, please use the "-sinks" option of | |
ffmpeg to list the available output devices. | |
list_formats | |
If set to true, print a list of supported formats and exit. | |
Defaults to false. | |
preroll | |
Amount of time to preroll video in seconds. Defaults to 0.5. | |
duplex_mode | |
Sets the decklink device duplex/profile mode. Must be unset, half, | |
full, one_sub_device_full, one_sub_device_half, | |
two_sub_device_full, four_sub_device_half Defaults to unset. | |
Note: DeckLink SDK 11.0 have replaced the duplex property by a | |
profile property. For the DeckLink Duo 2 and DeckLink Quad 2, a | |
profile is shared between any 2 sub-devices that utilize the same | |
connectors. For the DeckLink 8K Pro, a profile is shared between | |
all 4 sub-devices. So DeckLink 8K Pro support four profiles. | |
Valid profile modes for DeckLink 8K Pro(with DeckLink SDK >= 11.0): | |
one_sub_device_full, one_sub_device_half, two_sub_device_full, | |
four_sub_device_half | |
Valid profile modes for DeckLink Quad 2 and DeckLink Duo 2: half, | |
full | |
timing_offset | |
Sets the genlock timing pixel offset on the used output. Defaults | |
to unset. | |
link | |
Sets the SDI video link configuration on the used output. Must be | |
unset, single link SDI, dual link SDI or quad link SDI. Defaults | |
to unset. | |
sqd Enable Square Division Quad Split mode for Quad-link SDI output. | |
Must be unset, true or false. Defaults to unset. | |
level_a | |
Enable SMPTE Level A mode on the used output. Must be unset, true | |
or false. Defaults to unset. | |
vanc_queue_size | |
Sets maximum output buffer size in bytes for VANC data. If the | |
buffering reaches this value, outgoing VANC data will be dropped. | |
Defaults to 1048576. | |
Examples | |
o List output devices: | |
ffmpeg -sinks decklink | |
o List supported formats: | |
ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor' | |
o Play video clip: | |
ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor' | |
o Play video clip with non-standard framerate or video size: | |
ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor' | |
fbdev | |
Linux framebuffer output device. | |
The Linux framebuffer is a graphic hardware-independent abstraction | |
layer to show graphics on a computer monitor, typically on the console. | |
It is accessed through a file device node, usually /dev/fb0. | |
For more detailed information read the file | |
Documentation/fb/framebuffer.txt included in the Linux source tree. | |
Options | |
xoffset | |
yoffset | |
Set x/y coordinate of top left corner. Default is 0. | |
Examples | |
Play a file on framebuffer device /dev/fb0. Required pixel format | |
depends on current framebuffer settings. | |
ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0 | |
See also <http://linux-fbdev.sourceforge.net/>, and fbset(1). | |
opengl | |
OpenGL output device. Deprecated and will be removed. | |
To enable this output device you need to configure FFmpeg with | |
"--enable-opengl". | |
This output device allows one to render to OpenGL context. Context may | |
be provided by application or default SDL window is created. | |
When device renders to external context, application must implement | |
handlers for following messages: "AV_DEV_TO_APP_CREATE_WINDOW_BUFFER" - | |
create OpenGL context on current thread. | |
"AV_DEV_TO_APP_PREPARE_WINDOW_BUFFER" - make OpenGL context current. | |
"AV_DEV_TO_APP_DISPLAY_WINDOW_BUFFER" - swap buffers. | |
"AV_DEV_TO_APP_DESTROY_WINDOW_BUFFER" - destroy OpenGL context. | |
Application is also required to inform a device about current | |
resolution by sending "AV_APP_TO_DEV_WINDOW_SIZE" message. | |
Options | |
background | |
Set background color. Black is a default. | |
no_window | |
Disables default SDL window when set to non-zero value. | |
Application must provide OpenGL context and both "window_size_cb" | |
and "window_swap_buffers_cb" callbacks when set. | |
window_title | |
Set the SDL window title, if not specified default to the filename | |
specified for the output device. Ignored when no_window is set. | |
window_size | |
Set preferred window size, can be a string of the form widthxheight | |
or a video size abbreviation. If not specified it defaults to the | |
size of the input video, downscaled according to the aspect ratio. | |
Mostly usable when no_window is not set. | |
Examples | |
Play a file on SDL window using OpenGL rendering: | |
ffmpeg -i INPUT -f opengl "window title" | |
oss | |
OSS (Open Sound System) output device. | |
pulse | |
PulseAudio output device. | |
To enable this output device you need to configure FFmpeg with | |
"--enable-libpulse". | |
More information about PulseAudio can be found on | |
<http://www.pulseaudio.org> | |
Options | |
server | |
Connect to a specific PulseAudio server, specified by an IP | |
address. Default server is used when not provided. | |
name | |
Specify the application name PulseAudio will use when showing | |
active clients, by default it is the "LIBAVFORMAT_IDENT" string. | |
stream_name | |
Specify the stream name PulseAudio will use when showing active | |
streams, by default it is set to the specified output name. | |
device | |
Specify the device to use. Default device is used when not | |
provided. List of output devices can be obtained with command | |
pactl list sinks. | |
buffer_size | |
buffer_duration | |
Control the size and duration of the PulseAudio buffer. A small | |
buffer gives more control, but requires more frequent updates. | |
buffer_size specifies size in bytes while buffer_duration specifies | |
duration in milliseconds. | |
When both options are provided then the highest value is used | |
(duration is recalculated to bytes using stream parameters). If | |
they are set to 0 (which is default), the device will use the | |
default PulseAudio duration value. By default PulseAudio set buffer | |
duration to around 2 seconds. | |
prebuf | |
Specify pre-buffering size in bytes. The server does not start with | |
playback before at least prebuf bytes are available in the buffer. | |
By default this option is initialized to the same value as | |
buffer_size or buffer_duration (whichever is bigger). | |
minreq | |
Specify minimum request size in bytes. The server does not request | |
less than minreq bytes from the client, instead waits until the | |
buffer is free enough to request more bytes at once. It is | |
recommended to not set this option, which will initialize this to a | |
value that is deemed sensible by the server. | |
Examples | |
Play a file on default device on default server: | |
ffmpeg -i INPUT -f pulse "stream name" | |
sdl | |
SDL (Simple DirectMedia Layer) output device. Deprecated and will be | |
removed. | |
For monitoring purposes in FFmpeg, pipes and a video player such as | |
ffplay can be used: | |
ffmpeg -i INPUT -f nut -c:v rawvideo - | ffplay - | |
"sdl2" can be used as alias for "sdl". | |
This output device allows one to show a video stream in an SDL window. | |
Only one SDL window is allowed per application, so you can have only | |
one instance of this output device in an application. | |
To enable this output device you need libsdl installed on your system | |
when configuring your build. | |
For more information about SDL, check: <http://www.libsdl.org/> | |
Options | |
window_borderless | |
Set SDL window border off. Default value is 0 (enable window | |
border). | |
window_enable_quit | |
Enable quit action (using window button or keyboard key) when non- | |
zero value is provided. Default value is 1 (enable quit action). | |
window_fullscreen | |
Set fullscreen mode when non-zero value is provided. Default value | |
is zero. | |
window_size | |
Set the SDL window size, can be a string of the form widthxheight | |
or a video size abbreviation. If not specified it defaults to the | |
size of the input video, downscaled according to the aspect ratio. | |
window_title | |
Set the SDL window title, if not specified default to the filename | |
specified for the output device. | |
window_x | |
window_y | |
Set the position of the window on the screen. | |
Interactive commands | |
The window created by the device can be controlled through the | |
following interactive commands. | |
q, ESC | |
Quit the device immediately. | |
Examples | |
The following command shows the ffmpeg output is an SDL window, forcing | |
its size to the qcif format: | |
ffmpeg -i INPUT -c:v rawvideo -pix_fmt yuv420p -window_size qcif -f sdl "SDL output" | |
sndio | |
sndio audio output device. | |
v4l2 | |
Video4Linux2 output device. | |
xv | |
XV (XVideo) output device. | |
This output device allows one to show a video stream in a X Window | |
System window. | |
Options | |
display_name | |
Specify the hardware display name, which determines the display and | |
communications domain to be used. | |
The display name or DISPLAY environment variable can be a string in | |
the format hostname[:number[.screen_number]]. | |
hostname specifies the name of the host machine on which the | |
display is physically attached. number specifies the number of the | |
display server on that host machine. screen_number specifies the | |
screen to be used on that server. | |
If unspecified, it defaults to the value of the DISPLAY environment | |
variable. | |
For example, "dual-headed:0.1" would specify screen 1 of display 0 | |
on the machine named ``dual-headed''. | |
Check the X11 specification for more detailed information about the | |
display name format. | |
window_id | |
When set to non-zero value then device doesn't create new window, | |
but uses existing one with provided window_id. By default this | |
options is set to zero and device creates its own window. | |
window_size | |
Set the created window size, can be a string of the form | |
widthxheight or a video size abbreviation. If not specified it | |
defaults to the size of the input video. Ignored when window_id is | |
set. | |
window_x | |
window_y | |
Set the X and Y window offsets for the created window. They are | |
both set to 0 by default. The values may be ignored by the window | |
manager. Ignored when window_id is set. | |
window_title | |
Set the window title, if not specified default to the filename | |
specified for the output device. Ignored when window_id is set. | |
For more information about XVideo see <http://www.x.org/>. | |
Examples | |
o Decode, display and encode video input with ffmpeg at the same | |
time: | |
ffmpeg -i INPUT OUTPUT -f xv display | |
o Decode and display the input video to multiple X11 windows: | |
ffmpeg -i INPUT -f xv normal -vf negate -f xv negated | |
SEE ALSO | |
ffmpeg(1), ffplay(1), ffprobe(1), libavdevice(3) | |
AUTHORS | |
The FFmpeg developers. | |
For details about the authorship, see the Git history of the project | |
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command git log in | |
the FFmpeg source directory, or browsing the online repository at | |
<https://git.ffmpeg.org/ffmpeg>. | |
Maintainers for the specific components are listed in the file | |
MAINTAINERS in the source code tree. | |
FFMPEG-DEVICES(1) | |