123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550 |
- @chapter Output Devices
- @c man begin 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=@var{OUTDEV}", or you can disable a particular
- input device using the option "--disable-outdev=@var{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.
- @section alsa
- ALSA (Advanced Linux Sound Architecture) output device.
- @subsection Examples
- @itemize
- @item
- Play a file on default ALSA device:
- @example
- ffmpeg -i INPUT -f alsa default
- @end example
- @item
- Play a file on soundcard 1, audio device 7:
- @example
- ffmpeg -i INPUT -f alsa hw:1,7
- @end example
- @end itemize
- @section AudioToolbox
- AudioToolbox output device.
- Allows native output to CoreAudio devices on OSX.
- The output filename can be empty (or @code{-}) to refer to the default system output device or a number that refers to the device index as shown using: @code{-list_devices true}.
- Alternatively, the audio input device can be chosen by index using the
- @option{
- -audio_device_index <INDEX>
- }
- , overriding any device name or index given in the input filename.
- All available devices can be enumerated by using @option{-list_devices true}, listing
- all device names, UIDs and corresponding indices.
- @subsection Options
- AudioToolbox supports the following options:
- @table @option
- @item -audio_device_index <INDEX>
- Specify the audio device by its index. Overrides anything given in the output filename.
- @end table
- @subsection Examples
- @itemize
- @item
- Print the list of supported devices and output a sine wave to the default device:
- @example
- $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true -
- @end example
- @item
- Output a sine wave to the device with the index 2, overriding any output filename:
- @example
- $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 -
- @end example
- @end itemize
- @section 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
- @code{--enable-libcaca}.
- libcaca is a graphics library that outputs text instead of pixels.
- For more information about libcaca, check:
- @url{http://caca.zoy.org/wiki/libcaca}
- @subsection Options
- @table @option
- @item window_title
- Set the CACA window title, if not specified default to the filename
- specified for the output device.
- @item window_size
- Set the CACA window size, can be a string of the form
- @var{width}x@var{height} or a video size abbreviation.
- If not specified it defaults to the size of the input video.
- @item driver
- Set display driver.
- @item 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 @code{-list_dither algorithms}.
- @item antialias
- Set antialias method. Antialiasing smoothens the rendered
- image and avoids the commonly seen staircase effect.
- The accepted values are listed with @code{-list_dither antialiases}.
- @item charset
- Set which characters are going to be used when rendering text.
- The accepted values are listed with @code{-list_dither charsets}.
- @item color
- Set color to be used when rendering text.
- The accepted values are listed with @code{-list_dither colors}.
- @item list_drivers
- If set to @option{true}, print a list of available drivers and exit.
- @item list_dither
- List available dither options related to the argument.
- The argument must be one of @code{algorithms}, @code{antialiases},
- @code{charsets}, @code{colors}.
- @end table
- @subsection Examples
- @itemize
- @item
- The following command shows the @command{ffmpeg} output is an
- CACA window, forcing its size to 80x25:
- @example
- ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
- @end example
- @item
- Show the list of available drivers and exit:
- @example
- ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
- @end example
- @item
- Show the list of available dither colors and exit:
- @example
- ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
- @end example
- @end itemize
- @section 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 @code{--extra-cflags}
- and @code{--extra-ldflags}.
- On Windows, you need to run the IDL files through @command{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 @command{-list_formats 1}. Audio sample rate is always 48 kHz.
- @subsection Options
- @table @option
- @item list_devices
- If set to @option{true}, print a list of devices and exit.
- Defaults to @option{false}. This option is deprecated, please use the
- @code{-sinks} option of ffmpeg to list the available output devices.
- @item list_formats
- If set to @option{true}, print a list of supported formats and exit.
- Defaults to @option{false}.
- @item preroll
- Amount of time to preroll video in seconds.
- Defaults to @option{0.5}.
- @item duplex_mode
- Sets the decklink device duplex/profile mode. Must be @samp{unset}, @samp{half}, @samp{full},
- @samp{one_sub_device_full}, @samp{one_sub_device_half}, @samp{two_sub_device_full},
- @samp{four_sub_device_half}
- Defaults to @samp{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):
- @samp{one_sub_device_full}, @samp{one_sub_device_half}, @samp{two_sub_device_full},
- @samp{four_sub_device_half}
- Valid profile modes for DeckLink Quad 2 and DeckLink Duo 2:
- @samp{half}, @samp{full}
- @item timing_offset
- Sets the genlock timing pixel offset on the used output.
- Defaults to @samp{unset}.
- @item link
- Sets the SDI video link configuration on the used output. Must be
- @samp{unset}, @samp{single} link SDI, @samp{dual} link SDI or @samp{quad} link
- SDI.
- Defaults to @samp{unset}.
- @item sqd
- Enable Square Division Quad Split mode for Quad-link SDI output.
- Must be @samp{unset}, @samp{true} or @samp{false}.
- Defaults to @option{unset}.
- @item level_a
- Enable SMPTE Level A mode on the used output.
- Must be @samp{unset}, @samp{true} or @samp{false}.
- Defaults to @option{unset}.
- @end table
- @subsection Examples
- @itemize
- @item
- List output devices:
- @example
- ffmpeg -sinks decklink
- @end example
- @item
- List supported formats:
- @example
- ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
- @end example
- @item
- Play video clip:
- @example
- ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
- @end example
- @item
- Play video clip with non-standard framerate or video size:
- @example
- ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
- @end example
- @end itemize
- @section 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
- @file{/dev/fb0}.
- For more detailed information read the file
- @file{Documentation/fb/framebuffer.txt} included in the Linux source tree.
- @subsection Options
- @table @option
- @item xoffset
- @item yoffset
- Set x/y coordinate of top left corner. Default is 0.
- @end table
- @subsection Examples
- Play a file on framebuffer device @file{/dev/fb0}.
- Required pixel format depends on current framebuffer settings.
- @example
- ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0
- @end example
- See also @url{http://linux-fbdev.sourceforge.net/}, and fbset(1).
- @section opengl
- OpenGL output device.
- To enable this output device you need to configure FFmpeg with @code{--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:
- @code{AV_DEV_TO_APP_CREATE_WINDOW_BUFFER} - create OpenGL context on current thread.
- @code{AV_DEV_TO_APP_PREPARE_WINDOW_BUFFER} - make OpenGL context current.
- @code{AV_DEV_TO_APP_DISPLAY_WINDOW_BUFFER} - swap buffers.
- @code{AV_DEV_TO_APP_DESTROY_WINDOW_BUFFER} - destroy OpenGL context.
- Application is also required to inform a device about current resolution by sending @code{AV_APP_TO_DEV_WINDOW_SIZE} message.
- @subsection Options
- @table @option
- @item background
- Set background color. Black is a default.
- @item no_window
- Disables default SDL window when set to non-zero value.
- Application must provide OpenGL context and both @code{window_size_cb} and @code{window_swap_buffers_cb} callbacks when set.
- @item window_title
- Set the SDL window title, if not specified default to the filename specified for the output device.
- Ignored when @option{no_window} is set.
- @item 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 @option{no_window} is not set.
- @end table
- @subsection Examples
- Play a file on SDL window using OpenGL rendering:
- @example
- ffmpeg -i INPUT -f opengl "window title"
- @end example
- @section oss
- OSS (Open Sound System) output device.
- @section pulse
- PulseAudio output device.
- To enable this output device you need to configure FFmpeg with @code{--enable-libpulse}.
- More information about PulseAudio can be found on @url{http://www.pulseaudio.org}
- @subsection Options
- @table @option
- @item server
- Connect to a specific PulseAudio server, specified by an IP address.
- Default server is used when not provided.
- @item name
- Specify the application name PulseAudio will use when showing active clients,
- by default it is the @code{LIBAVFORMAT_IDENT} string.
- @item stream_name
- Specify the stream name PulseAudio will use when showing active streams,
- by default it is set to the specified output name.
- @item device
- Specify the device to use. Default device is used when not provided.
- List of output devices can be obtained with command @command{pactl list sinks}.
- @item buffer_size
- @item buffer_duration
- Control the size and duration of the PulseAudio buffer. A small buffer
- gives more control, but requires more frequent updates.
- @option{buffer_size} specifies size in bytes while
- @option{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.
- @item prebuf
- Specify pre-buffering size in bytes. The server does not start with
- playback before at least @option{prebuf} bytes are available in the
- buffer. By default this option is initialized to the same value as
- @option{buffer_size} or @option{buffer_duration} (whichever is bigger).
- @item minreq
- Specify minimum request size in bytes. The server does not request less
- than @option{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.
- @end table
- @subsection Examples
- Play a file on default device on default server:
- @example
- ffmpeg -i INPUT -f pulse "stream name"
- @end example
- @section sdl
- SDL (Simple DirectMedia Layer) output device.
- "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:
- @url{http://www.libsdl.org/}
- @subsection Options
- @table @option
- @item window_title
- Set the SDL window title, if not specified default to the filename
- specified for the output device.
- @item icon_title
- Set the name of the iconified SDL window, if not specified it is set
- to the same value of @var{window_title}.
- @item window_size
- Set the SDL window size, can be a string of the form
- @var{width}x@var{height} or a video size abbreviation.
- If not specified it defaults to the size of the input video,
- downscaled according to the aspect ratio.
- @item window_x
- @item window_y
- Set the position of the window on the screen.
- @item window_fullscreen
- Set fullscreen mode when non-zero value is provided.
- Default value is zero.
- @item 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)
- @end table
- @subsection Interactive commands
- The window created by the device can be controlled through the
- following interactive commands.
- @table @key
- @item q, ESC
- Quit the device immediately.
- @end table
- @subsection Examples
- The following command shows the @command{ffmpeg} output is an
- SDL window, forcing its size to the qcif format:
- @example
- ffmpeg -i INPUT -c:v rawvideo -pix_fmt yuv420p -window_size qcif -f sdl "SDL output"
- @end example
- @section sndio
- sndio audio output device.
- @section v4l2
- Video4Linux2 output device.
- @section xv
- XV (XVideo) output device.
- This output device allows one to show a video stream in a X Window System
- window.
- @subsection Options
- @table @option
- @item 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 @var{hostname}[:@var{number}[.@var{screen_number}]].
- @var{hostname} specifies the name of the host machine on which the
- display is physically attached. @var{number} specifies the number of
- the display server on that host machine. @var{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, @code{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.
- @item window_id
- When set to non-zero value then device doesn't create new window,
- but uses existing one with provided @var{window_id}. By default
- this options is set to zero and device creates its own window.
- @item window_size
- Set the created window size, can be a string of the form
- @var{width}x@var{height} or a video size abbreviation. If not
- specified it defaults to the size of the input video.
- Ignored when @var{window_id} is set.
- @item window_x
- @item 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 @var{window_id} is set.
- @item window_title
- Set the window title, if not specified default to the filename
- specified for the output device. Ignored when @var{window_id} is set.
- @end table
- For more information about XVideo see @url{http://www.x.org/}.
- @subsection Examples
- @itemize
- @item
- Decode, display and encode video input with @command{ffmpeg} at the
- same time:
- @example
- ffmpeg -i INPUT OUTPUT -f xv display
- @end example
- @item
- Decode and display the input video to multiple X11 windows:
- @example
- ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
- @end example
- @end itemize
- @c man end OUTPUT DEVICES
|