⚠️ Este é um site de tradução não oficial, sem relação com o projeto FFmpeg. Para informações oficiais, consulte a página original (https://ffmpeg.org/ffmpeg-devices.html).

Documentação de dispositivos do FFmpeg

1 Descrição

Este documento descreve os dispositivos de entrada e saída oferecidos pela biblioteca libavdevice.

2 Opções de dispositivo

A biblioteca libavdevice oferece a mesma interface que a libavformat. Ou seja, um dispositivo de entrada é tratado como um demuxer e um dispositivo de saída como um muxer, e tanto a interface quanto as opções genéricas de dispositivo são as mesmas oferecidas pela libavformat (consulte o manual do ffmpeg-formats).

Além disso, cada dispositivo de entrada ou saída pode aceitar as chamadas opções privadas, específicas desse componente.

As opções podem ser definidas indicando -option value nas ferramentas do FFmpeg, definindo o valor diretamente nas opções AVFormatContext do dispositivo, ou usando a API libavutil/opt.h para uso programático.

3 Dispositivos de entrada

Os dispositivos de entrada são elementos configurados no FFmpeg que permitem acessar os dados provenientes de um dispositivo multimídia conectado ao seu sistema.

Ao configurar sua compilação do FFmpeg, todos os dispositivos de entrada compatíveis são ativados por padrão. Você pode listar todos os disponíveis usando a opção de configure "–list-indevs".

Você pode desativar todos os dispositivos de entrada usando a opção de configuração "–disable-indevs", ativar seletivamente um dispositivo de entrada usando a opção "–enable-indev=INDEV", ou desativar um dispositivo de entrada específico usando a opção "–disable-indev=INDEV".

A opção "-devices" das ferramentas ff* exibe a lista de dispositivos de entrada compatíveis.

A seguir, uma descrição dos dispositivos de entrada atualmente disponíveis.

3.1 alsa

Dispositivo de entrada ALSA (Advanced Linux Sound Architecture).

Para ativar este dispositivo de entrada durante a configuração, é necessário ter o libasound instalado no sistema.

Este dispositivo permite capturar de um dispositivo ALSA. O nome do dispositivo a ser capturado deve ser um identificador de placa ALSA.

Um identificador ALSA tem a seguinte sintaxe:

hw:CARD[,DEV[,SUBDEV]]

onde os componentes DEV e SUBDEV são opcionais.

Os três argumentos (na ordem: CARD,DEV,SUBDEV) especificam o número ou identificador da placa, o número do dispositivo e o número do subdispositivo (-1 significa qualquer um).

Para ver a lista de placas atualmente reconhecidas pelo sistema, consulte os arquivos /proc/asound/cards e /proc/asound/devices.

Por exemplo, para capturar com o ffmpeg a partir de um dispositivo ALSA com id de placa 0, você pode executar o comando:

ffmpeg -f alsa -i hw:0 alsaout.wav

Para mais informações, consulte: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

3.1.1 Opções

sample_rate

Define a taxa de amostragem em Hz. O padrão é 48000.

channels

Define o número de canais. O padrão é 2.

3.2 android_camera

Dispositivo de entrada de câmera Android.

Este dispositivo de entrada usa a API Android Camera2 NDK, disponível em dispositivos com nível de API 24 ou superior. A disponibilidade do android_camera é detectada automaticamente durante a configuração.

Este dispositivo permite capturar de todas as câmeras de um dispositivo Android integradas à API Camera2 NDK.

As câmeras disponíveis são enumeradas internamente e podem ser selecionadas com o parâmetro camera_index. A string do nome do arquivo de entrada é descartada.

Em geral, a câmera traseira tem índice 0, enquanto a câmera frontal tem índice 1.

3.2.1 Opções

video_size

Define o tamanho de vídeo indicado como uma string, como 640x480 ou hd720. Se o tamanho de vídeo solicitado não estiver disponível, ou por padrão, recorre-se à primeira configuração disponível informada pelo Android.

framerate

Define a taxa de quadros do vídeo. Se a taxa solicitada não estiver disponível, ou por padrão (-1), recorre-se à primeira configuração disponível informada pelo Android.

camera_index

Define o índice da câmera a ser usada. O padrão é 0.

input_queue_size

Define o número máximo de quadros a armazenar em buffer. O padrão é 5.

3.3 avfoundation

Dispositivo de entrada AVFoundation.

AVFoundation é o framework atualmente recomendado pela Apple para a captura de fluxos no OSX >= 10.7, assim como no iOS.

O nome do arquivo de entrada deve ser informado com a seguinte sintaxe:

-i "[[VIDEO]:[AUDIO]]"

A primeira entrada seleciona a entrada de vídeo, enquanto a segunda seleciona a entrada de áudio. O fluxo deve ser especificado pelo nome do dispositivo ou pelo índice do dispositivo, conforme mostrado na lista de dispositivos. Alternativamente, o dispositivo de entrada de vídeo e/ou de áudio pode ser escolhido por índice usando -video_device_index e/ou -audio_device_index , o que substitui qualquer nome ou índice de dispositivo informado no nome do arquivo de entrada.

Todos os dispositivos disponíveis podem ser enumerados usando -list_devices true, que lista todos os nomes de dispositivo e seus índices correspondentes.

Existem dois aliases de nome de dispositivo:

default

Seleciona o dispositivo padrão da AVFoundation do tipo correspondente.

none

Não grava o tipo de mídia correspondente. Isso equivale a especificar um nome ou índice de dispositivo vazio.

3.3.1 Opções

A AVFoundation aceita as seguintes opções:

-list_devices

Se definida como true, é exibida uma lista de todos os dispositivos de entrada disponíveis, mostrando todos os nomes de dispositivo e índices.

-video_device_index

Especifica o dispositivo de vídeo pelo seu índice. Substitui qualquer valor informado no nome do arquivo de entrada.

-audio_device_index

Especifica o dispositivo de áudio pelo seu índice. Substitui qualquer valor informado no nome do arquivo de entrada.

-pixel_format

Solicita que o dispositivo de vídeo use um pixel format específico. Se o formato especificado não for compatível, é exibida uma lista dos formatos disponíveis e o primeiro da lista é usado em seu lugar. Os pixel format disponíveis são: monob, rgb555be, rgb555le, rgb565be, rgb565le, rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0, bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10, yuv420p, nv12, yuyv422, gray

-framerate

Define a taxa de quadros de captura. O padrão é ntsc, que corresponde a uma taxa de quadros de 30000/1001.

-video_size

Define o tamanho do quadro de vídeo.

-capture_cursor

Captura o ponteiro do mouse. O padrão é 0.

-capture_mouse_clicks

Captura os cliques do mouse na tela. O padrão é 0.

-capture_raw_data

Captura os dados brutos do dispositivo. O padrão é 0. Usar esta opção pode resultar no recebimento dos dados subjacentes entregues ao framework AVFoundation. Por exemplo, para dispositivos multiplexados que enviam dados DV brutos ao framework (como filmadoras baseadas em fita), definir esta opção como false faz com que somente os quadros de vídeo extraídos sejam capturados no pixel format designado. Definir esta opção como true faz com que o fluxo DV bruto seja recebido sem modificações.

3.3.2 Exemplos

  • Exibir a lista de dispositivos compatíveis com a AVFoundation e sair:

    $ ffmpeg -f avfoundation -list_devices true -i ""
    
  • Gravar vídeo do dispositivo de vídeo 0 e áudio do dispositivo de áudio 0 em out.avi:

    $ ffmpeg -f avfoundation -i "0:0" out.avi
    
  • Gravar vídeo do dispositivo de vídeo 2 e áudio do dispositivo de áudio 1 em out.avi:

    $ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi
    
  • Gravar vídeo do dispositivo de vídeo padrão do sistema usando o pixel format bgr0 e não gravar nenhum áudio em out.avi:

    $ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi
    
  • Gravar dados DV brutos de um dispositivo de entrada adequado e escrever a saída em out.dv:

    $ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv
    

O dispositivo de entrada decklink oferece recursos de captura para dispositivos Blackmagic DeckLink.

Para ativar este dispositivo de entrada, você precisa do SDK Blackmagic DeckLink e deve configurar com os --extra-cflags e --extra-ldflags adequados. No Windows, é necessário processar os arquivos IDL com o widl.

O DeckLink é muito exigente quanto aos formatos que aceita. O pixel format da entrada pode ser definido com raw_format. A taxa de quadros e o tamanho de vídeo devem ser determinados para o seu dispositivo com -list_formats 1. A taxa de amostragem de áudio é sempre 48 kHz, e o número de canais pode ser 2, 8 ou 16. Observe que todos os canais de áudio são agrupados em uma única faixa de áudio.

3.4.1 Opções

list_devices

Se definida como true, imprime uma lista de dispositivos e sai. O padrão é false. Esta opção está obsoleta; use a opção -sources do ffmpeg para listar os dispositivos de entrada disponíveis.

list_formats

Se definida como true, imprime uma lista de formatos compatíveis e sai. O padrão é false.

format_code

Isso define o formato de vídeo de entrada como o formato indicado pelo FourCC. Para ver os valores compatíveis com seu(s) dispositivo(s), use list_formats. Observe que existe um FourCC 'pal ' que também pode ser usado como pal (3 letras). O comportamento padrão é a detecção automática do formato de vídeo de entrada, caso o hardware ofereça suporte a isso.

raw_format

Define o pixel format do vídeo capturado. Os valores disponíveis são:

‘auto’

Este é o padrão, que significa YUV 422 de 8 bits ou ARGB de 8 bits caso a detecção automática de formato seja usada, YUV 422 de 8 bits caso contrário.

‘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

Se definida como diferente de zero, um fluxo de teletexto adicional será capturado a partir dos dados auxiliares verticais. São compatíveis tanto fontes SD PAL (576i) quanto HD (1080i ou 1080p). No caso de fontes HD, os pacotes OP47 são decodificados.

Esta opção é uma máscara de bits das linhas VBI SD PAL capturadas, especificamente as linhas 6 a 22 e as linhas 318 a 335. A linha 6 é o LSB da máscara. As linhas selecionadas que não contiverem informações de teletexto serão ignoradas. Você pode usar a constante especial all para selecionar todas as linhas possíveis, ou standard para pular as linhas 6, 318 e 319, que não são compatíveis com todos os receptores.

Para fontes SD, o ffmpeg precisa ser compilado com --enable-libzvbi. Para fontes HD, em modelos de placa DeckLink mais antigos (anteriores a 4K), é necessário capturar no modo de 10 bits.

channels

Define o número de canais de áudio a capturar. Deve ser ‘2’, ‘8’ ou ‘16’. O padrão é ‘2’.

duplex_mode

Define o modo duplex/profile do dispositivo decklink. Deve ser ‘unset’, ‘half’, ‘full’, ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’ ou ‘four_sub_device_half’. O padrão é ‘unset’.

Observação: o SDK DeckLink 11.0 substituiu a propriedade duplex por uma propriedade de perfil. No DeckLink Duo 2 e no DeckLink Quad 2, um perfil é compartilhado entre quaisquer 2 subdispositivos que utilizem os mesmos conectores. No DeckLink 8K Pro, um perfil é compartilhado entre os 4 subdispositivos. Por isso, o DeckLink 8K Pro aceita quatro perfis.

Modos de perfil válidos para o DeckLink 8K Pro (com SDK 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 o DeckLink Quad 2 e o DeckLink Duo 2: ‘half’, ‘full’

timecode_format

Tipo de timecode a incluir nos metadados do quadro e do fluxo de vídeo. Deve ser ‘none’, ‘rp188vitc’, ‘rp188vitc2’, ‘rp188ltc’, ‘rp188hfr’, ‘rp188any’, ‘vitc’, ‘vitc2’ ou ‘serial’. O padrão é ‘none’ (não incluído).

Para dar suporte adequado a timecodes de 50/60 fps, a ordem de consulta dos tipos de timecode para ‘rp188any’ é HFR, VITC1, VITC2 e LTC para conteúdo acima de 30 fps. Observe que isso difere ligeiramente da ordem usada pela API DeckLink, que é HFR, VITC1, LTC, VITC2.

video_input

Define a fonte de entrada de vídeo. Deve ser ‘unset’, ‘sdi’, ‘hdmi’, ‘optical_sdi’, ‘component’, ‘composite’ ou ‘s_video’. O padrão é ‘unset’.

audio_input

Define a fonte de entrada de áudio. Deve ser ‘unset’, ‘embedded’, ‘aes_ebu’, ‘analog’, ‘analog_xlr’, ‘analog_rca’ ou ‘microphone’. O padrão é ‘unset’.

video_pts

Define a fonte da marca de tempo dos pacotes de vídeo. Deve ser ‘video’, ‘audio’, ‘reference’, ‘wallclock’ ou ‘abs_wallclock’. O padrão é ‘video’.

audio_pts

Define a fonte da marca de tempo dos pacotes de áudio. Deve ser ‘video’, ‘audio’, ‘reference’, ‘wallclock’ ou ‘abs_wallclock’. O padrão é ‘audio’.

draw_bars

Se definida como ‘true’, são desenhadas barras coloridas em caso de perda de sinal. O padrão é ‘true’. Esta opção está obsoleta; use a opção signal_loss_action.

signal_loss_action

Define a ação a ser tomada em caso de perda de sinal. Aceita um dos seguintes valores:

1, none

Não faz nada em caso de perda de sinal. Isso geralmente resulta em quadros pretos.

2, bars

Desenha barras coloridas em caso de perda de sinal. Compatível apenas com sinais de entrada de 8 bits.

3, repeat

Repete o último quadro de vídeo em caso de perda de sinal.

O padrão é ‘bars’.

queue_size

Define o tamanho máximo do buffer de entrada em bytes. Se o buffer atingir esse valor, os quadros recebidos serão descartados. O padrão é ‘1073741824’.

audio_depth

Define a profundidade de bits das amostras de áudio. Deve ser ‘16’ ou ‘32’. O padrão é ‘16’.

decklink_copyts

Se definida como true, as marcas de tempo são repassadas como estão, sem remover o deslocamento inicial. O padrão é false.

timestamp_align

Alinhamento do horário de início da captura, em segundos. Se definido como diferente de zero, os quadros de entrada são descartados até que a marca de tempo do sistema se alinhe com o valor configurado. Uma diferença de alinhamento de até a duração de um quadro é tolerada. Isso é útil para manter a sincronização de entrada entre N dispositivos de hardware diferentes implantados para redundância ’N-way’. A hora do sistema dos diferentes dispositivos de hardware deve ser sincronizada com protocolos como NTP ou PTP antes de usar esta opção. Observe que este método não é infalível: em alguns casos limite, a sincronização de entrada pode não ocorrer devido a instabilidades (jitter) no escalonamento de threads do sistema operacional. A sincronização pode se desviar em 1 quadro ou, em casos mais raros, em timestamp_align segundos. O padrão é ‘0’.

wait_for_tc (bool)

Descarta quadros até que um quadro com timecode seja recebido. Às vezes, o timecode serial não é recebido com o primeiro quadro de entrada. Se isso acontecer, o timecode armazenado do fluxo ficará incorreto. Se esta opção for definida como true, os quadros de entrada são descartados até que um quadro com timecode seja recebido. A opção timecode_format deve ser especificada. O padrão é false.

enable_klv(bool)

Se definida como true, extrai dados KLV do VANC e gera pacotes KLV. Os pacotes KLV VANC são unidos com base nos campos MID e PSC e agregados em um único pacote KLV. O padrão é false.

3.4.2 Exemplos

  • Listar dispositivos de entrada:

    ffmpeg -sources decklink
    
  • Listar formatos compatíveis:

    ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro'
    
  • Capturar clipe de vídeo em 1080i50:

    ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi
    
  • Capturar clipe de vídeo em 1080i50 10 bits:

    ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
    
  • Capturar clipe de vídeo em 1080i50 com 16 canais de áudio:

    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 do Windows.

O suporte a DirectShow é ativado quando o FFmpeg é compilado com o projeto mingw-w64. Atualmente, apenas dispositivos de áudio e vídeo são compatíveis.

Vários dispositivos podem ser abertos como entradas separadas, mas também podem ser abertos na mesma entrada, o que deve melhorar a sincronia entre eles.

O nome de entrada deve estar no seguinte formato:

TYPE=NAME[:TYPE=NAME]

onde TYPE pode ser audio ou video, e NAME é o nome do dispositivo ou seu nome alternativo.

3.5.1 Opções

Se nenhuma opção for especificada, são usados os padrões do dispositivo. Se o dispositivo não aceitar as opções solicitadas, ele falhará ao abrir.

video_size

Define o tamanho de vídeo do vídeo capturado.

framerate

Define a taxa de quadros do vídeo capturado.

sample_rate

Define a taxa de amostragem (em Hz) do áudio capturado.

sample_size

Define o tamanho de amostra (em bits) do áudio capturado.

channels

Define o número de canais do áudio capturado.

list_devices

Se definida como true, imprime uma lista de dispositivos e sai.

list_options

Se definida como true, imprime uma lista das opções do dispositivo selecionado e sai.

video_device_number

Define o número do dispositivo de vídeo para dispositivos com o mesmo nome (começa em 0; o padrão é 0).

audio_device_number

Define o número do dispositivo de áudio para dispositivos com o mesmo nome (começa em 0; o padrão é 0).

pixel_format

Seleciona o pixel format a ser usado pelo DirectShow. Isso só pode ser definido quando o codec de vídeo não estiver definido ou estiver definido como rawvideo.

audio_buffer_size

Define o tamanho do buffer do dispositivo de áudio em milissegundos (o que pode afetar diretamente a latência, dependendo do dispositivo). O padrão é usar o tamanho de buffer padrão do dispositivo de áudio (normalmente algum múltiplo de 500ms). Definir esse valor muito baixo pode degradar o desempenho. Veja também http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx

video_pin_name

Seleciona o pino de captura de vídeo a ser usado por nome ou nome alternativo.

audio_pin_name

Seleciona o pino de captura de áudio a ser usado por nome ou nome alternativo.

crossbar_video_input_pin_number

Seleciona o número do pino de entrada de vídeo do dispositivo crossbar. Ele será roteado para o pino de saída do Video Decoder do dispositivo crossbar. Observe que alterar esse valor pode afetar invocações futuras (define um novo padrão) até que o sistema seja reiniciado.

crossbar_audio_input_pin_number

Seleciona o número do pino de entrada de áudio do dispositivo crossbar. Ele será roteado para o pino de saída do Audio Decoder do dispositivo crossbar. Observe que alterar esse valor pode afetar invocações futuras (define um novo padrão) até que o sistema seja reiniciado.

show_video_device_dialog

Se definida como true, antes de iniciar a captura, uma caixa de diálogo é exibida ao usuário final, permitindo que ele altere manualmente as propriedades e configurações do filtro de vídeo. Observe que, para dispositivos crossbar, às vezes é necessário ajustar valores nessa caixa de diálogo para alternar entre taxas de quadros de entrada PAL (25 fps) e NTSC (29.97), tamanhos, entrelaçamento etc. Alterar esses valores pode habilitar diferentes taxas de varredura/quadros e evitar barras verdes na parte inferior, cintilação de linhas de varredura etc. Observe que, em alguns dispositivos, alterar essas propriedades também pode afetar invocações futuras (define novos padrões) até que o sistema seja reiniciado.

show_audio_device_dialog

Se definida como true, antes de iniciar a captura, uma caixa de diálogo é exibida ao usuário final, permitindo que ele altere manualmente as propriedades e configurações do filtro de áudio.

show_video_crossbar_connection_dialog

Se definida como true, antes de iniciar a captura, ao abrir um dispositivo de vídeo, uma caixa de diálogo é exibida ao usuário final, permitindo que ele modifique manualmente o roteamento de pinos do crossbar.

show_audio_crossbar_connection_dialog

Se definida como true, antes de iniciar a captura, ao abrir um dispositivo de áudio, uma caixa de diálogo é exibida ao usuário final, permitindo que ele modifique manualmente o roteamento de pinos do crossbar.

show_analog_tv_tuner_dialog

Se definida como true, antes de iniciar a captura, uma caixa de diálogo é exibida ao usuário final, permitindo que ele modifique manualmente os canais e frequências de TV.

show_analog_tv_tuner_audio_dialog

Se definida como true, antes de iniciar a captura, uma caixa de diálogo é exibida ao usuário final, permitindo que ele modifique manualmente o áudio de TV (como mono versus estéreo, Idioma A, B ou C).

audio_device_load

Carrega um dispositivo de filtro de captura de áudio a partir de um arquivo em vez de buscá-lo por nome. Também pode carregar parâmetros adicionais, caso o filtro aceite a serialização de suas propriedades. Para usar isso, é necessário especificar uma fonte de captura de áudio, mas ela pode ser qualquer uma, até mesmo fictícia.

audio_device_save

Salva em um arquivo o dispositivo de filtro de captura de áudio atualmente em uso e seus parâmetros (se o filtro aceitar isso). Se já existir um arquivo com o mesmo nome, ele será sobrescrito.

video_device_load

Carrega um dispositivo de filtro de captura de vídeo a partir de um arquivo em vez de buscá-lo por nome. Também pode carregar parâmetros adicionais, caso o filtro aceite a serialização de suas propriedades. Para usar isso, é necessário especificar uma fonte de captura de vídeo, mas ela pode ser qualquer uma, até mesmo fictícia.

video_device_save

Salva em um arquivo o dispositivo de filtro de captura de vídeo atualmente em uso e seus parâmetros (se o filtro aceitar isso). Se já existir um arquivo com o mesmo nome, ele será sobrescrito.

use_video_device_timestamps

Se definida como false, a marca de tempo dos quadros de vídeo será derivada do wallclock em vez da marca de tempo fornecida pelo dispositivo de captura. Isso permite contornar dispositivos que fornecem marcas de tempo pouco confiáveis.

3.5.2 Exemplos

  • Exibir a lista de dispositivos compatíveis com o DirectShow e sair:

    $ ffmpeg -list_devices true -f dshow -i dummy
    
  • Abrir o dispositivo de vídeo Camera:

    $ ffmpeg -f dshow -i video="Camera"
    
  • Abrir o segundo dispositivo de vídeo com nome Camera:

    $ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
    
  • Abrir o dispositivo de vídeo Camera e o dispositivo de áudio Microphone:

    $ ffmpeg -f dshow -i video="Camera":audio="Microphone"
    
  • Exibir a lista de opções compatíveis no dispositivo selecionado e sair:

    $ ffmpeg -list_options true -f dshow -i video="Camera"
    
  • Especificar nomes de pino para captura por nome ou nome alternativo, especificando um nome 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 um dispositivo crossbar, especificando os pinos do crossbar, permitindo que o usuário ajuste as propriedades de captura de vídeo na inicialização:

    $ 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 do Linux.

O framebuffer do Linux é uma camada de abstração gráfica independente de hardware para exibir gráficos em um monitor de computador, normalmente no console. É acessado por meio de um nó de dispositivo de arquivo, geralmente /dev/fb0.

Para obter informações mais detalhadas, leia o arquivo Documentation/fb/framebuffer.txt incluído na árvore de fontes do Linux.

Veja também http://linux-fbdev.sourceforge.net/ e fbset(1).

Para gravar a partir do dispositivo framebuffer /dev/fb0 com o ffmpeg:

ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi

Você pode capturar uma única imagem de tela com o comando:

ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg

3.6.1 Opções

framerate

Define a taxa de quadros. O padrão é 25.

3.7 gdigrab

Dispositivo de captura de tela baseado em GDI do Win32.

Este dispositivo permite capturar uma região da tela no Windows.

Entre as opções para os nomes de arquivo de entrada estão elementos como:

desktop

ou

title=window_title

ou

hwnd=window_hwnd

A primeira opção captura a área de trabalho inteira, ou uma região fixa da área de trabalho. Já a segunda e a terceira opções capturam o conteúdo de uma única janela, independentemente de sua posição na tela.

Por exemplo, para capturar a área de trabalho inteira usando o ffmpeg:

ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg

Capturar uma região de 640x480 na posição 10,20:

ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg

Capturar o conteúdo da janela chamada "Calculator"

ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg

3.7.1 Opções

draw_mouse

Especifica se o ponteiro do mouse deve ser desenhado. Use o valor 0 para não desenhar o ponteiro. O valor padrão é 1.

framerate

Define a taxa de quadros de captura. O valor padrão é ntsc, que corresponde a uma taxa de quadros de 30000/1001.

show_region

Exibe na tela a região capturada.

Se show_region for especificado com 1, a região de captura será indicada na tela. Com esta opção, é fácil saber o que está sendo capturado quando apenas uma parte da tela é capturada.

Observe que show_region é incompatível com a captura do conteúdo de uma única janela.

Por exemplo:

ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg

video_size

Define o tamanho do quadro de vídeo. O padrão é capturar a tela inteira se desktop for selecionado, ou o tamanho completo da janela se title=window_title for selecionado.

offset_x

Ao capturar uma região com video_size, define a distância a partir da borda esquerda da tela ou da área de trabalho.

Observe que o cálculo do deslocamento é feito a partir do canto superior esquerdo do monitor primário no Windows. Se você tiver um monitor posicionado à esquerda do seu monitor primário, será necessário usar um valor negativo de offset_x para mover a região para esse monitor.

offset_y

Ao capturar uma região com video_size, define a distância a partir da borda superior da tela ou da área de trabalho.

Observe que o cálculo do deslocamento é feito a partir do canto superior esquerdo do monitor primário no Windows. Se você tiver um monitor posicionado acima do seu monitor primário, será necessário usar um valor negativo de offset_y para mover a região para esse monitor.

3.8 iec61883

Dispositivo de entrada FireWire DV/HDV usando libiec61883.

Para ativar este dispositivo de entrada, você precisa ter libiec61883, libraw1394 e libavc1394 instalados no sistema. Use a opção de configuração --enable-libiec61883 para compilar com o dispositivo ativado.

O dispositivo de captura iec61883 permite capturar de um dispositivo de vídeo conectado via IEEE1394 (FireWire), usando libiec61883 e a nova pilha FireWire do Linux (juju). Este é o método de entrada DV/HDV padrão no kernel Linux 2.6.37 e posteriores, já que a antiga pilha FireWire foi removida.

Especifique a porta FireWire a ser usada como arquivo de entrada, ou "auto" para escolher a primeira porta conectada.

3.8.1 Opções

dvtype

Substitui a detecção automática de DV/HDV. Isso só deve ser usado se a detecção automática não funcionar, ou se o uso de um tipo de dispositivo diferente dever ser proibido. Tratar um dispositivo DV como HDV (ou vice-versa) não funcionará e resultará em comportamento indefinido. Os valores auto, dv e hdv são compatíveis.

dvbuffer

Define o tamanho máximo do buffer para os dados recebidos, em quadros. Para DV, este é um valor exato. Para HDV, não é exato em quadros, já que o HDV não tem um tamanho de quadro fixo.

dvguid

Seleciona o dispositivo de captura especificando seu GUID. A captura será realizada somente a partir do dispositivo especificado e falhará se nenhum dispositivo com o GUID informado for encontrado. Isso é útil para selecionar a entrada quando vários dispositivos estão conectados ao mesmo tempo. Consulte /sys/bus/firewire/devices para descobrir os GUIDs.

3.8.2 Exemplos

  • Capturar e exibir a entrada de um dispositivo FireWire DV/HDV.

    ffplay -f iec61883 -i auto
    
  • Capturar e gravar a entrada de um dispositivo FireWire DV/HDV, usando um buffer de pacotes de 100000 pacotes se a fonte for HDV.

    ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
    

3.9 jack

Dispositivo de entrada JACK.

Para ativar este dispositivo de entrada durante a configuração, você precisa ter libjack instalado no sistema.

Um dispositivo de entrada JACK cria um ou mais clientes JACK graváveis, um para cada canal de áudio, com o nome client_name:input_N, onde client_name é o nome fornecido pelo aplicativo, e N é um número que identifica o canal. Cada cliente gravável enviará os dados adquiridos para o dispositivo de entrada do FFmpeg.

Depois de criar um ou mais clientes JACK legíveis, você precisa conectá-los a um ou mais clientes JACK graváveis.

Para conectar ou desconectar clientes JACK, você pode usar os programas jack_connect e jack_disconnect, ou fazer isso por meio de uma interface gráfica, por exemplo com o qjackctl.

Para listar os clientes JACK e suas propriedades, você pode invocar o comando jack_lsp.

A seguir, um exemplo que mostra como capturar um cliente JACK legível com o 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 mais informações, leia: http://jackaudio.org/

3.9.1 Opções

channels

Define o número de canais. O padrão é 2.

3.10 kmsgrab

Dispositivo de entrada de vídeo KMS.

Captura o framebuffer de scanout KMS associado a um CRTC ou plano especificado, como um objeto DRM que pode ser passado para outras funções de hardware.

Requer DRM master ou CAP_SYS_ADMIN para ser executado.

Se você não entende o que tudo isso significa, provavelmente não é isso que você quer. Veja x11grab em vez disso.

3.10.1 Opções

device

Dispositivo DRM no qual capturar. O padrão é /dev/dri/card0.

format

Pixel format do framebuffer. Pode ser detectado automaticamente se você estiver executando o Linux 5.7 ou posterior, mas precisa ser informado em versões anteriores. O padrão é bgr0, que é o formato mais comum usado pelo console do Linux e pelo servidor Xorg X.

format_modifier

Modificador de formato a ser sinalizado nos quadros de saída. Isso é necessário para importar corretamente em algumas APIs. Pode ser detectado automaticamente se você estiver executando o Linux 5.7 ou posterior, mas precisará ser informado explicitamente quando necessário em versões anteriores. Consulte a documentação do libdrm para conhecer os valores possíveis.

crtc_id

ID de CRTC KMS que define a fonte de captura. O primeiro plano ativo no CRTC informado será usado.

plane_id

ID de plano KMS que define a fonte de captura. O padrão é o primeiro plano ativo encontrado, caso nem crtc_id nem plane_id sejam especificados.

framerate

Taxa de quadros para captura. Isso não está sincronizado com nenhuma mudança de página (page flipping) ou alteração do framebuffer — apenas define o intervalo em que o framebuffer é amostrado. Amostrar mais rápido do que a taxa de atualização do framebuffer gerará quadros independentes com o mesmo conteúdo. O padrão é 30.

3.10.2 Exemplos

  • Capturar do primeiro plano ativo, baixar o resultado para quadros normais e codificar. Isso só funcionará se o framebuffer for linear e mapeável ao mesmo tempo — caso contrário, o resultado pode ficar corrompido ou o download pode falhar.

    ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4
    
  • Capturar do CRTC de ID 42 a 60fps, mapear o resultado para VAAPI, converter para NV12 e 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 apenas parte de um plano, a saída pode ser recortada — isso pode ser usado para capturar uma única janela, desde que ela tenha posição e tamanho absolutos conhecidos. Por exemplo, para capturar e codificar o quarto central de um 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 lê dados dos pads de saída abertos de um filtergraph do libavfilter.

Para cada saída aberta do filtergraph, o dispositivo de entrada criará um fluxo correspondente que é mapeado para a saída gerada. O filtergraph é especificado pela opção graph.

3.11.1 Opções

graph

Especifica o filtergraph a ser usado como entrada. Cada saída de vídeo aberta deve ser rotulada com uma string exclusiva no formato "outN", onde N é um número a partir de 0 correspondente ao fluxo de entrada mapeado gerado pelo dispositivo. A primeira saída sem rótulo é atribuída automaticamente ao rótulo "out0", mas todas as outras precisam ser especificadas explicitamente.

O sufixo "+subcc" pode ser adicionado ao rótulo de saída para criar um fluxo extra com os pacotes de legendas ocultas (Closed Captions) associados a essa saída (experimental; por enquanto, apenas para EIA-608 / CEA-708). Os fluxos subcc são criados depois de todos os fluxos normais, na ordem do fluxo correspondente. Por exemplo, se houver "out19+subcc", "out7+subcc" e até "out42", o fluxo #43 é o subcc do fluxo #7, e o fluxo #44 é o subcc do fluxo #19.

Se não for especificado, o padrão é o nome de arquivo informado para o dispositivo de entrada.

graph_file

Define o nome do arquivo do filtergraph a ser lido e enviado para os outros filtros. A sintaxe do filtergraph é a mesma especificada pela opção graph.

dumpgraph

Despeja o graph para stderr.

3.11.2 Exemplos

  • Criar um fluxo de vídeo colorido e reproduzi-lo com o ffplay:

    ffplay -f lavfi -graph "color=c=pink [out0]" dummy
    
  • Como no exemplo anterior, mas usando um nome de arquivo para especificar a descrição do graph, e omitindo o rótulo "out0":

    ffplay -f lavfi color=c=pink
    
  • Criar três fontes de teste de vídeo filtradas diferentes e reproduzi-las:

    ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
    
  • Ler um fluxo de áudio de um arquivo usando a fonte amovie e reproduzi-lo com o ffplay:

    ffplay -f lavfi "amovie=test.wav"
    
  • Ler um fluxo de áudio e um fluxo de vídeo e reproduzi-los com o ffplay:

    ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
    
  • Despejar quadros decodificados em imagens e legendas ocultas (Closed Captions) em um backup 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 baseado em libcdio.

Para habilitar este dispositivo de entrada durante a configuração, é necessário ter o libcdio instalado no sistema. Requer a opção de configure --enable-libcdio.

Este dispositivo permite reproduzir e capturar a partir de um Audio-CD.

Por exemplo, para copiar com o ffmpeg o Audio-CD inteiro em /dev/sr0, você pode executar o comando:

ffmpeg -f libcdio -i /dev/sr0 cd.wav

3.12.1 Opções

speed

Define a velocidade de leitura da unidade. O valor padrão é 0.

A velocidade é especificada em unidades de velocidade de CD-ROM. Ela é definida por meio da função cdio_cddap_speed_set do libcdio. Em muitas unidades de CD-ROM, especificar um valor grande demais resulta no uso da velocidade mais rápida.

paranoia_mode

Define as flags do modo de recuperação paranoia. Aceita um dos seguintes valores:

‘disable’ ‘verify’ ‘overlap’ ‘neverskip’ ‘full’

O valor padrão é ‘disable’.

Para mais informações sobre os modos de recuperação disponíveis, consulte a documentação do projeto paranoia.

3.13 libdc1394

Dispositivo de entrada IIDC1394, baseado em libdc1394 e libraw1394.

Requer a opção de configure --enable-libdc1394.

3.13.1 Opções

framerate

Define a taxa de quadros. O padrão é ntsc, correspondente a uma taxa de quadros de 30000/1001.

pixel_format

Seleciona o pixel format. O padrão é uyvy422.

video_size

Define o tamanho do vídeo indicado como uma string, como 640x480 ou hd720. O padrão é qvga.

3.14 openal

O dispositivo de entrada OpenAL fornece captura de áudio em qualquer sistema com uma implementação funcional do OpenAL 1.1.

Para habilitar este dispositivo de entrada durante a configuração, é necessário ter os headers e bibliotecas do OpenAL instalados no sistema, e configurar o FFmpeg com --enable-openal.

Os headers e bibliotecas do OpenAL devem ser fornecidos como parte da sua implementação do OpenAL, ou como um download adicional (um SDK). Dependendo da sua instalação, pode ser necessário especificar flags adicionais por meio de --extra-cflags e --extra-ldflags para que o sistema de compilação consiga localizar os headers e bibliotecas do OpenAL.

Segue uma lista não exaustiva de implementações do OpenAL:

Creative

A implementação oficial do Windows, que oferece aceleração por hardware nos dispositivos compatíveis e alternativa por software. Consulte http://openal.org/.

OpenAL Soft

Implementação em software portável e de código aberto (LGPL). Inclui backends para as APIs de som mais comuns nos sistemas operacionais Windows, Linux, Solaris e BSD. Consulte http://kcat.strangesoft.net/openal.html.

Apple

O OpenAL faz parte do Core Audio, a interface de áudio oficial do Mac OS X. Consulte http://developer.apple.com/technologies/mac/audio-and-video.html

Este dispositivo permite capturar a partir de um dispositivo de entrada de áudio gerenciado pelo OpenAL.

É necessário especificar o nome do dispositivo a capturar no nome de arquivo fornecido. Se for fornecida a string vazia, o dispositivo seleciona automaticamente o dispositivo padrão. Você pode obter a lista de dispositivos compatíveis usando a opção list_devices.

3.14.1 Opções

channels

Define o número de canais no áudio capturado. Atualmente, somente os valores 1 (mono) e 2 (estéreo) são compatíveis. O padrão é 2.

sample_size

Define o tamanho da amostra (em bits) do áudio capturado. Atualmente, somente os valores 8 e 16 são compatíveis. O padrão é 16.

sample_rate

Define a taxa de amostragem (em Hz) do áudio capturado. O padrão é 44.1k.

list_devices

Se definida como true, imprime uma lista de dispositivos e sai. O padrão é false.

3.14.2 Exemplos

Exibe a lista de dispositivos compatíveis com o OpenAL e encerra:

$ ffmpeg -list_devices true -f openal -i dummy out.ogg

Captura a partir do dispositivo OpenAL DR-BT101 via PulseAudio:

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg

Captura a partir do dispositivo padrão (observe a string vazia ” como nome de arquivo):

$ ffmpeg -f openal -i '' out.ogg

Captura de dois dispositivos simultaneamente, gravando em dois arquivos diferentes, no mesmo comando ffmpeg:

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg

Observação: nem todas as implementações do OpenAL oferecem suporte à captura simultânea múltipla; experimente a versão mais recente do OpenAL Soft caso o exemplo acima não funcione.

3.15 oss

Dispositivo de entrada Open Sound System.

O nome de arquivo a fornecer ao dispositivo de entrada é o nó de dispositivo que representa o dispositivo de entrada OSS, geralmente definido como /dev/dsp.

Por exemplo, para capturar de /dev/dsp usando o ffmpeg, use o comando:

ffmpeg -f oss -i /dev/dsp /tmp/oss.wav

Para mais informações sobre o OSS, consulte: http://manuals.opensound.com/usersguide/dsp.html

3.15.1 Opções

sample_rate

Define a taxa de amostragem em Hz. O padrão é 48000.

channels

Define o número de canais. O padrão é 2.

3.16 pulse

Dispositivo de entrada PulseAudio.

Para habilitar este dispositivo de saída, é necessário configurar o FFmpeg com --enable-libpulse.

O nome de arquivo a fornecer ao dispositivo de entrada é um dispositivo de origem ou a string "default"

Para listar os dispositivos de origem do PulseAudio e suas propriedades, você pode invocar o comando pactl list sources.

Mais informações sobre o PulseAudio podem ser encontradas em http://www.pulseaudio.org.

3.16.1 Opções

server

Conecta-se a um servidor PulseAudio específico, indicado por um endereço IP. Quando não fornecido, é usado o servidor padrão.

name

Especifica o nome do aplicativo que o PulseAudio usará ao exibir os clientes ativos; por padrão, é a string LIBAVFORMAT_IDENT.

stream_name

Especifica o nome do fluxo que o PulseAudio usará ao exibir os fluxos ativos; por padrão, é "record".

sample_rate

Especifica a taxa de amostragem em Hz; por padrão, é usado 48kHz.

channels

Especifica os canais em uso; por padrão, é definido 2 (estéreo).

frame_size

Esta opção não faz nada e está obsoleta.

fragment_size

Especifica em bytes o tamanho do fragmento mínimo de buffer no PulseAudio; isso afeta a latência do áudio. Por padrão, é definido como a quantidade de dados equivalente a 50 ms.

wallclock

Define o PTS inicial usando a hora atual. O padrão é 1.

3.16.2 Exemplos

Grava um fluxo a partir do dispositivo padrão:

ffmpeg -f pulse -i default /tmp/pulse.wav

3.17 sndio

Dispositivo de entrada sndio.

Para habilitar este dispositivo de entrada durante a configuração, é necessário ter o libsndio instalado no sistema.

O nome de arquivo a fornecer ao dispositivo de entrada é o nó de dispositivo que representa o dispositivo de entrada sndio, geralmente definido como /dev/audio0.

Por exemplo, para capturar de /dev/audio0 usando o ffmpeg, use o comando:

ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav

3.17.1 Opções

sample_rate

Define a taxa de amostragem em Hz. O padrão é 48000.

channels

Define o número de canais. O padrão é 2.

3.18 video4linux2, v4l2

Dispositivo de entrada de vídeo Video4Linux2.

"v4l2" pode ser usado como alias para "video4linux2".

Se o FFmpeg for compilado com suporte a v4l-utils (usando a opção de configure --enable-libv4l2), é possível usá-lo com a opção de dispositivo de entrada -use_libv4l2.

O nome do dispositivo a capturar é um nó de dispositivo de arquivo; em geral, os sistemas Linux criam esses nós automaticamente quando o dispositivo (por exemplo, uma webcam USB) é conectado ao sistema, com um nome no formato /dev/videoN, em que N é um número associado ao dispositivo.

Os dispositivos Video4Linux2 geralmente oferecem suporte a um conjunto limitado de tamanhos widthxheight e taxas de quadros. Você pode verificar quais são compatíveis usando -list_formats all para dispositivos Video4Linux2. Alguns dispositivos, como placas de TV, são compatíveis com um ou mais padrões. É possível listar todos os padrões compatíveis usando -list_standards all.

A base de tempo das marcas de tempo é 1 microssegundo. Dependendo da versão e da configuração do kernel, as marcas de tempo podem ser derivadas do relógio de tempo real (origem na Época Unix) ou do relógio monotônico (origem geralmente no momento da inicialização, sem ser afetado por NTP ou alterações manuais do relógio). A opção -timestamps abs ou -ts abs pode ser usada para forçar a conversão para o relógio de tempo real.

Alguns exemplos de uso do dispositivo video4linux2 com ffmpeg e ffplay:

  • Lista os formatos compatíveis com um dispositivo video4linux2:

    ffplay -f video4linux2 -list_formats all /dev/video0
    
  • Captura e exibe a entrada de um dispositivo video4linux2:

    ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
    
  • Captura e grava a entrada de um dispositivo video4linux2, mantendo a taxa de quadros e o tamanho previamente definidos:

    ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
    

Para mais informações sobre o Video4Linux, consulte http://linuxtv.org/.

3.18.1 Opções

standard

Define o padrão. Deve ser o nome de um padrão compatível. Para obter uma lista dos padrões compatíveis, use a opção list_standards.

channel

Define o número do canal de entrada. O padrão é -1, o que significa usar o canal previamente selecionado.

video_size

Define o tamanho do quadro de vídeo. O argumento deve ser uma string no formato WIDTHxHEIGHT ou uma abreviação de tamanho válida.

pixel_format

Seleciona o pixel format (válido somente para entrada de vídeo raw).

input_format

Define o pixel format preferido (para vídeo raw) ou um nome de codec. Esta opção permite selecionar o formato de entrada quando vários estão disponíveis.

framerate

Define a taxa de quadros de vídeo preferida.

list_formats

Lista os formatos disponíveis (pixel formats, codecs e tamanhos de quadro compatíveis) e encerra.

Os valores disponíveis são:

‘all’

Mostra todos os formatos disponíveis (compactados e não compactados).

‘raw’

Mostra apenas formatos de vídeo raw (não compactados).

‘compressed’

Mostra apenas formatos compactados.

list_standards

Lista os padrões compatíveis e encerra.

Os valores disponíveis são:

‘all’

Mostra todos os padrões compatíveis.

timestamps, ts

Define o tipo de marca de tempo para os quadros capturados.

Os valores disponíveis são:

‘default’

Usa as marcas de tempo do kernel.

‘abs’

Usa marcas de tempo absolutas (wall clock).

‘mono2abs’

Força a conversão de marcas de tempo monotônicas para absolutas.

O valor padrão é default.

use_libv4l2

Usa as funções de conversão do libv4l2 (v4l-utils). O padrão é 0.

3.19 vfwcap

Dispositivo de entrada de captura VfW (Video for Windows).

O nome de arquivo passado como entrada é o número do driver de captura, variando de 0 a 9. Você pode usar "list" como nome de arquivo para exibir uma lista de drivers. Qualquer outro nome de arquivo será interpretado como o dispositivo número 0.

3.19.1 Opções

video_size

Define o tamanho do quadro de vídeo.

framerate

Define a taxa de quadros da captura. O valor padrão é ntsc, correspondente a uma taxa de quadros de 30000/1001.

3.20 x11grab

Dispositivo de entrada de vídeo X11.

Para habilitar este dispositivo de entrada durante a configuração, é necessário ter o libxcb instalado no sistema. Ele será detectado automaticamente durante a configuração.

Este dispositivo permite capturar uma região de um display X11.

O nome de arquivo passado como entrada tem a seguinte sintaxe:

[hostname]:display_number.screen_number[+x_offset,y_offset]

hostname:display_number.screen_number especifica o nome do display X11 da tela a partir da qual capturar. hostname pode ser omitido, e o padrão é "localhost". A variável de ambiente DISPLAY contém o nome do display padrão.

x_offset e y_offset especificam os deslocamentos da área capturada em relação ao canto superior esquerdo da tela X11. O padrão de ambos é 0.

Consulte a documentação do X11 (por exemplo, man X) para informações mais detalhadas.

Use o programa xdpyinfo para obter informações básicas sobre as propriedades do seu display X11 (por exemplo, usando grep para "name" ou "dimensions").

Por exemplo, para capturar de :0.0 usando o ffmpeg:

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg

Captura na posição 10,20:

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

3.20.1 Opções

select_region

Especifica se a área de captura deve ser selecionada graficamente usando o ponteiro. O valor 1 solicita que o usuário selecione a área de captura graficamente clicando e arrastando. Um único clique sem arrastar seleciona a tela inteira. Uma região com largura ou altura zero também seleciona a tela inteira. Esta opção sobrepõe as opções video_size, grab_x e grab_y. O valor padrão é 0.

draw_mouse

Especifica se o ponteiro do mouse deve ser desenhado. O valor 0 especifica que o ponteiro não deve ser desenhado. O valor padrão é 1.

follow_mouse

Faz a área capturada seguir o mouse. O argumento pode ser centered ou um número de pixels PIXELS.

Quando especificado com "centered", a região de captura segue o ponteiro do mouse e mantém o ponteiro no centro da região; caso contrário, a região só segue quando o ponteiro do mouse chega a uma distância de PIXELS (maior que zero) da borda da região.

Por exemplo:

ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg

Para seguir apenas quando o ponteiro do mouse chegar a 100 pixels da borda:

ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg

framerate

Define a taxa de quadros da captura. O valor padrão é ntsc, correspondente a uma taxa de quadros de 30000/1001.

show_region

Mostra a região capturada na tela.

Se show_region for especificado com 1, a região de captura será indicada na tela. Com esta opção, é fácil saber o que está sendo capturado quando apenas uma parte da tela é capturada.

region_border

Define a espessura da borda da região quando -show_region 1 é usado. O intervalo é de 1 a 128 e o padrão é 3 (somente x11grab baseado em XCB).

Por exemplo:

ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

Com 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 janela, em vez da tela inteira. O valor padrão é 0, que corresponde à tela inteira (janela raiz).

O id de uma janela pode ser encontrado usando o programa xwininfo, possivelmente com as opções -tree e -root.

Se a janela for posteriormente ampliada, a nova área não é gravada. O vídeo termina quando a janela é fechada, desmapeada (ou seja, minimizada) ou reduzida além do tamanho do vídeo (cujo padrão é o tamanho inicial da janela).

Esta opção desativa as opções follow_mouse e select_region.

video_size

Define o tamanho do quadro de vídeo. O padrão é a área de trabalho ou a janela inteira.

grab_x grab_y

Define as coordenadas da região de captura. São expressas como deslocamento a partir do canto superior esquerdo da janela X11 e correspondem aos parâmetros x_offset e y_offset no nome do dispositivo. O valor padrão de ambas as opções é 0.

4 Dispositivos de saída

Dispositivos de saída são elementos configurados no FFmpeg que podem gravar dados multimídia em um dispositivo de saída conectado ao sistema.

Ao configurar sua compilação do FFmpeg, todos os dispositivos de saída compatíveis são habilitados por padrão. Você pode listar todos os disponíveis usando a opção de configure "–list-outdevs".

Você pode desativar todos os dispositivos de saída usando a opção de configure "–disable-outdevs", habilitar seletivamente um dispositivo de saída usando a opção "–enable-outdev=OUTDEV", ou desativar um dispositivo de entrada específico usando a opção "–disable-outdev=OUTDEV".

A opção "-devices" das ferramentas ff* exibe a lista de dispositivos de saída habilitados.

Segue uma descrição dos dispositivos de saída atualmente disponíveis.

4.1 alsa

Dispositivo de saída ALSA (Advanced Linux Sound Architecture).

4.1.1 Exemplos

  • Reproduz um arquivo no dispositivo ALSA padrão:

    ffmpeg -i INPUT -f alsa default
    
  • Reproduz um arquivo na placa de som 1, dispositivo de áudio 7:

    ffmpeg -i INPUT -f alsa hw:1,7
    

4.2 AudioToolbox

Dispositivo de saída AudioToolbox.

Permite saída nativa para dispositivos CoreAudio no OSX.

O nome de arquivo de saída pode ser vazio (ou -) para se referir ao dispositivo de saída padrão do sistema, ou um número que se refere ao índice do dispositivo, conforme exibido com -list_devices true.

Alternativamente, o dispositivo de entrada de áudio pode ser escolhido por índice usando -audio_device_index , sobrepondo qualquer nome ou índice de dispositivo indicado no nome de arquivo de entrada.

Todos os dispositivos disponíveis podem ser enumerados usando -list_devices true, que lista todos os nomes de dispositivo, UIDs e índices correspondentes.

4.2.1 Opções

O AudioToolbox oferece suporte às seguintes opções:

-audio_device_index

Especifica o dispositivo de áudio pelo seu índice. Sobrepõe qualquer valor indicado no nome de arquivo de saída.

4.2.2 Exemplos

  • Exibe a lista de dispositivos compatíveis e envia uma onda senoidal para o dispositivo padrão:

    $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true -
    
  • Envia uma onda senoidal para o dispositivo com índice 2, sobrepondo qualquer nome de arquivo de saída:

    $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 -
    

4.3 caca

Dispositivo de saída CACA.

Este dispositivo de saída permite exibir um fluxo de vídeo em uma janela CACA. Apenas uma janela CACA é permitida por aplicativo, portanto você pode ter somente uma instância deste dispositivo de saída em um aplicativo.

Para habilitar este dispositivo de saída, é necessário configurar o FFmpeg com --enable-libcaca. O libcaca é uma biblioteca gráfica que gera texto em vez de pixels.

Para mais informações sobre o libcaca, consulte: http://caca.zoy.org/wiki/libcaca

4.3.1 Opções

window_title

Define o título da janela CACA; se não especificado, o padrão é o nome de arquivo especificado para o dispositivo de saída.

window_size

Define o tamanho da janela CACA; pode ser uma string no formato widthxheight ou uma abreviação de tamanho de vídeo. Se não especificado, o padrão é o tamanho do vídeo de entrada.

driver

Define o driver de exibição.

algorithm

Define o algoritmo de dithering. O dithering é necessário porque a imagem renderizada geralmente tem muito mais cores do que a paleta disponível. Os valores aceitos são listados com -list_dither algorithms.

antialias

Define o método de antialiasing. O antialiasing suaviza a imagem renderizada e evita o efeito de serrilhado comumente observado. Os valores aceitos são listados com -list_dither antialiases.

charset

Define quais caracteres serão usados ao renderizar texto. Os valores aceitos são listados com -list_dither charsets.

color

Define a cor a ser usada ao renderizar texto. Os valores aceitos são listados com -list_dither colors.

list_drivers

Se definido como true, exibe uma lista de drivers disponíveis e encerra.

list_dither

Lista as opções de dithering disponíveis relacionadas ao argumento. O argumento deve ser um de algorithms, antialiases, charsets, colors.

4.3.2 Exemplos

  • O comando a seguir mostra a saída do ffmpeg em uma janela CACA, forçando seu tamanho para 80x25:

    ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
    
  • Mostra a lista de drivers disponíveis e encerra:

    ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
    
  • Mostra a lista de cores de dithering disponíveis e encerra:

    ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
    

O dispositivo de saída decklink fornece recursos de reprodução para dispositivos Blackmagic DeckLink.

Para habilitar este dispositivo de saída, é necessário o Blackmagic DeckLink SDK e configurar com os --extra-cflags e --extra-ldflags apropriados. No Windows, é necessário processar os arquivos IDL com o widl.

O DeckLink é muito exigente quanto aos formatos aos quais oferece suporte. O pixel format é sempre uyvy422; a taxa de quadros, a ordem de campos e o tamanho do vídeo devem ser determinados para o seu dispositivo com -list_formats 1. A taxa de amostragem do áudio é sempre 48 kHz.

4.4.1 Opções

list_devices

Se definida como true, imprime uma lista de dispositivos e sai. O padrão é false. Esta opção está obsoleta; use a opção -sinks do ffmpeg para listar os dispositivos de saída disponíveis.

list_formats

Se definido como true, exibe uma lista de formatos compatíveis e encerra. O padrão é false.

preroll

Tempo de pré-rolagem do vídeo em segundos. O padrão é 0.5.

duplex_mode

Define o modo duplex/profile do dispositivo decklink. Deve ser ‘unset’, ‘half’, ‘full’, ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half’. O padrão é ‘unset’.

Observação: o DeckLink SDK 11.0 substituiu a propriedade duplex por uma propriedade profile. Para o DeckLink Duo 2 e o DeckLink Quad 2, um profile é compartilhado entre quaisquer 2 subdispositivos que utilizem os mesmos conectores. Para o DeckLink 8K Pro, um profile é compartilhado entre os 4 subdispositivos. Portanto, o DeckLink 8K Pro é compatível com quatro profiles.

Modos de profile válidos para o DeckLink 8K Pro (com DeckLink SDK >= 11.0): ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half’

Modos de profile válidos para o DeckLink Quad 2 e o DeckLink Duo 2: ‘half’, ‘full’

timing_offset

Define o deslocamento de pixel do timing de genlock na saída usada. O padrão é ‘unset’.

link

Define a configuração de link de vídeo SDI na saída usada. Deve ser ‘unset’, link SDI ‘single’, link SDI ‘dual’ ou link SDI ‘quad’. O padrão é ‘unset’.

sqd

Habilita o modo Square Division Quad Split para saída SDI Quad-link. Deve ser ‘unset’, ‘true’ ou ‘false’. O padrão é unset.

level_a

Habilita o modo SMPTE Level A na saída usada. Deve ser ‘unset’, ‘true’ ou ‘false’. O padrão é unset.

vanc_queue_size

Define o tamanho máximo do buffer de saída em bytes para dados VANC. Se o buffering atingir esse valor, os dados VANC de saída serão descartados. O padrão é ‘1048576’.

4.4.2 Exemplos

  • Lista os dispositivos de saída:

    ffmpeg -sinks decklink
    
  • Lista os formatos compatíveis:

    ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
    
  • Reproduz um clipe de vídeo:

    ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
    
  • Reproduz um clipe de vídeo com taxa de quadros ou tamanho de vídeo fora do padrão:

    ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
    

4.5 fbdev

Dispositivo de saída framebuffer do Linux.

O framebuffer do Linux é uma camada de abstração gráfica independente de hardware para exibir gráficos em um monitor de computador, tipicamente no console. É acessado por meio de um nó de dispositivo de arquivo, geralmente /dev/fb0.

Para informações mais detalhadas, leia o arquivo Documentation/fb/framebuffer.txt incluído na árvore de código-fonte do Linux.

4.5.1 Opções

xoffset yoffset

Define a coordenada x/y do canto superior esquerdo. O padrão é 0.

4.5.2 Exemplos

Reproduz um arquivo no dispositivo framebuffer /dev/fb0. O pixel format necessário depende das configurações atuais do framebuffer.

ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0

Veja também http://linux-fbdev.sourceforge.net/ e fbset(1).

4.6 oss

Dispositivo de saída OSS (Open Sound System).

4.7 pulse

Dispositivo de saída PulseAudio.

Para habilitar este dispositivo de saída, é necessário configurar o FFmpeg com --enable-libpulse.

Mais informações sobre o PulseAudio podem ser encontradas em http://www.pulseaudio.org

4.7.1 Opções

server

Conecta-se a um servidor PulseAudio específico, indicado por um endereço IP. Quando não fornecido, é usado o servidor padrão.

name

Especifica o nome do aplicativo que o PulseAudio usará ao exibir os clientes ativos; por padrão, é a string LIBAVFORMAT_IDENT.

stream_name

Especifica o nome do fluxo que o PulseAudio usará ao exibir os fluxos ativos; por padrão, é definido como o nome de saída especificado.

device

Especifica o dispositivo a ser usado. Quando não fornecido, é usado o dispositivo padrão. A lista de dispositivos de saída pode ser obtida com o comando pactl list sinks.

buffer_size buffer_duration

Controla o tamanho e a duração do buffer do PulseAudio. Um buffer pequeno oferece mais controle, mas exige atualizações mais frequentes.

buffer_size especifica o tamanho em bytes, enquanto buffer_duration especifica a duração em milissegundos.

Quando ambas as opções são fornecidas, é usado o valor mais alto (a duração é recalculada para bytes usando os parâmetros do fluxo). Se forem definidas como 0 (o padrão), o dispositivo usa o valor de duração padrão do PulseAudio. Por padrão, o PulseAudio define a duração do buffer em cerca de 2 segundos.

prebuf

Especifica o tamanho do pré-buffer em bytes. O servidor não inicia a reprodução antes que ao menos prebuf bytes estejam disponíveis no buffer. Por padrão, esta opção é inicializada com o mesmo valor de buffer_size ou buffer_duration (o que for maior).

minreq

Especifica o tamanho mínimo de requisição em bytes. O servidor não solicita menos que minreq bytes do cliente; em vez disso, aguarda até que o buffer tenha espaço suficiente para solicitar mais bytes de uma vez. Recomenda-se não definir esta opção, o que fará com que ela seja inicializada com um valor considerado adequado pelo servidor.

4.7.2 Exemplos

Reproduz um arquivo no dispositivo padrão do servidor padrão:

ffmpeg  -i INPUT -f pulse "stream name"

4.8 sndio

Dispositivo de saída de áudio sndio.

4.9 v4l2

Dispositivo de saída Video4Linux2.

4.10 xv

Dispositivo de saída XV (XVideo).

Este dispositivo de saída permite exibir um fluxo de vídeo em uma janela do X Window System.

4.10.1 Opções

display_name

Especifica o nome de display de hardware, que determina o display e o domínio de comunicação a serem usados.

O nome de display ou a variável de ambiente DISPLAY pode ser uma string no formato hostname[:number[.screen_number]].

hostname especifica o nome da máquina host à qual o display está fisicamente conectado. number especifica o número do servidor de display nessa máquina host. screen_number especifica a tela a ser usada nesse servidor.

Se não especificado, o padrão é o valor da variável de ambiente DISPLAY.

Por exemplo, dual-headed:0.1 especificaria a tela 1 do display 0 na máquina chamada “dual-headed”.

Consulte a especificação X11 para informações mais detalhadas sobre o formato do nome de display.

window_id

Quando definido com um valor diferente de zero, o dispositivo não cria uma nova janela, mas usa a existente com o window_id fornecido. Por padrão, esta opção é definida como zero e o dispositivo cria sua própria janela.

window_size

Define o tamanho da janela criada; pode ser uma string no formato widthxheight ou uma abreviação de tamanho de vídeo. Se não especificado, o padrão é o tamanho do vídeo de entrada. Ignorado quando window_id é definido.

window_x window_y

Define os deslocamentos X e Y da janela criada. Ambos são definidos como 0 por padrão. Os valores podem ser ignorados pelo gerenciador de janelas. Ignorado quando window_id é definido.

window_title

Define o título da janela; se não especificado, o padrão é o nome de arquivo especificado para o dispositivo de saída. Ignorado quando window_id é definido.

Para mais informações sobre o XVideo, consulte http://www.x.org/.

4.10.2 Exemplos

  • Decodifica, exibe e codifica a entrada de vídeo com ffmpeg simultaneamente:

    ffmpeg -i INPUT OUTPUT -f xv display
    
  • Decodifica e exibe o vídeo de entrada em múltiplas janelas X11:

    ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
    

5 Veja também

ffmpeg, ffplay, ffprobe, libavdevice

6 Autores

Os desenvolvedores do FFmpeg.

Para mais detalhes sobre a autoria, consulte o histórico do Git do projeto (https://git.ffmpeg.org/ffmpeg), por exemplo digitando o comando git log no diretório de código-fonte do FFmpeg, ou navegando pelo repositório on-line em https://git.ffmpeg.org/ffmpeg.

Os mantenedores dos componentes específicos estão listados no arquivo MAINTAINERS na árvore do código-fonte.

Hospedagem fornecida por telepoint.bg