Documentación de dispositivos de FFmpeg
1 Descripción
Este documento describe los dispositivos de entrada y salida que ofrece la biblioteca libavdevice.
2 Opciones de dispositivo
La biblioteca libavdevice ofrece la misma interfaz que libavformat. En concreto, un dispositivo de entrada se trata como un demuxer y un dispositivo de salida como un muxer, y tanto la interfaz como las opciones genéricas de dispositivo son las mismas que ofrece libavformat (véase el manual de ffmpeg-formats).
Además, cada dispositivo de entrada o salida puede admitir las llamadas opciones privadas, específicas de ese componente.
Las opciones pueden establecerse indicando -option value en las herramientas de FFmpeg, fijando el valor directamente en las opciones AVFormatContext del dispositivo, o mediante la API de libavutil/opt.h para uso programático.
3 Dispositivos de entrada
Los dispositivos de entrada son elementos configurados en FFmpeg que permiten acceder a los datos procedentes de un dispositivo multimedia conectado al sistema.
Al configurar su compilación de FFmpeg, todos los dispositivos de entrada admitidos se habilitan de forma predeterminada. Puede listar todos los disponibles con la opción de configuración "–list-indevs".
Puede deshabilitar todos los dispositivos de entrada con la opción de configuración "–disable-indevs", habilitar selectivamente un dispositivo de entrada con la opción "–enable-indev=INDEV", o deshabilitar un dispositivo de entrada concreto con la opción "–disable-indev=INDEV".
La opción "-devices" de las herramientas ff* muestra la lista de dispositivos de entrada admitidos.
A continuación se describen los dispositivos de entrada actualmente disponibles.
3.1 alsa
Dispositivo de entrada ALSA (Advanced Linux Sound Architecture).
Para habilitar este dispositivo de entrada durante la configuración es necesario tener libasound instalado en el sistema.
Este dispositivo permite capturar desde un dispositivo ALSA. El nombre del dispositivo que se va a capturar debe ser un identificador de tarjeta ALSA.
Un identificador ALSA tiene la siguiente sintaxis:
hw:CARD[,DEV[,SUBDEV]]
donde los componentes DEV y SUBDEV son opcionales.
Los tres argumentos (en orden: CARD,DEV,SUBDEV) especifican el número o identificador de tarjeta, el número de dispositivo y el número de subdispositivo (-1 significa cualquiera).
Para ver la lista de tarjetas reconocidas actualmente por el sistema, consulte los archivos /proc/asound/cards y /proc/asound/devices.
Por ejemplo, para capturar con ffmpeg desde un dispositivo ALSA con id de tarjeta 0, puede ejecutar el comando:
ffmpeg -f alsa -i hw:0 alsaout.wav
Para más información véase: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html
3.1.1 Opciones
sample_rate
Establece la frecuencia de muestreo en Hz. El valor predeterminado es 48000.
channels
Establece el número de canales. El valor predeterminado es 2.
3.2 android_camera
Dispositivo de entrada de cámara Android.
Este dispositivo de entrada utiliza la API Android Camera2 NDK, disponible en dispositivos con nivel de API 24 o superior. La disponibilidad de android_camera se detecta automáticamente durante la configuración.
Este dispositivo permite capturar desde todas las cámaras de un dispositivo Android integradas en la API Camera2 NDK.
Las cámaras disponibles se enumeran internamente y pueden seleccionarse con el parámetro camera_index. La cadena del nombre de archivo de entrada se descarta.
Por lo general, la cámara trasera tiene el índice 0, mientras que la delantera tiene el índice 1.
3.2.1 Opciones
video_size
Establece el tamaño de vídeo indicado como una cadena, como 640x480 o hd720. Si el tamaño solicitado no está disponible, o de forma predeterminada, se recurre a la primera configuración disponible que indique Android.
framerate
Establece la velocidad de fotogramas de vídeo. Si la velocidad solicitada no está disponible, o de forma predeterminada (-1), se recurre a la primera configuración disponible que indique Android.
camera_index
Establece el índice de la cámara que se va a usar. El valor predeterminado es 0.
input_queue_size
Establece el número máximo de fotogramas que se almacenan en búfer. El valor predeterminado es 5.
3.3 avfoundation
Dispositivo de entrada AVFoundation.
AVFoundation es el framework actualmente recomendado por Apple para la captura de flujos en OSX >= 10.7, así como en iOS.
El nombre del archivo de entrada debe indicarse con la siguiente sintaxis:
-i "[[VIDEO]:[AUDIO]]"
La primera entrada selecciona la entrada de vídeo, mientras que la segunda selecciona la entrada de audio. El flujo debe especificarse mediante el nombre del dispositivo o el índice del dispositivo, tal como aparece en la lista de dispositivos. Alternativamente, el dispositivo de entrada de vídeo o de audio puede elegirse por índice con -video_device_index
Todos los dispositivos disponibles pueden enumerarse con -list_devices true, que lista todos los nombres de dispositivo y sus índices correspondientes.
Existen dos alias de nombre de dispositivo:
default
Selecciona el dispositivo predeterminado de AVFoundation del tipo correspondiente.
none
No graba el tipo de medio correspondiente. Equivale a especificar un nombre o índice de dispositivo vacío.
3.3.1 Opciones
AVFoundation admite las siguientes opciones:
-list_devices
Si se establece en true, se muestra una lista de todos los dispositivos de entrada disponibles, con sus nombres e índices.
-video_device_index
Especifica el dispositivo de vídeo por su índice. Anula cualquier valor indicado en el nombre de archivo de entrada.
-audio_device_index
Especifica el dispositivo de audio por su índice. Anula cualquier valor indicado en el nombre de archivo de entrada.
-pixel_format
Solicita al dispositivo de vídeo que use un pixel format concreto. Si el formato especificado no es compatible, se muestra una lista de los formatos disponibles y se usa en su lugar el primero de la lista. Los pixel format disponibles son: monob, rgb555be, rgb555le, rgb565be, rgb565le, rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0, bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10, yuv420p, nv12, yuyv422, gray
-framerate
Establece la velocidad de fotogramas de captura. El valor predeterminado es ntsc, que corresponde a una velocidad de 30000/1001.
-video_size
Establece el tamaño de fotograma de vídeo.
-capture_cursor
Captura el puntero del ratón. El valor predeterminado es 0.
-capture_mouse_clicks
Captura los clics del ratón en la pantalla. El valor predeterminado es 0.
-capture_raw_data
Captura los datos brutos del dispositivo. El valor predeterminado es 0. Usar esta opción puede hacer que se reciban los datos subyacentes tal como los entrega el framework AVFoundation. Por ejemplo, en dispositivos muxados que envían datos DV brutos al framework (como las videocámaras de cinta), dejar esta opción en false hace que solo se capturen los fotogramas de vídeo extraídos con el pixel format indicado. Ponerla en true hace que se reciba el flujo DV bruto sin modificar.
3.3.2 Ejemplos
-
Mostrar la lista de dispositivos admitidos por AVFoundation y salir:
$ ffmpeg -f avfoundation -list_devices true -i "" -
Grabar vídeo desde el dispositivo de vídeo 0 y audio desde el dispositivo de audio 0 en out.avi:
$ ffmpeg -f avfoundation -i "0:0" out.avi -
Grabar vídeo desde el dispositivo de vídeo 2 y audio desde el dispositivo de audio 1 en out.avi:
$ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi -
Grabar vídeo desde el dispositivo de vídeo predeterminado del sistema usando el pixel format bgr0, sin grabar audio, en out.avi:
$ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi -
Grabar datos DV brutos desde un dispositivo de entrada adecuado y escribir la salida en out.dv:
$ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv
3.4 decklink
El dispositivo de entrada decklink ofrece funciones de captura para dispositivos Blackmagic DeckLink.
Para habilitar este dispositivo de entrada necesita el SDK de Blackmagic DeckLink y debe configurar con los --extra-cflags y --extra-ldflags adecuados. En Windows es necesario procesar los archivos IDL con widl.
DeckLink es muy exigente con los formatos que admite. El pixel format de la entrada puede establecerse con raw_format. La velocidad de fotogramas y el tamaño de vídeo deben determinarse para su dispositivo con -list_formats 1. La frecuencia de muestreo de audio es siempre de 48 kHz y el número de canales puede ser 2, 8 o 16. Tenga en cuenta que todos los canales de audio se agrupan en una única pista de audio.
3.4.1 Opciones
list_devices
Si se establece en true, muestra una lista de dispositivos y sale. El valor predeterminado es false. Esta opción está obsoleta; use la opción -sources de ffmpeg para listar los dispositivos de entrada disponibles.
list_formats
Si se establece en true, muestra una lista de formatos admitidos y sale. El valor predeterminado es false.
format_code
Esto establece el formato de vídeo de entrada al formato indicado por el FourCC. Para ver los valores admitidos por su(s) dispositivo(s), use list_formats. Tenga en cuenta que existe un FourCC 'pal ' que también puede usarse como pal (3 letras). El comportamiento predeterminado es la autodetección del formato de vídeo de entrada, si el hardware lo permite.
raw_format
Establece el pixel format del vídeo capturado. Los valores disponibles son:
‘auto’
Es el valor predeterminado, que significa YUV 422 de 8 bits, o ARGB de 8 bits si se usa la autodetección de formato; en caso contrario, YUV 422 de 8 bits.
‘uyvy422’
YUV 422 de 8 bits.
‘yuv422p10’
YUV 422 de 10 bits.
‘argb’
RGB de 8 bits.
‘bgra’
RGB de 8 bits.
‘rgb10’
RGB de 10 bits.
teletext_lines
Si se establece en un valor distinto de cero, se capturará un flujo de teletexto adicional a partir de los datos auxiliares verticales. Se admiten tanto fuentes SD PAL (576i) como HD (1080i o 1080p). En el caso de fuentes HD, se decodifican los paquetes OP47.
Esta opción es una máscara de bits de las líneas VBI SD PAL capturadas, en concreto las líneas 6 a 22 y las líneas 318 a 335. La línea 6 es el bit menos significativo (LSB) de la máscara. Las líneas seleccionadas que no contengan información de teletexto se ignorarán. Puede usar la constante especial all para seleccionar todas las líneas posibles, o standard para omitir las líneas 6, 318 y 319, que no son compatibles con todos los receptores.
Para fuentes SD, ffmpeg debe compilarse con --enable-libzvbi. Para fuentes HD, en modelos de tarjeta DeckLink más antiguos (anteriores a 4K) hay que capturar en modo de 10 bits.
channels
Define el número de canales de audio a capturar. Debe ser ‘2’, ‘8’ o ‘16’. El valor predeterminado es ‘2’.
duplex_mode
Establece el modo dúplex/perfil del dispositivo decklink. Debe ser ‘unset’, ‘half’, ‘full’, ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’ o ‘four_sub_device_half’. El valor predeterminado es ‘unset’.
Nota: el SDK de DeckLink 11.0 ha sustituido la propiedad duplex por una propiedad de perfil. En el DeckLink Duo 2 y el DeckLink Quad 2, un perfil se comparte entre cualquier par de subdispositivos que utilicen los mismos conectores. En el DeckLink 8K Pro, un perfil se comparte entre los 4 subdispositivos. Por eso el DeckLink 8K Pro admite cuatro perfiles.
Modos de perfil válidos para el DeckLink 8K Pro (con SDK de DeckLink >= 11.0): ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half’
Modos de perfil válidos para el DeckLink Quad 2 y el DeckLink Duo 2: ‘half’, ‘full’
timecode_format
Tipo de timecode que se incluye en los metadatos del fotograma y del flujo de vídeo. Debe ser ‘none’, ‘rp188vitc’, ‘rp188vitc2’, ‘rp188ltc’, ‘rp188hfr’, ‘rp188any’, ‘vitc’, ‘vitc2’ o ‘serial’. El valor predeterminado es ‘none’ (no incluido).
Para admitir correctamente timecodes de 50/60 fps, el orden de consulta de los tipos de timecode para ‘rp188any’ es HFR, VITC1, VITC2 y LTC para contenido de más de 30 fps. Tenga en cuenta que esto difiere ligeramente del orden que usa la API de DeckLink, que es HFR, VITC1, LTC, VITC2.
video_input
Establece la fuente de entrada de vídeo. Debe ser ‘unset’, ‘sdi’, ‘hdmi’, ‘optical_sdi’, ‘component’, ‘composite’ o ‘s_video’. El valor predeterminado es ‘unset’.
audio_input
Establece la fuente de entrada de audio. Debe ser ‘unset’, ‘embedded’, ‘aes_ebu’, ‘analog’, ‘analog_xlr’, ‘analog_rca’ o ‘microphone’. El valor predeterminado es ‘unset’.
video_pts
Establece la fuente de la marca de tiempo de los paquetes de vídeo. Debe ser ‘video’, ‘audio’, ‘reference’, ‘wallclock’ o ‘abs_wallclock’. El valor predeterminado es ‘video’.
audio_pts
Establece la fuente de la marca de tiempo de los paquetes de audio. Debe ser ‘video’, ‘audio’, ‘reference’, ‘wallclock’ o ‘abs_wallclock’. El valor predeterminado es ‘audio’.
draw_bars
Si se establece en ‘true’, se dibujan barras de color en caso de pérdida de señal. El valor predeterminado es ‘true’. Esta opción está obsoleta; use la opción signal_loss_action.
signal_loss_action
Establece la acción a realizar en caso de pérdida de señal. Acepta uno de los siguientes valores:
1, none
No hacer nada en caso de pérdida de señal. Esto suele producir fotogramas negros.
2, bars
Dibujar barras de color en caso de pérdida de señal. Solo se admite para señales de entrada de 8 bits.
3, repeat
Repetir el último fotograma de vídeo en caso de pérdida de señal.
El valor predeterminado es ‘bars’.
queue_size
Establece el tamaño máximo del búfer de entrada en bytes. Si el búfer alcanza este valor, se descartarán los fotogramas entrantes. El valor predeterminado es ‘1073741824’.
audio_depth
Establece la profundidad de bits de las muestras de audio. Debe ser ‘16’ o ‘32’. El valor predeterminado es ‘16’.
decklink_copyts
Si se establece en true, las marcas de tiempo se transmiten tal cual, sin eliminar el desplazamiento inicial. El valor predeterminado es false.
timestamp_align
Alineación del tiempo de inicio de captura, en segundos. Si se establece en un valor distinto de cero, se descartan los fotogramas de entrada hasta que la marca de tiempo del sistema se alinea con el valor configurado. Se tolera una diferencia de alineación de hasta la duración de un fotograma. Esto es útil para mantener la sincronización de entrada entre N dispositivos de hardware distintos desplegados para redundancia ’N-way’. La hora del sistema de los distintos dispositivos de hardware debe sincronizarse con protocolos como NTP o PTP antes de usar esta opción. Tenga en cuenta que este método no es infalible: en algunos casos límite la sincronización de entrada puede no producirse debido a fluctuaciones (jitter) en la planificación de hilos del sistema operativo. La sincronización podría desviarse en 1 fotograma o, en casos más raros, en timestamp_align segundos. El valor predeterminado es ‘0’.
wait_for_tc (bool)
Descarta fotogramas hasta que se recibe uno con timecode. A veces el timecode serial no se recibe con el primer fotograma de entrada; si esto ocurre, el timecode de flujo almacenado será incorrecto. Si esta opción se establece en true, se descartan los fotogramas de entrada hasta que se recibe uno con timecode. Debe especificarse la opción timecode_format. El valor predeterminado es false.
enable_klv(bool)
Si se establece en true, extrae datos KLV de VANC y genera paquetes KLV. Los paquetes KLV VANC se combinan según los campos MID y PSC y se agrupan en un único paquete KLV. El valor predeterminado es false.
3.4.2 Ejemplos
-
Listar los dispositivos de entrada:
ffmpeg -sources decklink -
Listar los formatos admitidos:
ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro' -
Capturar un clip de vídeo en 1080i50:
ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi -
Capturar un clip de vídeo en 1080i50 a 10 bits:
ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi -
Capturar un clip de vídeo en 1080i50 con 16 canales de audio:
ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
3.5 dshow
Dispositivo de entrada DirectShow de Windows.
La compatibilidad con DirectShow se habilita cuando FFmpeg se compila con el proyecto mingw-w64. Actualmente solo se admiten dispositivos de audio y vídeo.
Pueden abrirse varios dispositivos como entradas independientes, pero también pueden abrirse en la misma entrada, lo que debería mejorar la sincronía entre ellos.
El nombre de entrada debe tener el siguiente formato:
TYPE=NAME[:TYPE=NAME]
donde TYPE puede ser audio o video, y NAME es el nombre del dispositivo o su nombre alternativo.
3.5.1 Opciones
Si no se especifica ninguna opción, se usan los valores predeterminados del dispositivo. Si el dispositivo no admite las opciones solicitadas, no podrá abrirse.
video_size
Establece el tamaño de vídeo del vídeo capturado.
framerate
Establece la velocidad de fotogramas del vídeo capturado.
sample_rate
Establece la frecuencia de muestreo (en Hz) del audio capturado.
sample_size
Establece el tamaño de muestra (en bits) del audio capturado.
channels
Establece el número de canales del audio capturado.
list_devices
Si se establece en true, muestra una lista de dispositivos y sale.
list_options
Si se establece en true, muestra una lista de las opciones del dispositivo seleccionado y sale.
video_device_number
Establece el número de dispositivo de vídeo para dispositivos con el mismo nombre (empieza en 0; el valor predeterminado es 0).
audio_device_number
Establece el número de dispositivo de audio para dispositivos con el mismo nombre (empieza en 0; el valor predeterminado es 0).
pixel_format
Selecciona el pixel format que utilizará DirectShow. Solo puede establecerse cuando el codec de vídeo no está definido o está definido como rawvideo.
audio_buffer_size
Establece el tamaño del búfer del dispositivo de audio en milisegundos (lo que puede afectar directamente a la latencia según el dispositivo). De forma predeterminada se usa el tamaño de búfer predeterminado del dispositivo de audio (normalmente un múltiplo de 500 ms). Un valor demasiado bajo puede degradar el rendimiento. Véase también http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx
video_pin_name
Selecciona el pin de captura de vídeo a usar por nombre o nombre alternativo.
audio_pin_name
Selecciona el pin de captura de audio a usar por nombre o nombre alternativo.
crossbar_video_input_pin_number
Selecciona el número de pin de entrada de vídeo del dispositivo crossbar. Se enrutará al pin de salida del decoder de vídeo del dispositivo crossbar. Tenga en cuenta que cambiar este valor puede afectar a invocaciones futuras (fija un nuevo valor predeterminado) hasta que se reinicie el sistema.
crossbar_audio_input_pin_number
Selecciona el número de pin de entrada de audio del dispositivo crossbar. Se enrutará al pin de salida del decoder de audio del dispositivo crossbar. Tenga en cuenta que cambiar este valor puede afectar a invocaciones futuras (fija un nuevo valor predeterminado) hasta que se reinicie el sistema.
show_video_device_dialog
Si se establece en true, antes de iniciar la captura se muestra al usuario un cuadro de diálogo que le permite cambiar manualmente las propiedades y la configuración del filtro de vídeo. Tenga en cuenta que, en dispositivos crossbar, a veces es necesario ajustar valores en este diálogo para alternar entre velocidades de fotogramas de entrada PAL (25 fps) y NTSC (29,97), tamaños, entrelazado, etc. Cambiar estos valores puede habilitar distintas frecuencias de barrido/fotogramas y evitar barras verdes en la parte inferior, parpadeo de líneas de barrido, etc. Tenga en cuenta que, en algunos dispositivos, cambiar estas propiedades también puede afectar a invocaciones futuras (fija nuevos valores predeterminados) hasta que se reinicie el sistema.
show_audio_device_dialog
Si se establece en true, antes de iniciar la captura se muestra al usuario un cuadro de diálogo que le permite cambiar manualmente las propiedades y la configuración del filtro de audio.
show_video_crossbar_connection_dialog
Si se establece en true, antes de iniciar la captura, al abrir un dispositivo de vídeo se muestra al usuario un cuadro de diálogo que le permite modificar manualmente el enrutado de pines del crossbar.
show_audio_crossbar_connection_dialog
Si se establece en true, antes de iniciar la captura, al abrir un dispositivo de audio se muestra al usuario un cuadro de diálogo que le permite modificar manualmente el enrutado de pines del crossbar.
show_analog_tv_tuner_dialog
Si se establece en true, antes de iniciar la captura se muestra al usuario un cuadro de diálogo que le permite modificar manualmente los canales y frecuencias de TV.
show_analog_tv_tuner_audio_dialog
Si se establece en true, antes de iniciar la captura se muestra al usuario un cuadro de diálogo que le permite modificar manualmente el audio de TV (por ejemplo, mono frente a estéreo, o Idioma A, B o C).
audio_device_load
Carga un dispositivo de filtro de captura de audio desde un archivo en lugar de buscarlo por nombre. También puede cargar parámetros adicionales, si el filtro admite la serialización de sus propiedades. Para usar esto hay que especificar una fuente de captura de audio, aunque puede ser cualquiera, incluso una ficticia.
audio_device_save
Guarda en un archivo el dispositivo de filtro de captura de audio actualmente en uso y sus parámetros (si el filtro lo admite). Si ya existe un archivo con el mismo nombre, se sobrescribirá.
video_device_load
Carga un dispositivo de filtro de captura de vídeo desde un archivo en lugar de buscarlo por nombre. También puede cargar parámetros adicionales, si el filtro admite la serialización de sus propiedades. Para usar esto hay que especificar una fuente de captura de vídeo, aunque puede ser cualquiera, incluso una ficticia.
video_device_save
Guarda en un archivo el dispositivo de filtro de captura de vídeo actualmente en uso y sus parámetros (si el filtro lo admite). Si ya existe un archivo con el mismo nombre, se sobrescribirá.
use_video_device_timestamps
Si se establece en false, la marca de tiempo de los fotogramas de vídeo se derivará del wallclock en lugar de la marca de tiempo proporcionada por el dispositivo de captura. Esto permite sortear dispositivos que proporcionan marcas de tiempo poco fiables.
3.5.2 Ejemplos
-
Mostrar la lista de dispositivos admitidos por DirectShow y salir:
$ ffmpeg -list_devices true -f dshow -i dummy -
Abrir el dispositivo de vídeo Camera:
$ ffmpeg -f dshow -i video="Camera" -
Abrir el segundo dispositivo de vídeo con nombre Camera:
$ ffmpeg -f dshow -video_device_number 1 -i video="Camera" -
Abrir el dispositivo de vídeo Camera y el dispositivo de audio Microphone:
$ ffmpeg -f dshow -i video="Camera":audio="Microphone" -
Mostrar la lista de opciones admitidas por el dispositivo seleccionado y salir:
$ ffmpeg -list_options true -f dshow -i video="Camera" -
Especificar nombres de pin para capturar por nombre o nombre alternativo, indicando un nombre de dispositivo alternativo:
$ 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" -
Configurar un dispositivo crossbar indicando sus pines, permitiendo al usuario ajustar las propiedades de captura de vídeo al inicio:
$ 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"
3.6 fbdev
Dispositivo de entrada framebuffer de Linux.
El framebuffer de Linux es una capa de abstracción gráfica independiente del hardware para mostrar gráficos en un monitor, normalmente en la consola. Se accede a él mediante un nodo de dispositivo de archivo, habitualmente /dev/fb0.
Para obtener información más detallada, consulte el archivo Documentation/fb/framebuffer.txt incluido en el árbol de fuentes de Linux.
Véase también http://linux-fbdev.sourceforge.net/ y fbset(1).
Para grabar desde el dispositivo framebuffer /dev/fb0 con ffmpeg:
ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi
Puede capturar una única imagen de pantalla con el comando:
ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg
3.6.1 Opciones
framerate
Establece la velocidad de fotogramas. El valor predeterminado es 25.
3.7 gdigrab
Dispositivo de captura de pantalla basado en GDI de Win32.
Este dispositivo permite capturar una región de la pantalla en Windows.
Entre las opciones para los nombres de archivo de entrada se incluyen elementos como:
desktop
o
title=window_title
o
hwnd=window_hwnd
La primera opción captura todo el escritorio, o una región fija del escritorio. La segunda y la tercera opción, en cambio, capturan el contenido de una única ventana, independientemente de su posición en la pantalla.
Por ejemplo, para capturar todo el escritorio con ffmpeg:
ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg
Capturar una región de 640x480 en la posición 10,20:
ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg
Capturar el contenido de la ventana llamada "Calculator"
ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg
3.7.1 Opciones
draw_mouse
Especifica si se dibuja el puntero del ratón. Use el valor 0 para no dibujarlo. El valor predeterminado es 1.
framerate
Establece la velocidad de fotogramas de captura. El valor predeterminado es ntsc, que corresponde a una velocidad de 30000/1001.
show_region
Muestra en pantalla la región capturada.
Si show_region se especifica con 1, la región de captura se indicará en pantalla. Con esta opción resulta fácil saber qué se está capturando cuando solo se captura una parte de la pantalla.
Tenga en cuenta que show_region es incompatible con la captura del contenido de una única ventana.
Por ejemplo:
ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
video_size
Establece el tamaño de fotograma de vídeo. De forma predeterminada se captura la pantalla completa si se selecciona desktop, o el tamaño completo de la ventana si se selecciona title=window_title.
offset_x
Al capturar una región con video_size, establece la distancia desde el borde izquierdo de la pantalla o el escritorio.
Tenga en cuenta que el cálculo del desplazamiento se realiza desde la esquina superior izquierda del monitor principal en Windows. Si tiene un monitor situado a la izquierda de su monitor principal, deberá usar un valor negativo de offset_x para mover la región a ese monitor.
offset_y
Al capturar una región con video_size, establece la distancia desde el borde superior de la pantalla o el escritorio.
Tenga en cuenta que el cálculo del desplazamiento se realiza desde la esquina superior izquierda del monitor principal en Windows. Si tiene un monitor situado encima de su monitor principal, deberá usar un valor negativo de offset_y para mover la región a ese monitor.
3.8 iec61883
Dispositivo de entrada FireWire DV/HDV que usa libiec61883.
Para habilitar este dispositivo de entrada necesita tener libiec61883, libraw1394 y libavc1394 instalados en el sistema. Use la opción de configuración --enable-libiec61883 para compilar con el dispositivo habilitado.
El dispositivo de captura iec61883 permite capturar desde un dispositivo de vídeo conectado mediante IEEE1394 (FireWire), usando libiec61883 y la nueva pila FireWire de Linux (juju). Este es el método de entrada DV/HDV predeterminado en el kernel de Linux 2.6.37 y posteriores, ya que se eliminó la antigua pila FireWire.
Especifique el puerto FireWire que se usará como archivo de entrada, o "auto" para elegir el primer puerto conectado.
3.8.1 Opciones
dvtype
Anula la autodetección de DV/HDV. Solo debería usarse si la autodetección no funciona, o si se quiere impedir el uso de un tipo de dispositivo distinto. Tratar un dispositivo DV como HDV (o viceversa) no funcionará y provocará un comportamiento indefinido. Se admiten los valores auto, dv y hdv.
dvbuffer
Establece el tamaño máximo del búfer para los datos entrantes, en fotogramas. Para DV es un valor exacto. Para HDV no es exacto en fotogramas, ya que HDV no tiene un tamaño de fotograma fijo.
dvguid
Selecciona el dispositivo de captura indicando su GUID. La captura solo se realizará desde el dispositivo especificado y fallará si no se encuentra ningún dispositivo con el GUID indicado. Es útil para seleccionar la entrada cuando hay varios dispositivos conectados al mismo tiempo. Consulte /sys/bus/firewire/devices para averiguar los GUID.
3.8.2 Ejemplos
-
Capturar y mostrar la entrada de un dispositivo FireWire DV/HDV.
ffplay -f iec61883 -i auto -
Capturar y grabar la entrada de un dispositivo FireWire DV/HDV, usando un búfer de paquetes de 100000 paquetes si la fuente es HDV.
ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
3.9 jack
Dispositivo de entrada JACK.
Para habilitar este dispositivo de entrada durante la configuración necesita tener libjack instalado en el sistema.
Un dispositivo de entrada JACK crea uno o más clientes JACK de escritura, uno por cada canal de audio, con el nombre client_name:input_N, donde client_name es el nombre proporcionado por la aplicación y N es un número que identifica el canal. Cada cliente de escritura enviará los datos adquiridos al dispositivo de entrada de FFmpeg.
Una vez creados uno o más clientes JACK de lectura, hay que conectarlos a uno o más clientes JACK de escritura.
Para conectar o desconectar clientes JACK puede usar los programas jack_connect y jack_disconnect, o hacerlo mediante una interfaz gráfica, por ejemplo con qjackctl.
Para listar los clientes JACK y sus propiedades puede invocar el comando jack_lsp.
A continuación, un ejemplo que muestra cómo capturar un cliente JACK de lectura con 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
Para más información: http://jackaudio.org/
3.9.1 Opciones
channels
Establece el número de canales. El valor predeterminado es 2.
3.10 kmsgrab
Dispositivo de entrada de vídeo KMS.
Captura el framebuffer de scanout KMS asociado a un CRTC o plano especificado como un objeto DRM que puede pasarse a otras funciones de hardware.
Requiere ser DRM master o disponer de CAP_SYS_ADMIN para ejecutarse.
Si no entiende lo que significa todo esto, probablemente esto no sea lo que necesita. Consulte x11grab en su lugar.
3.10.1 Opciones
device
Dispositivo DRM en el que capturar. El valor predeterminado es /dev/dri/card0.
format
Pixel format del framebuffer. Puede autodetectarse si se ejecuta Linux 5.7 o posterior, pero debe indicarse en versiones anteriores. El valor predeterminado es bgr0, el formato más habitual que usan la consola de Linux y el servidor Xorg X.
format_modifier
Modificador de formato que se debe señalizar en los fotogramas de salida. Es necesario para importarlos correctamente en algunas API. Puede autodetectarse si se ejecuta Linux 5.7 o posterior, pero deberá indicarse explícitamente cuando sea necesario en versiones anteriores. Consulte la documentación de libdrm para conocer los valores posibles.
crtc_id
ID de CRTC KMS que define la fuente de captura. Se usará el primer plano activo del CRTC indicado.
plane_id
ID de plano KMS que define la fuente de captura. Si no se especifica ni crtc_id ni plane_id, se usa de forma predeterminada el primer plano activo encontrado.
framerate
Velocidad de fotogramas de captura. No está sincronizada con los cambios de página ni con las actualizaciones del framebuffer; simplemente define el intervalo con el que se muestrea el framebuffer. Muestrear más rápido que la velocidad de actualización del framebuffer generará fotogramas independientes con el mismo contenido. El valor predeterminado es 30.
3.10.2 Ejemplos
-
Capturar desde el primer plano activo, descargar el resultado a fotogramas normales y codificar. Esto solo funcionará si el framebuffer es a la vez lineal y mapeable; en caso contrario, el resultado puede quedar distorsionado o fallar la descarga.
ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4 -
Capturar desde el CRTC con ID 42 a 60 fps, mapear el resultado a VAAPI, convertir a NV12 y codificar como 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 -
Para capturar solo parte de un plano, la salida puede recortarse; esto puede usarse para capturar una única ventana, siempre que tenga una posición y un tamaño absolutos conocidos. Por ejemplo, para capturar y codificar el cuarto central de un plano de 1920x1080:
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
3.11 lavfi
Dispositivo de entrada virtual Libavfilter.
Este dispositivo de entrada lee datos de los pads de salida abiertos de un filtergraph de libavfilter.
Por cada salida abierta del filtergraph, el dispositivo de entrada creará un flujo correspondiente que se mapea a la salida generada. El filtergraph se especifica mediante la opción graph.
3.11.1 Opciones
graph
Especifica el filtergraph que se usará como entrada. Cada salida de vídeo abierta debe etiquetarse con una cadena única de la forma "outN", donde N es un número a partir de 0 que corresponde al flujo de entrada mapeado generado por el dispositivo. La primera salida sin etiquetar se asigna automáticamente a la etiqueta "out0", pero todas las demás deben especificarse explícitamente.
Puede añadirse el sufijo "+subcc" a la etiqueta de salida para crear un flujo adicional con los paquetes de subtítulos ocultos (closed captions) asociados a esa salida (experimental; por ahora solo para EIA-608 / CEA-708). Los flujos subcc se crean después de todos los flujos normales, en el orden del flujo correspondiente. Por ejemplo, si existen "out19+subcc", "out7+subcc" y hasta "out42", el flujo #43 es el subcc del flujo #7 y el flujo #44 es el subcc del flujo #19.
Si no se especifica, se usa de forma predeterminada el nombre de archivo indicado para el dispositivo de entrada.
graph_file
Establece el nombre de archivo del filtergraph que se leerá y se enviará a los demás filtros. La sintaxis del filtergraph es la misma que la especificada por la opción graph.
dumpgraph
Vuelca el graph a stderr.
3.11.2 Ejemplos
-
Crear un flujo de vídeo de color y reproducirlo con
ffplay:ffplay -f lavfi -graph "color=c=pink [out0]" dummy -
Como en el ejemplo anterior, pero usando el nombre de archivo para indicar la descripción del graph, y omitiendo la etiqueta "out0":
ffplay -f lavfi color=c=pink -
Crear tres fuentes de prueba de vídeo filtradas distintas y reproducirlas:
ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3 -
Leer un flujo de audio desde un archivo usando la fuente amovie y reproducirlo con
ffplay:ffplay -f lavfi "amovie=test.wav" -
Leer un flujo de audio y un flujo de vídeo y reproducirlos con
ffplay:ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]" -
Volcar los fotogramas decodificados a imágenes y los subtítulos ocultos (Closed Captions) a una copia de seguridad RCWT:
ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rcwt subcc.bin
3.12 libcdio
Dispositivo de entrada de Audio-CD basado en libcdio.
Para habilitar este dispositivo de entrada durante la configuración, necesita tener libcdio instalado en su sistema. Requiere la opción de configure --enable-libcdio.
Este dispositivo permite reproducir y capturar desde un Audio-CD.
Por ejemplo, para copiar con ffmpeg el Audio-CD completo en /dev/sr0, puede ejecutar el siguiente comando:
ffmpeg -f libcdio -i /dev/sr0 cd.wav
3.12.1 Opciones
speed
Establece la velocidad de lectura de la unidad. El valor predeterminado es 0.
La velocidad se especifica en unidades de velocidad CD-ROM. La velocidad se establece mediante la función cdio_cddap_speed_set de libcdio. En muchas unidades CD-ROM, especificar un valor demasiado alto hará que se use la velocidad más rápida disponible.
paranoia_mode
Establece los flags del modo de recuperación paranoia. Acepta uno de los siguientes valores:
‘disable’ ‘verify’ ‘overlap’ ‘neverskip’ ‘full’
El valor predeterminado es ‘disable’.
Para más información sobre los modos de recuperación disponibles, consulte la documentación del proyecto paranoia.
3.13 libdc1394
Dispositivo de entrada IIDC1394, basado en libdc1394 y libraw1394.
Requiere la opción de configure --enable-libdc1394.
3.13.1 Opciones
framerate
Establece la velocidad de fotogramas. El valor predeterminado es ntsc, que corresponde a una velocidad de fotogramas de 30000/1001.
pixel_format
Selecciona el pixel format. El valor predeterminado es uyvy422.
video_size
Establece el tamaño de vídeo indicado como una cadena, por ejemplo 640x480 o hd720. El valor predeterminado es qvga.
3.14 openal
El dispositivo de entrada OpenAL permite la captura de audio en cualquier sistema que disponga de una implementación funcional de OpenAL 1.1.
Para habilitar este dispositivo de entrada durante la configuración, necesita tener instaladas en su sistema las cabeceras y bibliotecas de OpenAL, y debe configurar FFmpeg con --enable-openal.
Las cabeceras y bibliotecas de OpenAL deberían formar parte de su implementación de OpenAL, o estar disponibles como una descarga adicional (un SDK). Según su instalación, puede que necesite especificar flags adicionales mediante --extra-cflags y --extra-ldflags para que el sistema de compilación pueda localizar las cabeceras y bibliotecas de OpenAL.
A continuación se muestra una lista no exhaustiva de implementaciones de OpenAL:
Creative
La implementación oficial de Windows, que ofrece aceleración por hardware con los dispositivos compatibles y alternativa por software. Véase http://openal.org/.
OpenAL Soft
Implementación por software portable y de código abierto (LGPL). Incluye backends para las API de sonido más habituales en los sistemas operativos Windows, Linux, Solaris y BSD. Véase http://kcat.strangesoft.net/openal.html.
Apple
OpenAL forma parte de Core Audio, la interfaz de audio oficial de Mac OS X. Véase http://developer.apple.com/technologies/mac/audio-and-video.html
Este dispositivo permite capturar desde un dispositivo de entrada de audio gestionado a través de OpenAL.
Debe especificar el nombre del dispositivo del que capturar en el nombre de archivo proporcionado. Si se indica la cadena vacía, el dispositivo seleccionará automáticamente el dispositivo predeterminado. Puede obtener la lista de dispositivos admitidos usando la opción list_devices.
3.14.1 Opciones
channels
Establece el número de canales del audio capturado. Actualmente solo se admiten los valores 1 (mono) y 2 (estéreo). El valor predeterminado es 2.
sample_size
Establece el tamaño de muestra (en bits) del audio capturado. Actualmente solo se admiten los valores 8 y 16. El valor predeterminado es 16.
sample_rate
Establece la frecuencia de muestreo (en Hz) del audio capturado. El valor predeterminado es 44.1k.
list_devices
Si se establece en true, imprime una lista de dispositivos y sale. El valor predeterminado es false.
3.14.2 Ejemplos
Imprime la lista de dispositivos admitidos por OpenAL y sale:
$ ffmpeg -list_devices true -f openal -i dummy out.ogg
Captura desde el dispositivo OpenAL DR-BT101 vía PulseAudio:
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
Captura desde el dispositivo predeterminado (observe la cadena vacía ” como nombre de archivo):
$ ffmpeg -f openal -i '' out.ogg
Captura desde dos dispositivos simultáneamente, escribiendo en dos archivos distintos, dentro del mismo comando ffmpeg:
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
Nota: no todas las implementaciones de OpenAL admiten captura simultánea múltiple; pruebe con la última versión de OpenAL Soft si lo anterior no funciona.
3.15 oss
Dispositivo de entrada Open Sound System.
El nombre de archivo que debe proporcionarse al dispositivo de entrada es el nodo de dispositivo que representa el dispositivo de entrada OSS, y habitualmente es /dev/dsp.
Por ejemplo, para capturar desde /dev/dsp con ffmpeg, use el siguiente comando:
ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
Para más información sobre OSS, véase: http://manuals.opensound.com/usersguide/dsp.html
3.15.1 Opciones
sample_rate
Establece la frecuencia de muestreo en Hz. El valor predeterminado es 48000.
channels
Establece el número de canales. El valor predeterminado es 2.
3.16 pulse
Dispositivo de entrada PulseAudio.
Para habilitar este dispositivo de salida, debe configurar FFmpeg con --enable-libpulse.
El nombre de archivo que debe proporcionarse al dispositivo de entrada es un dispositivo de origen o la cadena "default"
Para listar los dispositivos de origen de PulseAudio y sus propiedades, puede invocar el comando pactl list sources.
Puede encontrar más información sobre PulseAudio en http://www.pulseaudio.org.
3.16.1 Opciones
server
Se conecta a un servidor PulseAudio específico, indicado mediante una dirección IP. Si no se proporciona, se usa el servidor predeterminado.
name
Especifica el nombre de aplicación que PulseAudio usará al mostrar los clientes activos; de forma predeterminada es la cadena LIBAVFORMAT_IDENT.
stream_name
Especifica el nombre de flujo que PulseAudio usará al mostrar los flujos activos; de forma predeterminada es "record".
sample_rate
Especifica la frecuencia de muestreo en Hz; de forma predeterminada se usan 48kHz.
channels
Especifica los canales en uso; de forma predeterminada se establecen 2 (estéreo).
frame_size
Esta opción no hace nada y está obsoleta.
fragment_size
Especifica en bytes el tamaño del fragmento mínimo de búfer en PulseAudio; esto afectará a la latencia de audio. De forma predeterminada se establece a una cantidad de datos equivalente a 50 ms.
wallclock
Establece el PTS inicial usando la hora actual. El valor predeterminado es 1.
3.16.2 Ejemplos
Graba un flujo desde el dispositivo predeterminado:
ffmpeg -f pulse -i default /tmp/pulse.wav
3.17 sndio
Dispositivo de entrada sndio.
Para habilitar este dispositivo de entrada durante la configuración, necesita tener libsndio instalado en su sistema.
El nombre de archivo que debe proporcionarse al dispositivo de entrada es el nodo de dispositivo que representa el dispositivo de entrada sndio, y habitualmente es /dev/audio0.
Por ejemplo, para capturar desde /dev/audio0 con ffmpeg, use el siguiente comando:
ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
3.17.1 Opciones
sample_rate
Establece la frecuencia de muestreo en Hz. El valor predeterminado es 48000.
channels
Establece el número de canales. El valor predeterminado es 2.
3.18 video4linux2, v4l2
Dispositivo de entrada de vídeo Video4Linux2.
"v4l2" puede usarse como alias de "video4linux2".
Si FFmpeg se compila con compatibilidad con v4l-utils (mediante la opción de configure --enable-libv4l2), es posible usarlo con la opción de dispositivo de entrada -use_libv4l2.
El nombre del dispositivo del que capturar es un nodo de dispositivo de archivo; los sistemas Linux suelen crear automáticamente estos nodos cuando el dispositivo (por ejemplo, una webcam USB) se conecta al sistema, con un nombre del tipo /dev/videoN, donde N es un número asociado al dispositivo.
Los dispositivos Video4Linux2 suelen admitir un conjunto limitado de tamaños anchoxalto y velocidades de fotogramas. Puede comprobar cuáles se admiten usando -list_formats all para dispositivos Video4Linux2. Algunos dispositivos, como las tarjetas de TV, admiten uno o más estándares. Es posible listar todos los estándares admitidos usando -list_standards all.
La base de tiempo de las marcas de tiempo es 1 microsegundo. Según la versión y configuración del kernel, las marcas de tiempo pueden derivarse del reloj de tiempo real (con origen en el Unix Epoch) o del reloj monotónico (con origen habitualmente en el arranque, sin verse afectado por NTP ni por cambios manuales del reloj). La opción -timestamps abs o -ts abs puede usarse para forzar la conversión al reloj de tiempo real.
Algunos ejemplos de uso del dispositivo video4linux2 con ffmpeg y ffplay:
-
Lista los formatos admitidos por un dispositivo video4linux2:
ffplay -f video4linux2 -list_formats all /dev/video0 -
Captura y muestra la entrada de un dispositivo video4linux2:
ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0 -
Captura y graba la entrada de un dispositivo video4linux2, dejando la velocidad de fotogramas y el tamaño con el valor previamente establecido:
ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
Para más información sobre Video4Linux, véase http://linuxtv.org/.
3.18.1 Opciones
standard
Establece el estándar. Debe ser el nombre de un estándar admitido. Para obtener una lista de los estándares admitidos, use la opción list_standards.
channel
Establece el número de canal de entrada. El valor predeterminado es -1, lo que significa usar el canal previamente seleccionado.
video_size
Establece el tamaño del fotograma de vídeo. El argumento debe ser una cadena con la forma ANCHOxALTO o una abreviatura de tamaño válida.
pixel_format
Selecciona el pixel format (solo válido para entrada de vídeo en bruto).
input_format
Establece el pixel format preferido (para vídeo en bruto) o un nombre de codec. Esta opción permite seleccionar el formato de entrada cuando hay varios disponibles.
framerate
Establece la velocidad de fotogramas de vídeo preferida.
list_formats
Lista los formatos disponibles (pixel formats, codecs y tamaños de fotograma admitidos) y sale.
Los valores disponibles son:
‘all’
Muestra todos los formatos disponibles (comprimidos y sin comprimir).
‘raw’
Muestra solo los formatos de vídeo en bruto (sin comprimir).
‘compressed’
Muestra solo los formatos comprimidos.
list_standards
Lista los estándares admitidos y sale.
Los valores disponibles son:
‘all’
Muestra todos los estándares admitidos.
timestamps, ts
Establece el tipo de marcas de tiempo para los fotogramas capturados.
Los valores disponibles son:
‘default’
Usa las marcas de tiempo del kernel.
‘abs’
Usa marcas de tiempo absolutas (wall clock).
‘mono2abs’
Fuerza la conversión de marcas de tiempo monotónicas a absolutas.
El valor predeterminado es default.
use_libv4l2
Usa las funciones de conversión de libv4l2 (v4l-utils). El valor predeterminado es 0.
3.19 vfwcap
Dispositivo de entrada de captura VfW (Video for Windows).
El nombre de archivo pasado como entrada es el número de driver de captura, entre 0 y 9. Puede usar "list" como nombre de archivo para imprimir una lista de drivers. Cualquier otro nombre de archivo se interpretará como el dispositivo número 0.
3.19.1 Opciones
video_size
Establece el tamaño del fotograma de vídeo.
framerate
Establece la velocidad de fotogramas de captura. El valor predeterminado es ntsc, que corresponde a una velocidad de fotogramas de 30000/1001.
3.20 x11grab
Dispositivo de entrada de vídeo X11.
Para habilitar este dispositivo de entrada durante la configuración, necesita tener libxcb instalado en su sistema. Se detectará automáticamente durante la configuración.
Este dispositivo permite capturar una región de un display X11.
El nombre de archivo pasado como entrada tiene la siguiente sintaxis:
[hostname]:display_number.screen_number[+x_offset,y_offset]
hostname:display_number.screen_number especifica el nombre de display X11 de la pantalla de la que capturar. hostname puede omitirse, en cuyo caso el valor predeterminado es "localhost". La variable de entorno DISPLAY contiene el nombre de display predeterminado.
x_offset e y_offset especifican los desplazamientos del área capturada respecto al borde superior izquierdo de la pantalla X11. Su valor predeterminado es 0.
Consulte la documentación de X11 (por ejemplo, man X) para obtener información más detallada.
Use el programa xdpyinfo para obtener información básica sobre las propiedades de su display X11 (por ejemplo, buscando con grep "name" o "dimensions").
Por ejemplo, para capturar desde :0.0 con ffmpeg:
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
Captura en la posición 10,20:
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
3.20.1 Opciones
select_region
Especifica si debe seleccionarse el área de captura de forma gráfica mediante el puntero. Un valor de 1 solicita al usuario que seleccione el área de captura gráficamente haciendo clic y arrastrando. Un único clic sin arrastrar seleccionará toda la pantalla. Una región con anchura o altura cero también seleccionará toda la pantalla. Esta opción sobrescribe las opciones video_size, grab_x y grab_y. El valor predeterminado es 0.
draw_mouse
Especifica si debe dibujarse el puntero del ratón. Un valor de 0 indica que no se dibuje el puntero. El valor predeterminado es 1.
follow_mouse
Hace que el área capturada siga al ratón. El argumento puede ser centered o un número de píxeles PIXELS.
Cuando se especifica con "centered", la región de captura sigue al puntero del ratón y lo mantiene en el centro de la región; en caso contrario, la región solo se desplaza cuando el puntero del ratón se acerca a menos de PIXELS (mayor que cero) del borde de la región.
Por ejemplo:
ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
Para que solo se desplace cuando el puntero del ratón se acerca a menos de 100 píxeles del borde:
ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
framerate
Establece la velocidad de fotogramas de captura. El valor predeterminado es ntsc, que corresponde a una velocidad de fotogramas de 30000/1001.
show_region
Muestra en pantalla la región capturada.
Si show_region se especifica con 1, la región de captura se indicará en pantalla. Con esta opción resulta fácil saber qué se está capturando cuando solo se captura una parte de la pantalla.
region_border
Establece el grosor del borde de la región si se usa -show_region 1. El rango va de 1 a 128 y el valor predeterminado es 3 (solo para x11grab basado en XCB).
Por ejemplo:
ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
Con follow_mouse:
ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
window_id
Captura esta ventana en lugar de toda la pantalla. El valor predeterminado es 0, que corresponde a toda la pantalla (ventana raíz).
El id de una ventana puede obtenerse usando el programa xwininfo, posiblemente con las opciones -tree y -root.
Si la ventana se agranda posteriormente, la nueva área no se graba. El vídeo termina cuando la ventana se cierra, se desmapea (es decir, se minimiza) o se reduce por debajo del tamaño de vídeo (cuyo valor predeterminado es el tamaño inicial de la ventana).
Esta opción deshabilita las opciones follow_mouse y select_region.
video_size
Establece el tamaño del fotograma de vídeo. El valor predeterminado es el escritorio o ventana completos.
grab_x grab_y
Establece las coordenadas de la región de captura. Se expresan como desplazamiento desde la esquina superior izquierda de la ventana X11 y corresponden a los parámetros x_offset e y_offset en el nombre del dispositivo. El valor predeterminado para ambas opciones es 0.
4 Dispositivos de salida
Los dispositivos de salida son elementos configurados en FFmpeg que pueden escribir datos multimedia en un dispositivo de salida conectado a su sistema.
Al configurar su compilación de FFmpeg, todos los dispositivos de salida admitidos se habilitan de forma predeterminada. Puede listar todos los disponibles usando la opción de configure "–list-outdevs".
Puede deshabilitar todos los dispositivos de salida usando la opción de configure "–disable-outdevs", y habilitar selectivamente un dispositivo de salida usando la opción "–enable-outdev=OUTDEV", o deshabilitar un dispositivo de entrada concreto usando la opción "–disable-outdev=OUTDEV".
La opción "-devices" de las herramientas ff* mostrará la lista de dispositivos de salida habilitados.
A continuación se describen los dispositivos de salida actualmente disponibles.
4.1 alsa
Dispositivo de salida ALSA (Advanced Linux Sound Architecture).
4.1.1 Ejemplos
-
Reproduce un archivo en el dispositivo ALSA predeterminado:
ffmpeg -i INPUT -f alsa default -
Reproduce un archivo en la tarjeta de sonido 1, dispositivo de audio 7:
ffmpeg -i INPUT -f alsa hw:1,7
4.2 AudioToolbox
Dispositivo de salida AudioToolbox.
Permite la salida nativa a dispositivos CoreAudio en OSX.
El nombre de archivo de salida puede estar vacío (o ser -) para referirse al dispositivo de salida predeterminado del sistema, o puede ser un número que se refiera al índice de dispositivo tal como se muestra con: -list_devices true.
Alternativamente, el dispositivo de entrada de audio puede elegirse por índice usando -audio_device_index
Todos los dispositivos disponibles pueden enumerarse usando -list_devices true, que lista todos los nombres de dispositivo, UID e índices correspondientes.
4.2.1 Opciones
AudioToolbox admite las siguientes opciones:
-audio_device_index
Especifica el dispositivo de audio por su índice. Anula cualquier valor indicado en el nombre de archivo de salida.
4.2.2 Ejemplos
-
Imprime la lista de dispositivos admitidos y envía una onda sinusoidal al dispositivo predeterminado:
$ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true - -
Envía una onda sinusoidal al dispositivo con índice 2, anulando cualquier nombre de archivo de salida:
$ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 -
4.3 caca
Dispositivo de salida CACA.
Este dispositivo de salida permite mostrar un flujo de vídeo en una ventana CACA. Solo se permite una ventana CACA por aplicación, por lo que solo puede haber una instancia de este dispositivo de salida en una aplicación.
Para habilitar este dispositivo de salida, debe configurar FFmpeg con --enable-libcaca. libcaca es una biblioteca gráfica que genera texto en lugar de píxeles.
Para más información sobre libcaca, véase: http://caca.zoy.org/wiki/libcaca
4.3.1 Opciones
window_title
Establece el título de la ventana CACA; si no se especifica, el valor predeterminado es el nombre de archivo indicado para el dispositivo de salida.
window_size
Establece el tamaño de la ventana CACA; puede ser una cadena con la forma anchoxalto o una abreviatura de tamaño de vídeo. Si no se especifica, el valor predeterminado es el tamaño del vídeo de entrada.
driver
Establece el driver de pantalla.
algorithm
Establece el algoritmo de tramado (dithering). El tramado es necesario porque la imagen que se renderiza suele tener muchos más colores que la paleta disponible. Los valores aceptados se listan con -list_dither algorithms.
antialias
Establece el método de antialiasing. El antialiasing suaviza la imagen renderizada y evita el conocido efecto de escalera. Los valores aceptados se listan con -list_dither antialiases.
charset
Establece qué caracteres se usarán al renderizar texto. Los valores aceptados se listan con -list_dither charsets.
color
Establece el color que se usará al renderizar texto. Los valores aceptados se listan con -list_dither colors.
list_drivers
Si se establece en true, imprime una lista de drivers disponibles y sale.
list_dither
Lista las opciones de tramado disponibles relacionadas con el argumento. El argumento debe ser uno de algorithms, antialiases, charsets, colors.
4.3.2 Ejemplos
-
El siguiente comando muestra la salida de
ffmpegen una ventana CACA, forzando su tamaño a 80x25:ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca - -
Muestra la lista de drivers disponibles y sale:
ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true - -
Muestra la lista de colores de tramado disponibles y sale:
ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
4.4 decklink
El dispositivo de salida decklink ofrece funciones de reproducción para dispositivos Blackmagic DeckLink.
Para habilitar este dispositivo de salida, necesita el SDK de Blackmagic DeckLink y debe configurar con los --extra-cflags y --extra-ldflags adecuados. En Windows, debe procesar los archivos IDL con widl.
DeckLink es muy exigente con los formatos que admite. El pixel format es siempre uyvy422; la velocidad de fotogramas, el orden de campos y el tamaño de vídeo deben determinarse para su dispositivo con -list_formats 1. La frecuencia de muestreo de audio es siempre 48 kHz.
4.4.1 Opciones
list_devices
Si se establece en true, imprime una lista de dispositivos y sale. El valor predeterminado es false. Esta opción está obsoleta; use la opción -sinks de ffmpeg para listar los dispositivos de salida disponibles.
list_formats
Si se establece en true, imprime una lista de formatos admitidos y sale. El valor predeterminado es false.
preroll
Cantidad de tiempo, en segundos, de preroll de vídeo. El valor predeterminado es 0.5.
duplex_mode
Establece el modo duplex/perfil del dispositivo decklink. Debe ser ‘unset’, ‘half’, ‘full’, ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’ o ‘four_sub_device_half’. El valor predeterminado es ‘unset’.
Nota: el SDK de DeckLink 11.0 sustituyó la propiedad duplex por una propiedad profile. En el DeckLink Duo 2 y el DeckLink Quad 2, un perfil se comparte entre cualquier par de subdispositivos que utilicen los mismos conectores. En el DeckLink 8K Pro, un perfil se comparte entre los 4 subdispositivos, por lo que el DeckLink 8K Pro admite cuatro perfiles.
Modos de perfil válidos para el DeckLink 8K Pro (con DeckLink SDK >= 11.0): ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half’
Modos de perfil válidos para el DeckLink Quad 2 y el DeckLink Duo 2: ‘half’, ‘full’
timing_offset
Establece el desplazamiento de píxeles de temporización genlock en la salida usada. El valor predeterminado es ‘unset’.
link
Establece la configuración de enlace de vídeo SDI en la salida usada. Debe ser ‘unset’, enlace SDI ‘single’, ‘dual’ o ‘quad’. El valor predeterminado es ‘unset’.
sqd
Habilita el modo Square Division Quad Split para salida SDI Quad-link. Debe ser ‘unset’, ‘true’ o ‘false’. El valor predeterminado es unset.
level_a
Habilita el modo SMPTE Level A en la salida usada. Debe ser ‘unset’, ‘true’ o ‘false’. El valor predeterminado es unset.
vanc_queue_size
Establece el tamaño máximo, en bytes, del búfer de salida para los datos VANC. Si el búfer alcanza este valor, los datos VANC salientes se descartarán. El valor predeterminado es ‘1048576’.
4.4.2 Ejemplos
-
Lista los dispositivos de salida:
ffmpeg -sinks decklink -
Lista los formatos admitidos:
ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor' -
Reproduce un clip de vídeo:
ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor' -
Reproduce un clip de vídeo con velocidad de fotogramas o tamaño de vídeo no estándar:
ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
4.5 fbdev
Dispositivo de salida framebuffer de Linux.
El framebuffer de Linux es una capa de abstracción gráfica independiente del hardware para mostrar gráficos en un monitor de ordenador, típicamente en la consola. Se accede a él mediante un nodo de dispositivo de archivo, habitualmente /dev/fb0.
Para obtener información más detallada, lea el archivo Documentation/fb/framebuffer.txt incluido en el árbol de fuentes de Linux.
4.5.1 Opciones
xoffset yoffset
Establece la coordenada x/y de la esquina superior izquierda. El valor predeterminado es 0.
4.5.2 Ejemplos
Reproduce un archivo en el dispositivo framebuffer /dev/fb0. El pixel format necesario depende de la configuración actual del framebuffer.
ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0
Véase también http://linux-fbdev.sourceforge.net/, y fbset(1).
4.6 oss
Dispositivo de salida OSS (Open Sound System).
4.7 pulse
Dispositivo de salida PulseAudio.
Para habilitar este dispositivo de salida, debe configurar FFmpeg con --enable-libpulse.
Puede encontrar más información sobre PulseAudio en http://www.pulseaudio.org
4.7.1 Opciones
server
Se conecta a un servidor PulseAudio específico, indicado mediante una dirección IP. Si no se proporciona, se usa el servidor predeterminado.
name
Especifica el nombre de aplicación que PulseAudio usará al mostrar los clientes activos; de forma predeterminada es la cadena LIBAVFORMAT_IDENT.
stream_name
Especifica el nombre de flujo que PulseAudio usará al mostrar los flujos activos; de forma predeterminada se establece al nombre de salida especificado.
device
Especifica el dispositivo que se usará. Si no se proporciona, se usa el dispositivo predeterminado. La lista de dispositivos de salida puede obtenerse con el comando pactl list sinks.
buffer_size buffer_duration
Controla el tamaño y la duración del búfer de PulseAudio. Un búfer pequeño ofrece más control, pero requiere actualizaciones más frecuentes.
buffer_size especifica el tamaño en bytes, mientras que buffer_duration especifica la duración en milisegundos.
Cuando se proporcionan ambas opciones, se usa el valor más alto (la duración se recalcula a bytes usando los parámetros del flujo). Si se establecen en 0 (valor predeterminado), el dispositivo usará el valor de duración predeterminado de PulseAudio. De forma predeterminada, PulseAudio establece la duración del búfer en unos 2 segundos.
prebuf
Especifica el tamaño de prebúfer en bytes. El servidor no inicia la reproducción hasta que al menos prebuf bytes estén disponibles en el búfer. De forma predeterminada, esta opción se inicializa con el mismo valor que buffer_size o buffer_duration (el que sea mayor).
minreq
Especifica el tamaño mínimo de solicitud en bytes. El servidor no solicita al cliente menos de minreq bytes; en su lugar, espera hasta que el búfer tenga espacio suficiente para solicitar más bytes de una vez. Se recomienda no establecer esta opción, en cuyo caso se inicializará con un valor que el servidor considere adecuado.
4.7.2 Ejemplos
Reproduce un archivo en el dispositivo predeterminado del servidor predeterminado:
ffmpeg -i INPUT -f pulse "stream name"
4.8 sndio
Dispositivo de salida de audio sndio.
4.9 v4l2
Dispositivo de salida Video4Linux2.
4.10 xv
Dispositivo de salida XV (XVideo).
Este dispositivo de salida permite mostrar un flujo de vídeo en una ventana del X Window System.
4.10.1 Opciones
display_name
Especifica el nombre de display de hardware, que determina el dominio de display y comunicaciones que se usará.
El nombre de display o la variable de entorno DISPLAY puede ser una cadena con el formato hostname[:number[.screen_number]].
hostname especifica el nombre de la máquina host a la que está físicamente conectado el display. number especifica el número del servidor de display en esa máquina host. screen_number especifica la pantalla que se usará en ese servidor.
Si no se especifica, el valor predeterminado es el de la variable de entorno DISPLAY.
Por ejemplo, dual-headed:0.1 especificaría la pantalla 1 del display 0 en la máquina llamada “dual-headed”.
Consulte la especificación de X11 para obtener información más detallada sobre el formato del nombre de display.
window_id
Cuando se establece en un valor distinto de cero, el dispositivo no crea una ventana nueva, sino que usa una existente con el window_id proporcionado. De forma predeterminada esta opción se establece en cero y el dispositivo crea su propia ventana.
window_size
Establece el tamaño de la ventana creada; puede ser una cadena con la forma anchoxalto o una abreviatura de tamaño de vídeo. Si no se especifica, el valor predeterminado es el tamaño del vídeo de entrada. Se ignora cuando se establece window_id.
window_x window_y
Establece los desplazamientos X e Y de la ventana creada. Ambos se establecen en 0 de forma predeterminada. El gestor de ventanas puede ignorar estos valores. Se ignora cuando se establece window_id.
window_title
Establece el título de la ventana; si no se especifica, el valor predeterminado es el nombre de archivo indicado para el dispositivo de salida. Se ignora cuando se establece window_id.
Para más información sobre XVideo, véase http://www.x.org/.
4.10.2 Ejemplos
-
Decodifica, muestra y codifica la entrada de vídeo con
ffmpegal mismo tiempo:ffmpeg -i INPUT OUTPUT -f xv display -
Decodifica y muestra la entrada de vídeo en varias ventanas X11:
ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
5 Véase también
ffmpeg, ffplay, ffprobe, libavdevice
6 Autores
Los desarrolladores de FFmpeg.
Para más información sobre la autoría, consulte el historial de Git del proyecto (https://git.ffmpeg.org/ffmpeg); por ejemplo, ejecutando el comando git log en el directorio de fuentes de FFmpeg, o consultando el repositorio en línea en https://git.ffmpeg.org/ffmpeg.
Los mantenedores de los distintos componentes figuran en el archivo MAINTAINERS del árbol de código fuente.
Alojamiento proporcionado por telepoint.bg