⚠️ Este es un sitio de traducción no oficial, sin relación con el proyecto FFmpeg. Para información autorizada, consulte la página original (https://ffmpeg.org/ffmpeg-devices.html).

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 o -audio_device_index , lo que anula cualquier nombre o índice de dispositivo indicado en el nombre de archivo de entrada.

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
    

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 , lo que anula cualquier nombre o índice de dispositivo indicado en el nombre de archivo de entrada.

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 ffmpeg en 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 -
    

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 ffmpeg al 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