⚠️ 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-filters.html).

Documentação de filtros do FFmpeg

1 Descrição

Este documento descreve os filtros, as fontes e os sinks fornecidos pela biblioteca libavfilter.

2 Introdução à filtragem

A filtragem no FFmpeg é habilitada pela biblioteca libavfilter.

No libavfilter, um filtro pode ter várias entradas e várias saídas. Para ilustrar o tipo de coisas que são possíveis, vamos considerar o seguinte filtergraph.

                [main]
input --> split ---------------------> overlay --> output
            |                             ^
            |[tmp]                  [flip]|
            +-----> crop --> vflip -------+

Este filtergraph divide o fluxo de entrada em dois fluxos, envia um deles pelo filtro crop e pelo filtro vflip, e depois o combina novamente com o outro fluxo sobrepondo-o por cima. É possível usar o seguinte comando para conseguir isso:

ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT

O resultado será que a metade superior do vídeo é espelhada na metade inferior do vídeo de saída.

Filtros na mesma cadeia linear são separados por vírgulas, e cadeias lineares distintas de filtros são separadas por ponto e vírgula. Em nosso exemplo, crop,vflip estão em uma cadeia linear, e split e overlay estão cada um em outra. Os pontos onde as cadeias lineares se unem são identificados por nomes entre colchetes. No exemplo, o filtro split gera duas saídas associadas aos rótulos [main] e [tmp].

O fluxo enviado à segunda saída de split, identificada como [tmp], é processado pelo filtro crop, que recorta a metade inferior do vídeo, e em seguida é invertido verticalmente. O filtro overlay recebe como entrada a primeira saída inalterada do filtro split (identificada como [main]) e sobrepõe, em sua metade inferior, a saída gerada pela cadeia de filtros crop,vflip.

Alguns filtros recebem como entrada uma lista de parâmetros: eles são especificados após o nome do filtro e um sinal de igual, e são separados uns dos outros por dois-pontos.

Existem os chamados filtros fonte ("source"), que não têm entrada de áudio/vídeo, e filtros sink, que não terão saída de áudio/vídeo.

3 graph2dot

O programa graph2dot, incluído no diretório tools do FFmpeg, pode ser usado para analisar a descrição de um filtergraph e gerar a representação textual correspondente na linguagem dot.

Execute o comando:

graph2dot -h

para ver como usar o graph2dot.

Em seguida, é possível passar a descrição dot para o programa dot (do conjunto de programas graphviz) e obter uma representação gráfica do filtergraph.

Por exemplo, a seguinte sequência de comandos:

echo GRAPH_DESCRIPTION | \
tools/graph2dot -o graph.tmp && \
dot -Tpng graph.tmp -o graph.png && \
display graph.png

pode ser usada para criar e exibir uma imagem que representa o grafo descrito pela string GRAPH_DESCRIPTION. Observe que essa string deve ser um grafo completo e autocontido, com suas entradas e saídas definidas explicitamente. Por exemplo, se sua linha de comando tiver a forma:

ffmpeg -i infile -vf scale=640:360 outfile

sua string GRAPH_DESCRIPTION precisará ter a forma:

nullsrc,scale=640:360,nullsink

também pode ser necessário definir os parâmetros de nullsrc e adicionar um filtro format para simular um arquivo de entrada específico.

4 Descrição de um filtergraph

Um filtergraph é um grafo direcionado de filtros conectados. Ele pode conter ciclos, e pode haver vários links entre um mesmo par de filtros. Cada link tem, de um lado, um pad de entrada que o conecta ao filtro do qual recebe sua entrada, e, do outro lado, um pad de saída que o conecta ao filtro que aceita sua saída.

Cada filtro em um filtergraph é uma instância de uma classe de filtro registrada na aplicação, que define os recursos e o número de pads de entrada e saída do filtro.

Um filtro sem pads de entrada é chamado de "fonte", e um filtro sem pads de saída é chamado de "sink".

4.1 Sintaxe de um filtergraph

Um filtergraph tem uma representação textual, reconhecida pelas opções -filter/-vf/-af e -filter_complex do ffmpeg e -vf/-af do ffplay, além da função avfilter_graph_parse_ptr() definida em libavfilter/avfilter.h.

Uma filterchain consiste em uma sequência de filtros conectados, cada um conectado ao anterior na sequência. Uma filterchain é representada por uma lista de descrições de filtro separadas por ",".

Um filtergraph consiste em uma sequência de filterchains. Uma sequência de filterchains é representada por uma lista de descrições de filterchain separadas por ";".

Um filtro é representado por uma string no formato: [in_link_1]...[in_link_N]filter_name@id=arguments[out_link_1]...[out_link_M]

filter_name é o nome da classe de filtro da qual o filtro descrito é uma instância, e deve ser o nome de uma das classes de filtro registradas no programa, opcionalmente seguido de "@id". O nome da classe de filtro pode opcionalmente ser seguido de uma string "=arguments".

arguments é uma string que contém os parâmetros usados para inicializar a instância do filtro. Pode assumir uma das duas formas a seguir:

  • Uma lista de pares key=value separados por ’:’.
  • Uma lista de valores separados por ’:’. Nesse caso, presume-se que as chaves são os nomes das opções na ordem em que são declaradas. Por exemplo, o filtro fade declara três opções nesta ordem – type, start_frame e nb_frames. Então a lista de parâmetros in:0:30 significa que o valor in é atribuído à opção type, 0 a start_frame e 30 a nb_frames.
  • Uma lista mista, separada por ’:’, de valores diretos e pares key=value longos. O valor direto deve preceder os pares key=value, seguindo as mesmas restrições de ordem do ponto anterior. Os pares key=value seguintes podem ser definidos em qualquer ordem preferida.

Se o próprio valor da opção for uma lista de itens (por exemplo, o filtro format recebe uma lista de pixel formats), os itens da lista costumam ser separados por ‘|’.

A lista de argumentos pode ser colocada entre aspas usando o caractere ‘'’ como marca inicial e final, e o caractere ‘\’ para escapar os caracteres dentro do texto entre aspas; caso contrário, a string de argumento é considerada terminada ao encontrar o próximo caractere especial (pertencente ao conjunto ‘[]=;,’).

Uma sintaxe especial implementada na ferramenta de linha de comando ffmpeg permite carregar valores de opção a partir de arquivos. Isso é feito antepondo uma barra ’/’ ao nome da opção; o valor fornecido é então interpretado como um caminho a partir do qual o valor real é carregado. Por exemplo,

ffmpeg -i <INPUT> -vf drawtext=/text=/tmp/some_text <OUTPUT>

isso carregará o texto a ser desenhado a partir de /tmp/some_text. Usuários da API que desejem implementar um recurso semelhante devem usar as funções avfilter_graph_segment_*() junto com código de E/S personalizado.

O nome e os argumentos do filtro podem ser opcionalmente precedidos e seguidos por uma lista de rótulos de link. Um rótulo de link permite nomear um link e associá-lo a um pad de saída ou de entrada de um filtro. Os rótulos precedentes in_link_1 ... in_link_N são associados aos pads de entrada do filtro, e os rótulos seguintes out_link_1 ... out_link_M são associados aos pads de saída.

Quando dois rótulos de link com o mesmo nome são encontrados no filtergraph, um link entre o pad de entrada e o de saída correspondentes é criado.

Se um pad de saída não estiver rotulado, ele é vinculado por padrão ao primeiro pad de entrada não rotulado do próximo filtro na filterchain. Por exemplo, na filterchain

nullsrc, split[L1], [L2]overlay, nullsink

a instância do filtro split tem dois pads de saída, e a instância do filtro overlay tem dois pads de entrada. O primeiro pad de saída de split é rotulado como "L1", o primeiro pad de entrada de overlay é rotulado como "L2", e o segundo pad de saída de split é vinculado ao segundo pad de entrada de overlay, ambos não rotulados.

Em uma descrição de filtro, se o rótulo de entrada do primeiro filtro não for especificado, presume-se "in"; se o rótulo de saída do último filtro não for especificado, presume-se "out".

Em uma filterchain completa, todos os pads de entrada e saída de filtro não rotulados devem estar conectados. Um filtergraph é considerado válido se todos os pads de entrada e saída de filtro de todas as filterchains estiverem conectados.

Espaços em branco (espaço, tabulações ou quebras de linha) que separam tokens no início e no fim da especificação do filtergraph são ignorados. Isso significa que o filtergraph pode ser expresso usando linhas vazias e espaços para melhorar a legibilidade.

Por exemplo, o filtergraph:

testsrc,split[L1],hflip[L2];[L1][L2] hstack

pode ser representado como:

testsrc,
split [L1], hflip [L2];

[L1][L2] hstack

O libavfilter insere automaticamente filtros scale onde a conversão de formato for necessária. É possível especificar flags de swscale para esses escaladores inseridos automaticamente antepondo sws_flags=flags; à descrição do filtergraph.

A seguir, uma descrição BNF da sintaxe de um filtergraph:

NAME             ::= sequence of alphanumeric characters and '_'
FILTER_NAME      ::= NAME["@"NAME]
LINKLABEL        ::= "[" NAME "]"
LINKLABELS       ::= LINKLABEL [LINKLABELS]
FILTER_ARGUMENTS ::= sequence of chars (possibly quoted)
FILTER           ::= [LINKLABELS] FILTER_NAME ["=" FILTER_ARGUMENTS] [LINKLABELS]
FILTERCHAIN      ::= FILTER [,FILTERCHAIN]
FILTERGRAPH      ::= [sws_flags=flags;] FILTERCHAIN [;FILTERGRAPH]

4.2 Notas sobre o escape em um filtergraph

A composição da descrição de um filtergraph envolve vários níveis de escape. Consulte (ffmpeg-utils)a seção "Aspas e escape" do manual ffmpeg-utils(1) para mais informações sobre o procedimento de escape empregado.

Um primeiro nível de escape afeta o conteúdo de cada valor de opção de filtro, que pode conter o caractere especial : usado para separar valores, ou um dos caracteres de escape \'.

Um segundo nível de escape afeta toda a descrição do filtro, que pode conter os caracteres de escape \' ou os caracteres especiais [],; usados pela descrição do filtergraph.

Por fim, ao especificar um filtergraph em uma linha de comando do shell, é necessário realizar um terceiro nível de escape para os caracteres especiais do shell nele contidos.

Por exemplo, considere a seguinte string a ser incorporada no valor text da descrição do filtro drawtext:

this is a 'string': may contain one, or more, special characters

Essa string contém o caractere especial de escape ' e o caractere especial :, portanto precisa ser escapada desta forma:

text=this is a \'string\'\: may contain one, or more, special characters

Um segundo nível de escape é necessário ao incorporar a descrição do filtro em uma descrição de filtergraph, a fim de escapar todos os caracteres especiais do filtergraph. Assim, o exemplo acima se torna:

drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters

(observe que, além dos caracteres especiais de escape \', também é preciso escapar ,).

Por fim, é necessário um nível adicional de escape ao escrever a descrição do filtergraph em um comando de shell, o que depende das regras de escape do shell adotado. Por exemplo, supondo que \ seja especial e precise ser escapado com outro \, a string anterior resultará finalmente em:

-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"

Para evitar um escape trabalhoso ao usar uma ferramenta de linha de comando que aceita uma especificação de filtro como entrada, é aconselhável evitar a inclusão direta da especificação do filtro ou das opções no shell.

Por exemplo, no caso do filtro drawtext, pode ser preferível usar a opção textfile no lugar de text para especificar o texto a ser renderizado.

5 Edição de linha do tempo

Alguns filtros aceitam uma opção genérica enable. Nos filtros que aceitam edição de linha do tempo, essa opção pode ser definida com uma expressão avaliada antes de enviar um quadro ao filtro. Se a avaliação for diferente de zero, o filtro será habilitado; caso contrário, o quadro será enviado sem alterações ao próximo filtro no filtergraph.

A expressão aceita os seguintes valores:

‘t’

marca de tempo expressa em segundos; NAN se a marca de tempo de entrada for desconhecida

‘n’

número sequencial do quadro de entrada, começando em 0

‘pos’

a posição no arquivo do quadro de entrada; NAN se desconhecida; obsoleto, não usar

‘w’ ‘h’

largura e altura do quadro de entrada, se for vídeo

Além disso, esses filtros aceitam um comando enable que pode ser usado para redefinir a expressão.

Assim como qualquer outra opção de filtragem, a opção enable segue as mesmas regras.

Por exemplo, para habilitar um filtro de desfoque (smartblur) dos 10 segundos aos 3 minutos, e um filtro curves a partir dos 3 segundos:

smartblur = enable='between(t,10,3*60)',
curves    = enable='gte(t,3)' : preset=cross_process

Consulte ffmpeg -filters para ver quais filtros são compatíveis com edição de linha do tempo.

6 Alterando opções em tempo de execução com um comando

Algumas opções podem ser alteradas durante o funcionamento do filtro por meio de um comando. Essas opções são marcadas com ’T’ na saída de ffmpeg -h filter=. O nome do comando é o nome da opção, e o argumento é o novo valor.

7 Opções para filtros com várias entradas (framesync)

Alguns filtros com várias entradas aceitam um conjunto comum de opções. Essas opções só podem ser definidas pelo nome, não com a notação curta.

eof_action

A ação a ser tomada quando EOF é encontrado na entrada secundária; aceita um dos seguintes valores:

repeat

Repete o último quadro (padrão).

endall

Encerra ambos os fluxos.

pass

Deixa passar a entrada principal sem alterações.

shortest

Se definido como 1, força o encerramento da saída quando a entrada mais curta terminar. O valor padrão é 0.

repeatlast

Se definido como 1, força o filtro a estender o último quadro dos fluxos secundários até o fim do fluxo primário. Um valor de 0 desativa esse comportamento. O valor padrão é 1.

ts_sync_mode

O rigor com que os fluxos são sincronizados com base nas marcas de tempo da entrada secundária; aceita um dos seguintes valores:

default

Quadro da entrada secundária com a marca de tempo inferior ou igual mais próxima à do quadro da entrada primária.

nearest

Quadro da entrada secundária com a marca de tempo mais próxima, em valor absoluto, à do quadro da entrada primária.

8 Filtros de áudio

Ao configurar sua compilação do FFmpeg, é possível desativar qualquer um dos filtros existentes usando --disable-filters. A saída do configure mostrará os filtros de áudio incluídos na sua compilação.

A seguir, uma descrição dos filtros de áudio atualmente disponíveis.

8.1 aap

Aplica o algoritmo Affine Projection ao primeiro fluxo de áudio usando o segundo fluxo de áudio.

Esse filtro adaptativo é usado para estimar áudio desconhecido a partir de várias amostras de áudio de entrada. O algoritmo affine projection pode equilibrar a complexidade computacional com a velocidade de convergência.

Segue uma descrição das opções aceitas.

order

Define a ordem do filtro.

projection

Define a ordem da projeção.

mu

Define o mu do filtro.

delta

Define o coeficiente para inicializar a matriz de covariância interna.

out_mode

Define as amostras de saída do filtro. Aceita os seguintes valores:

i

Deixa passar a 1ª entrada.

d

Deixa passar a 2ª entrada.

o

Deixa passar a diferença entre o sinal desejado, a 2ª entrada e a estimativa do sinal de erro.

n

Deixa passar a diferença entre a entrada, a 1ª entrada e a estimativa do sinal de erro.

e

Deixa passar as amostras estimadas do sinal de erro.

O valor padrão é o.

precision

Define qual precisão usar ao processar as amostras.

auto

Escolhe automaticamente o sample format interno dependendo dos demais filtros.

float

Sempre usa um sample format de precisão de ponto flutuante simples.

double

Sempre usa um sample format de precisão de ponto flutuante dupla.

8.2 acompressor

Um compressor é usado principalmente para reduzir a faixa dinâmica de um sinal. Em especial, a música moderna costuma ser comprimida com uma ratio alta para melhorar o loudness geral. Isso é feito para obter a máxima atenção do ouvinte, "engordar" o som e trazer mais "potência" para a faixa. Se um sinal for comprimido demais, ele pode soar apagado ou "morto" depois, ou pode começar a "bombear" (o que pode ser um efeito poderoso, mas também pode destruir uma faixa por completo). A compressão correta é a chave para alcançar um som profissional e é a alta arte da mixagem e da masterização. Por causa de seus ajustes complexos, pode levar bastante tempo até se ter a sensação certa para esse tipo de efeito.

A compressão é feita detectando o volume acima de um nível threshold escolhido e dividindo-o pelo fator definido em ratio. Assim, se você definir o threshold em -12dB e o sinal chegar a -6dB, uma ratio de 2:1 resultará em um sinal de -9dB. Como uma manipulação exata do sinal causaria distorção da forma de onda, a redução pode ser nivelada ao longo do tempo. Isso é feito definindo "Attack" e "Release". attack determina por quanto tempo o sinal precisa ficar acima do threshold antes que qualquer redução ocorra, e release define o tempo que o sinal precisa ficar abaixo do threshold para que a redução diminua novamente. Sinais mais curtos que o tempo de attack escolhido permanecerão inalterados. A redução geral do sinal pode ser compensada depois com o ajuste makeup. Assim, comprimir os picos de um sinal em cerca de 6dB e elevar o makeup a esse nível resulta em um sinal duas vezes mais alto que a fonte. Para obter uma entrada mais suave na compressão, o knee suaviza a borda abrupta no threshold dentro da faixa de decibéis escolhida.

O filtro aceita as seguintes opções:

level_in

Define o ganho de entrada. O padrão é 1. O intervalo vai de 0.015625 a 64.

mode

Define o modo de operação do compressor. Pode ser upward ou downward. O padrão é downward.

threshold

Se um sinal do fluxo ultrapassar esse nível, ele afetará a redução de ganho. O padrão é 0.125. O intervalo vai de 0.00097563 a 1.

ratio

Define uma proporção pela qual o sinal é reduzido. 1:2 significa que, se o nível subir 4dB acima do threshold, ficará apenas 2dB acima após a redução. O padrão é 2. O intervalo vai de 1 a 20.

attack

Quantidade de milissegundos que o sinal precisa ficar acima do threshold antes que a redução de ganho comece. O padrão é 20. O intervalo vai de 0.01 a 2000.

release

Quantidade de milissegundos que o sinal precisa ficar abaixo do threshold antes que a redução volte a diminuir. O padrão é 250. O intervalo vai de 0.01 a 9000.

makeup

Define a quantidade em que o sinal será amplificado após o processamento. O padrão é 1. O intervalo vai de 1 a 64.

knee

Curva o knee abrupto ao redor do threshold para entrar na redução de ganho de forma mais suave. O padrão é 2.82843. O intervalo vai de 1 a 8.

link

Escolhe se o nível average entre todos os canais do fluxo de entrada, ou o canal mais alto (maximum) do fluxo de entrada, afeta a redução. O padrão é average.

detection

Se deve ser considerado o sinal exato, no caso de peak, ou um sinal RMS, no caso de rms. O padrão é rms, que costuma ser mais suave.

mix

Quanto do sinal comprimido é usado na saída. O padrão é 1. O intervalo vai de 0 a 1.

8.2.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.3 acontrast

Filtro simples de compressão/expansão da faixa dinâmica de áudio.

O filtro aceita as seguintes opções:

contrast

Define o contraste. O padrão é 33. O intervalo permitido vai de 0 a 100.

8.4 acopy

Copia a fonte de áudio de entrada sem alterações para a saída. Isso é útil principalmente para fins de teste.

8.5 acrossfade

Aplica um cross fade de um fluxo de áudio de entrada para outro fluxo de áudio de entrada. O cross fade é aplicado pela duração especificada perto do fim do primeiro fluxo.

O filtro aceita as seguintes opções:

inputs, n

Especifica o número de entradas para o cross fade. Ao aplicar cross fade em várias entradas, cada entrada é concatenada e recebe o cross fade em sequência, de forma semelhante ao filtro concat. O padrão é 2.

nb_samples, ns

Especifica o número de amostras pelo qual o efeito de cross fade deve durar. Ao final do efeito de cross fade, o primeiro áudio de entrada ficará completamente em silêncio. O padrão é 44100.

duration, d

Especifica a duração do efeito de cross fade. Consulte (ffmpeg-utils)a seção Duração do manual ffmpeg-utils(1) para a sintaxe aceita. Por padrão, a duração é determinada por nb_samples. Se definida, essa opção é usada em vez de nb_samples.

overlap, o

Se o fim do primeiro fluxo deve se sobrepor ao início do segundo fluxo. O padrão é habilitado.

curve1

Define a curva de transição do cross fade para o primeiro fluxo.

curve2

Define a curva de transição do cross fade para o segundo fluxo.

Para a descrição dos tipos de curva disponíveis, veja a descrição do filtro afade.

8.5.1 Exemplos

  • Cross fade de uma entrada para outra:

    ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
    
  • Cross fade de uma entrada para outra, mas sem sobreposição:

    ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
    

Concatena várias entradas com cross fade entre cada uma:

    ffmpeg -i first.flac -i second.flac -i third.flac -filter_complex acrossfade=n=3 output.flac

8.6 acrossover

Divide o fluxo de áudio em várias bandas.

Esse filtro divide o fluxo de áudio em duas ou mais faixas de frequência. Somar todos os fluxos de volta produz uma saída plana.

O filtro aceita as seguintes opções:

split

Define as frequências de divisão. Elas devem ser positivas e crescentes.

order

Define a ordem do filtro para cada divisão de banda. Isso controla o roll-off do filtro, ou seja, a inclinação da função de transferência do filtro. Os valores disponíveis são:

‘2nd’

12 dB por oitava.

‘4th’

24 dB por oitava.

‘6th’

36 dB por oitava.

‘8th’

48 dB por oitava.

‘10th’

60 dB por oitava.

‘12th’

72 dB por oitava.

‘14th’

84 dB por oitava.

‘16th’

96 dB por oitava.

‘18th’

108 dB por oitava.

‘20th’

120 dB por oitava.

O padrão é 4th.

level

Define o nível de ganho de entrada. O intervalo permitido vai de 0 a 1. O valor padrão é 1.

gains

Define o ganho de saída para cada banda. O valor padrão é 1 para todas as bandas.

precision

Define qual precisão usar ao processar as amostras.

auto

Escolhe automaticamente o sample format interno dependendo dos demais filtros.

float

Sempre usa um sample format de precisão de ponto flutuante simples.

double

Sempre usa um sample format de precisão de ponto flutuante dupla.

O valor padrão é auto.

8.6.1 Exemplos

  • Divide o fluxo de áudio de entrada em duas bandas (baixa e alta) com frequência de divisão de 1500 Hz; cada banda ficará em um fluxo separado:

    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
    
  • O mesmo que acima, mas com ordem de filtro mais alta:

    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
    
  • O mesmo que acima, mas também com uma banda média adicional (frequências entre 1500 e 8000):

    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
    

8.7 acrusher

Reduz a resolução de bits do áudio.

Esse filtro é um bit crusher com funcionalidade ampliada. Um bit crusher é usado para reduzir de forma audível o número de bits com que um sinal de áudio é amostrado. Isso não muda a profundidade de bits em nada, apenas produz o efeito. Material com a profundidade de bits reduzida soa mais áspero e "digital". Esse filtro é capaz até de arredondar para valores contínuos em vez de profundidades de bits discretas. Além disso, tem um offset de D/C que resulta em um crushing diferente na metade inferior e na metade superior do sinal. Um ajuste de anti-aliasing é capaz de produzir sons de crushing mais "suaves".

Outro recurso desse filtro é o modo logarítmico. Esse ajuste muda as distâncias entre bits, de lineares para logarítmicas. O resultado é um crusher de som muito mais "natural", que não corta sinais baixos, por exemplo. O ouvido humano tem uma percepção logarítmica, então esse tipo de crushing é muito mais agradável. O crushing logarítmico também pode receber anti-aliasing.

O filtro aceita as seguintes opções:

level_in

Define o level in.

level_out

Define o level out.

bits

Define a redução de bits.

mix

Define a quantidade de mixagem.

mode

Pode ser linear: lin, ou logarítmico: log.

dc

Define o DC.

aa

Define o anti-aliasing.

samples

Define a redução de amostras.

lfo

Habilita o LFO. Desativado por padrão.

lforange

Define o intervalo do LFO.

lforate

Define a taxa do LFO.

8.7.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.8 acue

Atrasa a filtragem de áudio até uma determinada marca de tempo de wallclock. Veja o filtro cue.

8.9 adeclick

Remove ruído impulsivo do áudio de entrada.

Amostras detectadas como ruído impulsivo são substituídas por amostras interpoladas usando modelagem autorregressiva.

window, w

Define o tamanho da janela, em milissegundos. O intervalo permitido vai de 10 a 100. O valor padrão é 55 milissegundos. Isso define o tamanho da janela que será processada de uma vez.

overlap, o

Define a sobreposição de janela, como porcentagem do tamanho da janela. O intervalo permitido vai de 50 a 95. O valor padrão é 75 por cento. Definir um valor muito alto aumenta a remoção de ruído impulsivo, mas torna todo o processo bem mais lento.

arorder, a

Define a ordem de autorregressão, como porcentagem do tamanho da janela. O intervalo permitido vai de 0 a 25. O valor padrão é 2 por cento. Essa opção também controla a qualidade das amostras interpoladas usando boas amostras vizinhas.

threshold, t

Define o valor de threshold. O intervalo permitido vai de 1 a 100. O valor padrão é 2. Isso controla a intensidade do ruído impulsivo que será removido. Quanto menor o valor, mais amostras serão detectadas como ruído impulsivo.

burst, b

Define a fusão de rajadas, como porcentagem do tamanho da janela. O intervalo permitido vai de 0 a 10. O valor padrão é 2. Se quaisquer duas amostras detectadas como ruído estiverem separadas por menos que esse valor, qualquer amostra entre essas duas amostras também será detectada como ruído.

method, m

Define o método de sobreposição.

Aceita os seguintes valores:

add, a

Seleciona o método overlap-add. Mesmo as amostras não interpoladas são ligeiramente alteradas com esse método.

save, s

Seleciona o método overlap-save. As amostras não interpoladas permanecem inalteradas.

O valor padrão é a.

8.10 adeclip

Remove amostras com clipping do áudio de entrada.

Amostras detectadas com clipping são substituídas por amostras interpoladas usando modelagem autorregressiva.

window, w

Define o tamanho da janela, em milissegundos. O intervalo permitido vai de 10 a 100. O valor padrão é 55 milissegundos. Isso define o tamanho da janela que será processada de uma vez.

overlap, o

Define a sobreposição de janela, como porcentagem do tamanho da janela. O intervalo permitido vai de 50 a 95. O valor padrão é 75 por cento.

arorder, a

Define a ordem de autorregressão, como porcentagem do tamanho da janela. O intervalo permitido vai de 0 a 25. O valor padrão é 8 por cento. Essa opção também controla a qualidade das amostras interpoladas usando boas amostras vizinhas.

threshold, t

Define o valor de threshold. O intervalo permitido vai de 1 a 100. O valor padrão é 10. Valores mais altos tornam a detecção de clipping menos agressiva.

hsize, n

Define o tamanho do histograma usado para detectar clipping. O intervalo permitido vai de 100 a 9999. O valor padrão é 1000. Valores mais altos tornam a detecção de clipping menos agressiva.

method, m

Define o método de sobreposição.

Aceita os seguintes valores:

add, a

Seleciona o método overlap-add. Mesmo as amostras não interpoladas são ligeiramente alteradas com esse método.

save, s

Seleciona o método overlap-save. As amostras não interpoladas permanecem inalteradas.

O valor padrão é a.

8.11 adecorrelate

Aplica decorrelação ao fluxo de áudio de entrada.

O filtro aceita as seguintes opções:

stages

Define os estágios de decorrelação da filtragem. O intervalo permitido vai de 1 a 16. O valor padrão é 6.

seed

Define a semente aleatória usada para definir o atraso em amostras entre canais.

8.12 adelay

Atrasa um ou mais canais de áudio.

As amostras do canal atrasado são preenchidas com silêncio.

O filtro aceita a seguinte opção:

delays

Define a lista de atrasos em milissegundos para cada canal, separados por ’|’. Atrasos não usados serão ignorados silenciosamente. Se o número de atrasos informados for menor que o número de canais, os canais restantes não serão atrasados. Se quiser atrasar um número exato de amostras, acrescente ’S’ ao número. Se, em vez disso, quiser atrasar em segundos, acrescente ’s’ ao número.

all

Usa o último atraso definido para todos os canais restantes. Desativado por padrão. Essa opção, se habilitada, muda a forma como a opção delays é interpretada.

8.12.1 Exemplos

  • Atrasa o primeiro canal em 1.5 segundos, o terceiro canal em 0.5 segundos e deixa inalterado o segundo canal (e qualquer outro canal que possa estar presente).

    adelay=1500|0|500
    
  • Atrasa o segundo canal em 500 amostras, o terceiro canal em 700 amostras e deixa inalterado o primeiro canal (e qualquer outro canal que possa estar presente).

    adelay=0|500S|700S
    
  • Atrasa todos os canais no mesmo número de amostras:

    adelay=delays=64S:all=1
    

8.13 adenorm

Corrige denormals no áudio adicionando ruído de nível extremamente baixo.

Esse filtro deve ser colocado antes de qualquer filtro que possa produzir denormals.

Segue uma descrição dos parâmetros aceitos.

level

Define o nível do ruído adicionado, em dB. O padrão é -351. O intervalo permitido vai de -451 a -90.

type

Define o tipo de ruído adicionado.

dc

Adiciona sinal de DC.

ac

Adiciona sinal de AC.

square

Adiciona sinal quadrado.

pulse

Adiciona sinal de pulso.

O padrão é dc.

8.13.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.14 aderivative, aintegral

Calcula a derivada/integral do fluxo de áudio.

Aplicar os dois filtros um após o outro produz o áudio original.

8.15 adrc

Aplica um filtro de controlador de faixa dinâmica espectral ao fluxo de áudio de entrada.

A seguir, a descrição das opções aceitas.

transfer

Define a expressão de transferência.

A expressão pode conter as seguintes constantes:

ch

número do canal atual

sn

número da amostra atual

nb_channels

número de canais

t

marca de tempo expressa em segundos

sr

taxa de amostragem

p

valor de potência da frequência atual, em dB

f

frequência atual em Hz

O valor padrão é p.

attack

Define o ataque em milissegundos. O padrão é 50 milissegundos. O intervalo permitido é de 1 a 1000 milissegundos.

release

Define a liberação em milissegundos. O padrão é 100 milissegundos. O intervalo permitido é de 5 a 2000 milissegundos.

channels

Define quais canais devem ser filtrados; por padrão, all (todos) os canais do fluxo de áudio são filtrados.

8.15.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.15.2 Exemplos

  • Aplica compressão espectral a todas as frequências com limiar de -50 dB e proporção 1:6:

    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/6,p)':attack=50:release=100
    
  • Semelhante ao anterior, mas com proporção 1:2 e filtrando apenas o canal central frontal:

    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/2,p)':attack=50:release=100:channels=FC
    
  • Aplica um noise gate espectral a todas as frequências com limiar de -85 dB e com tempo de ataque e de liberação curtos:

    adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5
    
  • Aplica expansão espectral a todas as frequências com limiar de -10 dB e proporção 1:2:

    adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100
    
  • Aplica um limitador de no máximo -60 dB a todas as frequências, com ataque de 2 ms e liberação de 10 ms:

    adrc=transfer='min(p,-60)':attack=2:release=10
    

8.16 adynamicequalizer

Aplica equalização dinâmica ao fluxo de áudio de entrada.

A seguir, a descrição das opções aceitas.

threshold

Define o limiar de detecção usado para acionar a equalização. A detecção do limiar usa um filtro de detecção. O valor padrão é 0. O intervalo permitido é de 0 a 100.

dfrequency

Define a frequência de detecção em Hz usada pelo filtro de detecção para acionar a equalização. O valor padrão é 1000 Hz. O intervalo permitido é de 2 a 1000000 Hz.

dqfactor

Define o fator de ressonância de detecção do filtro de detecção usado para acionar a equalização. O valor padrão é 1. O intervalo permitido é de 0.001 a 1000.

tfrequency

Define a frequência alvo do filtro de equalização. O valor padrão é 1000 Hz. O intervalo permitido é de 2 a 1000000 Hz.

tqfactor

Define o fator de ressonância alvo do filtro de equalização alvo. O valor padrão é 1. O intervalo permitido é de 0.001 a 1000.

attack

Define a quantidade de milissegundos que o sinal de detecção deve ficar acima do limiar de detecção antes que a equalização comece. O padrão é 20. O intervalo permitido é de 1 a 2000.

release

Define a quantidade de milissegundos que o sinal de detecção deve ficar abaixo do limiar de detecção antes que a equalização termine. O padrão é 200. O intervalo permitido é de 1 a 2000.

ratio

Define a proporção pela qual o ganho de equalização é elevado. O padrão é 1. O intervalo permitido é de 0 a 30.

makeup

Define o deslocamento de compensação (makeup) pelo qual o ganho de equalização é elevado. O padrão é 0. O intervalo permitido é de 0 a 100.

range

Define a quantidade máxima permitida de corte/aumento. O padrão é 50. O intervalo permitido é de 1 a 200.

mode

Define o modo de operação do filtro; pode ser um dos seguintes:

‘listen’

Emite apenas o sinal de detecção isolado.

‘cutbelow’

Corta as frequências abaixo do limiar de detecção.

‘cutabove’

Corta as frequências acima do limiar de detecção.

‘boostbelow’

Aumenta as frequências abaixo do limiar de detecção.

‘boostabove’

Aumenta as frequências acima do limiar de detecção.

O modo padrão é ‘cutbelow’.

dftype

Define o tipo de filtro de detecção; pode ser um dos seguintes:

‘bandpass’ ‘lowpass’ ‘highpass’ ‘peak’

O tipo padrão é ‘bandpass’.

tftype

Define o tipo de filtro alvo; pode ser um dos seguintes:

‘bell’ ‘lowshelf’ ‘highshelf’

O tipo padrão é ‘bell’.

auto

Coleta automaticamente o limiar a partir do filtro de detecção. Por padrão, é ‘disabled’. Esta opção é útil para detectar o limiar em um intervalo de tempo específico do fluxo de áudio de entrada; nesse caso, o valor da opção é alterado em tempo de execução.

Os valores disponíveis são:

‘disabled’

Desativa o uso do valor de limiar coletado automaticamente.

‘off’

Para de coletar o valor do limiar.

‘on’

Começa a coletar o valor do limiar.

‘adaptive’

Coleta o valor do limiar de forma adaptativa, calculando a entropia de janela deslizante.

precision

Define qual precisão usar ao processar as amostras.

auto

Seleciona automaticamente o sample format interno de acordo com os outros filtros.

float

Sempre usa o sample format de precisão simples (ponto flutuante).

double

Sempre usa o sample format de precisão dupla (ponto flutuante).

8.16.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.17 adynamicsmooth

Aplica suavização dinâmica ao fluxo de áudio de entrada.

A seguir, a descrição das opções aceitas.

sensitivity

Define a sensibilidade a flutuações de frequência. O padrão é 2. O intervalo permitido é de 0 a 1e+06.

basefreq

Define uma frequência de base para a suavização. O valor padrão é 22050. O intervalo permitido é de 2 a 1e+06.

8.17.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.18 aecho

Aplica eco ao áudio de entrada.

Ecos são sons refletidos e podem ocorrer naturalmente entre montanhas (e às vezes em grandes edifícios) ao falar ou gritar; os efeitos de eco digital emulam esse comportamento e costumam ser usados para dar mais corpo ao som de um único instrumento ou de uma voz. A diferença de tempo entre o sinal original e o reflexo é o delay, e o loudness do sinal refletido é o decay. Vários ecos podem ter delays e decays diferentes.

A seguir, a descrição dos parâmetros aceitos.

in_gain

Define o ganho de entrada do sinal refletido. O padrão é 0.6.

out_gain

Define o ganho de saída do sinal refletido. O padrão é 0.3.

delays

Define a lista de intervalos de tempo em milissegundos entre o sinal original e os reflexos, separados por ’|’. O intervalo permitido para cada delay é (0 - 90000.0]. O padrão é 1000.

decays

Define a lista de loudness dos sinais refletidos, separados por ’|’. O intervalo permitido para cada decay é (0 - 1.0]. O padrão é 0.5.

8.18.1 Exemplos

  • Faz o som parecer o dobro de instrumentos do que realmente estão tocando:

    aecho=0.8:0.88:60:0.4
    
  • Se o delay for muito curto, soa como um robô (metálico) tocando música:

    aecho=0.8:0.88:6:0.4
    
  • Um delay mais longo soará como um show ao ar livre nas montanhas:

    aecho=0.8:0.9:1000:0.3
    
  • Igual ao anterior, mas com mais uma montanha:

    aecho=0.8:0.9:1000|1800:0.3|0.25
    

8.19 aemphasis

O filtro de ênfase de áudio cria ou restaura material obtido diretamente de discos de vinil ou CDs com ênfase, usando diferentes curvas de filtro. Por exemplo, para gravar música em vinil, o sinal precisa primeiro ser alterado por um filtro para compensar as desvantagens desse suporte de gravação. Depois que o material é reproduzido, o filtro inverso precisa ser aplicado para restaurar a distorção da resposta em frequência.

O filtro aceita as seguintes opções:

level_in

Define o ganho de entrada.

level_out

Define o ganho de saída.

mode

Define o modo do filtro. Para restaurar material, use o modo reproduction; caso contrário, use o modo production. O padrão é o modo reproduction.

type

Define o tipo de filtro. Seleciona o suporte. Pode ser um dos seguintes:

col

seleciona Columbia.

emi

seleciona EMI.

bsi

seleciona BSI (78RPM).

riaa

seleciona RIAA.

cd

seleciona Compact Disc (CD).

50fm

seleciona 50µs (FM).

75fm

seleciona 75µs (FM).

50kf

seleciona 50µs (FM-KF).

75kf

seleciona 75µs (FM-KF).

8.19.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.20 aeval

Modifica um sinal de áudio de acordo com as expressões especificadas.

Este filtro aceita uma ou mais expressões (uma para cada canal), que são avaliadas e usadas para modificar o sinal de áudio correspondente.

Aceita os seguintes parâmetros:

exprs

Define a lista de expressões separadas por ’|’ para cada canal individual. Se o número de canais de entrada for maior que o número de expressões, a última expressão especificada é usada para os canais de saída restantes.

channel_layout, c

Define o layout de canais de saída. Se não for especificado, o layout de canais é determinado pelo número de expressões. Se definido como ‘same’, por padrão será usado o mesmo layout de canais de entrada.

Cada expressão em exprs pode conter as seguintes constantes e funções:

ch

número do canal da expressão atual

n

número da amostra avaliada, começando em 0

s

taxa de amostragem

t

tempo da amostra avaliada, expresso em segundos

nb_in_channels nb_out_channels

número de canais de entrada e de saída

val(CH)

o valor do canal de entrada de número CH

Observação: este filtro é lento. Para um processamento mais rápido, use um filtro dedicado.

8.20.1 Exemplos

  • Metade do volume:

    aeval=val(ch)/2:c=same
    
  • Inverte a fase do segundo canal:

    aeval=val(0)|-val(1)
    

8.21 aexciter

Um exciter é usado para produzir som agudo que não está presente no sinal original. Isso é feito criando distorções harmônicas do sinal, restritas em faixa, que são adicionadas ao sinal original. Um exciter eleva o extremo superior de um sinal de áudio sem simplesmente realçar as frequências mais altas como faria um equalizador, criando um som mais "nítido" ou "brilhante".

O filtro aceita as seguintes opções:

level_in

Define o nível de entrada antes do processamento do sinal. O intervalo permitido é de 0 a 64. O valor padrão é 1.

level_out

Define o nível de saída após o processamento do sinal. O intervalo permitido é de 0 a 64. O valor padrão é 1.

amount

Define a quantidade de harmônicos adicionados ao sinal original. O intervalo permitido é de 0 a 64. O valor padrão é 1.

drive

Define a quantidade de harmônicos recém-criados. O intervalo permitido é de 0.1 a 10. O valor padrão é 8.5.

blend

Define a oitava dos harmônicos recém-criados. O intervalo permitido é de -10 a 10. O valor padrão é 0.

freq

Define o limite inferior de frequência para a produção de harmônicos, em Hz. O intervalo permitido é de 2000 a 12000 Hz. O padrão é 7500 Hz.

ceil

Define o limite superior de frequência para a produção de harmônicos. O intervalo permitido é de 9999 a 20000 Hz. Se o valor for menor que 10000 Hz, nenhum limite é aplicado.

listen

Silencia o sinal original e emite apenas os harmônicos adicionados. Por padrão, está desativado.

8.21.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.22 afade

Aplica um efeito de fade-in/fade-out ao áudio de entrada.

A seguir, a descrição dos parâmetros aceitos.

type, t

Especifica o tipo de efeito; pode ser in para fade-in ou out para um efeito de fade-out. O padrão é in.

start_sample, ss

Especifica o número da amostra inicial a partir da qual começar a aplicar o efeito de fade. O padrão é 0.

nb_samples, ns

Especifica o número de amostras durante as quais o efeito de fade deve durar. Ao final do efeito de fade-in, o áudio de saída terá o mesmo volume do áudio de entrada; ao final da transição de fade-out, o áudio de saída será silêncio. O padrão é 44100.

start_time, st

Especifica o momento de início do efeito de fade. O padrão é 0. O valor deve ser especificado como uma duração de tempo; consulte (ffmpeg-utils)a seção Duração do manual ffmpeg-utils(1) para a sintaxe aceita. Se definida, esta opção é usada em vez de start_sample.

duration, d

Especifica a duração do efeito de fade. Consulte (ffmpeg-utils)a seção Duração do manual ffmpeg-utils(1) para a sintaxe aceita. Ao final do efeito de fade-in, o áudio de saída terá o mesmo volume do áudio de entrada; ao final da transição de fade-out, o áudio de saída será silêncio. Por padrão, a duração é determinada por nb_samples. Se definida, esta opção é usada em vez de nb_samples.

curve

Define a curva para a transição de fade.

Aceita os seguintes valores:

tri

seleciona inclinação triangular e linear (padrão)

qsin

seleciona um quarto de onda senoidal

hsin

seleciona meia onda senoidal

esin

seleciona onda senoidal exponencial

log

seleciona logarítmica

ipar

seleciona parábola invertida

qua

seleciona quadrática

cub

seleciona cúbica

squ

seleciona raiz quadrada

cbr

seleciona raiz cúbica

par

seleciona parábola

exp

seleciona exponencial

iqsin

seleciona um quarto de onda senoidal invertida

ihsin

seleciona meia onda senoidal invertida

dese

seleciona seat duplo-exponencial (double-exponential seat)

desi

seleciona sigmoide duplo-exponencial (double-exponential sigmoid)

losi

seleciona sigmoide logística

sinc

seleciona função seno cardinal (sine cardinal)

isinc

seleciona função seno cardinal invertida

quat

seleciona quártica

quatr

seleciona raiz quártica

qsin2

seleciona um quarto de onda senoidal ao quadrado

hsin2

seleciona meia onda senoidal ao quadrado

nofade

nenhum fade aplicado

silence

Define o ganho inicial para o fade-in ou o ganho final para o fade-out. O valor padrão é 0.0.

unity

Define o ganho inicial para o fade-out ou o ganho final para o fade-in. O valor padrão é 1.0.

8.22.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.22.2 Exemplos

  • Fade-in nos primeiros 15 segundos de áudio:

    afade=t=in:ss=0:d=15
    
  • Fade-out nos últimos 25 segundos de um áudio de 900 segundos:

    afade=t=out:st=875:d=25
    

8.23 afftdn

Remove ruído de amostras de áudio usando FFT.

A seguir, a descrição dos parâmetros aceitos.

noise_reduction, nr

Define a redução de ruído em dB; o intervalo permitido é de 0.01 a 97. O valor padrão é 12 dB.

noise_floor, nf

Define o piso de ruído em dB; o intervalo permitido é de -80 a -20. O valor padrão é -50 dB.

noise_type, nt

Define o tipo de ruído.

Aceita os seguintes valores:

white, w

Seleciona ruído branco.

vinyl, v

Seleciona ruído de vinil.

shellac, s

Seleciona ruído de goma-laca.

custom, c

Seleciona ruído personalizado, definido na opção bn.

O valor padrão é ruído branco.

band_noise, bn

Define o perfil de ruído de banda personalizado para cada uma das 15 bandas. As bandas são separadas por ’ ’ ou ’|’.

residual_floor, rf

Define o piso residual em dB; o intervalo permitido é de -80 a -20. O valor padrão é -38 dB.

track_noise, tn

Ativa o rastreamento do piso de ruído. Por padrão, está desativado. Com isso ativado, o piso de ruído é ajustado automaticamente.

track_residual, tr

Ativa o rastreamento residual. Por padrão, está desativado.

output_mode, om

Define o modo de saída.

Aceita os seguintes valores:

input, i

Passa a entrada sem alterações.

output, o

Passa o áudio com o ruído filtrado.

noise, n

Passa apenas o ruído.

O valor padrão é output.

adaptivity, ad

Define o fator de adaptabilidade, usado para controlar a rapidez com que os ajustes de ganho se adaptam em cada bin de frequência. O valor 0 ativa a adaptação instantânea, enquanto valores mais altos reagem muito mais lentamente. O intervalo permitido é de 0 a 1. O valor padrão é 0.5.

floor_offset, fo

Define o fator de deslocamento do piso de ruído. Esta opção é usada para ajustar o deslocamento aplicado ao piso de ruído medido. Só tem efeito quando o rastreamento do piso de ruído está ativado. O intervalo permitido é de -2.0 a 2.0. O valor padrão é 1.0.

noise_link, nl

Define o vínculo de ruído usado para áudio multicanal.

Aceita os seguintes valores:

none

Usa o piso de ruído do canal sem alterações.

min

Usa o piso de ruído mínimo medido de todos os canais.

max

Usa o piso de ruído máximo medido de todos os canais.

average

Usa o piso de ruído médio medido de todos os canais.

O valor padrão é min.

band_multiplier, bm

Define o fator multiplicador de banda, usado para controlar o quanto as bandas se espalham pelos bins de frequência. O intervalo permitido é de 0.2 a 5. O valor padrão é 1.25.

sample_noise, sn

Alterna a captura e a medição do perfil de ruído a partir do áudio de entrada.

Aceita os seguintes valores:

start, begin

Inicia a captura da amostra de ruído.

stop, end

Interrompe a captura da amostra de ruído e mede um novo perfil de banda de ruído.

O valor padrão é none.

gain_smooth, gs

Define o raio espacial de suavização de ganho, usado para suavizar os ganhos aplicados a cada bin de frequência. Útil para reduzir artefatos aleatórios de ruído musical. Valores mais altos aumentam a suavização dos ganhos. O intervalo permitido é de 0 a 50. O valor padrão é 0.

8.23.1 Comandos

Este filtro é compatível com algumas das opções acima mencionadas como comandos.

8.23.2 Exemplos

  • Reduz o ruído branco em 10dB e usa o piso de ruído medido anteriormente de -40dB:

    afftdn=nr=10:nf=-40
    
  • Reduz o ruído branco em 10dB, também define o piso de ruído inicial para -80dB e ativa o rastreamento automático do piso de ruído para que ele mude gradualmente durante o processamento:

    afftdn=nr=10:nf=-80:tn=1
    
  • Reduz o ruído em 20dB, usando um piso de ruído de -40dB e usando comandos para capturar o perfil de ruído dos primeiros 0.4 segundos do áudio de entrada:

    asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
    

8.24 afftfilt

Aplica expressões arbitrárias a amostras no domínio da frequência.

real

Define a expressão real do domínio da frequência para cada canal separado por ’|’. O padrão é "re". Se o número de canais de entrada for maior que o número de expressões, a última expressão especificada é usada para os canais de saída restantes.

imag

Define a expressão imaginária do domínio da frequência para cada canal separado por ’|’. O padrão é "im".

Cada expressão em real e imag pode conter as seguintes constantes e funções:

sr

taxa de amostragem

b

número do bin de frequência atual

nb

número de bins disponíveis

ch

número do canal da expressão atual

chs

número de canais

pts

pts do quadro atual

re

parte real atual do bin de frequência do canal atual

im

parte imaginária atual do bin de frequência do canal atual

real(b, ch)

Retorna o valor da parte real do bin de frequência na posição (bin,canal)

imag(b, ch)

Retorna o valor da parte imaginária do bin de frequência na posição (bin,canal)

win_size

Define o tamanho da janela. O intervalo permitido é de 16 a 131072. O padrão é 4096

win_func

Define a função de janela.

Aceita os seguintes valores:

‘rect’ ‘bartlett’ ‘hann, hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’

O padrão é hann.

overlap

Define a sobreposição da janela. Se definido como 1, será escolhida a sobreposição recomendada para a função de janela selecionada. O padrão é 0.75.

8.24.1 Exemplos

  • Deixar quase apenas as frequências baixas no áudio:

    afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
    
  • Aplicar efeito de robotização:

    afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
    
  • Aplicar efeito de sussurro:

    afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
    
  • Aplicar deslocamento de fase:

    afftfilt="real=re*cos(1)-im*sin(1):imag=re*sin(1)+im*cos(1)"
    

8.25 afir

Aplica um filtro de Resposta ao Impulso Finita (FIR) arbitrário.

Este filtro foi projetado para aplicar filtros FIR longos, de até 60 segundos.

Pode ser usado como componente para filtros de crossover digital, equalização de sala, cancelamento de crosstalk, síntese de campo de onda, auralização, ambiofonia, ambisônica e espacialização.

Este filtro usa os fluxos posteriores ao primeiro como coeficientes FIR. Se o fluxo diferente do primeiro contiver um único canal, ele será usado para todos os canais de entrada do primeiro fluxo; caso contrário, o número de canais do fluxo diferente do primeiro deve ser igual ao número de canais do primeiro fluxo.

Aceita os seguintes parâmetros:

dry

Define o ganho dry. Isso define o ganho de entrada.

wet

Define o ganho wet. Isso define o ganho final de saída.

length

Define o comprimento do filtro de Resposta ao Impulso. O padrão é 1, o que significa que toda a IR é processada.

gtype

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

irnorm

Define a norma a ser aplicada aos coeficientes de IR antes da filtragem. O intervalo permitido é de -1 a 2. Os coeficientes de IR são normalizados com a norma vetorial calculada definida por esta opção. Para valores negativos, nenhuma norma é calculada e os coeficientes de IR não são modificados de forma alguma. O padrão é 1.

irlink

Para IR multicanal, se esta opção for definida como true, todos os canais de IR serão normalizados com o ganho máximo medido de todos os coeficientes de canais de IR, conforme definido pela opção irnorm. Quando desabilitada, todos os coeficientes de IR em cada canal de IR serão normalizados de forma independente. O padrão é true.

irgain

Define o ganho a ser aplicado aos coeficientes de IR antes da filtragem. O intervalo permitido é de 0 a 1. Este ganho é aplicado após qualquer ganho aplicado com a opção irnorm.

irfmt

Define o formato do fluxo de IR. Pode ser mono ou input. O padrão é input.

maxir

Define a duração máxima permitida do filtro de Resposta ao Impulso, em segundos. O padrão é 30 segundos. O intervalo permitido é de 0.1 a 60 segundos.

response

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

channel

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

size

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

rate

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

minp

Define o tamanho mínimo de partição usado para a convolução. O padrão é 8192. O intervalo permitido é de 1 a 65536. Valores mais baixos reduzem a latência ao custo de maior uso de CPU.

maxp

Define o tamanho máximo de partição usado para a convolução. O padrão é 8192. O intervalo permitido é de 8 a 65536. Valores mais baixos podem aumentar o uso de CPU.

nbirs

Define o número de fluxos de resposta ao impulso de entrada que poderão ser alternados em tempo de execução. O intervalo permitido é de 1 a 32. O padrão é 1.

ir

Define o fluxo de IR que será usado para a convolução, começando em 0, e deve sempre ser menor que o valor fornecido pela opção nbirs. O padrão é 0. Esta opção pode ser alterada em tempo de execução por meio de comandos.

precision

Define qual precisão usar ao processar as amostras.

auto

Escolhe automaticamente o sample format interno dependendo dos demais filtros.

float

Sempre usa o sample format em ponto flutuante de precisão simples.

double

Sempre usa o sample format em ponto flutuante de precisão dupla.

O valor padrão é auto.

irload

Define quando o fluxo de IR deve ser carregado. Pode ser init ou access. A primeira opção carrega e prepara todas as IRs na inicialização; a segunda carrega apenas uma vez, no primeiro acesso a uma IR específica. O padrão é init.

8.25.1 Exemplos

  • Aplicar reverberação a um fluxo usando um arquivo de IR mono como segunda entrada, comando completo usando o ffmpeg:

    ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
    
  • Aplicar processamento estéreo verdadeiro dado um fluxo estéreo de entrada e duas respostas ao impulso estéreo para os canais esquerdo e direito, sendo os arquivos de resposta ao impulso nomeados l_ir.wav e r_ir.wav, e definindo o valor da opção irnorm:

    "pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irnorm=1.2,pan=stereo|FL<c0+c2|FR<c1+c3"
    
  • Semelhante ao exemplo acima, mas com irgain definido explicitamente para o valor estimado e com irnorm desabilitado:

    "pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irgain=-5dB:irnom=-1,pan=stereo|FL<c0+c2|FR<c1+c3"
    

8.26 aformat

Define as restrições de formato de saída para o áudio de entrada. O framework negociará o formato mais apropriado para minimizar as conversões.

Aceita os seguintes parâmetros:

sample_fmts, f

Uma lista de sample formats solicitados, separada por ’|’.

sample_rates, r

Uma lista de taxas de amostragem solicitadas, separada por ’|’.

channel_layouts, cl

Uma lista de layouts de canais solicitados, separada por ’|’.

Consulte (ffmpeg-utils)a seção Layout de canais do manual ffmpeg-utils(1) para a sintaxe necessária.

Se um parâmetro for omitido, todos os valores são permitidos.

Força a saída para 8 bits sem sinal ou 16 bits com sinal, em estéreo

aformat=sample_fmts=u8|s16:channel_layouts=stereo

8.27 afreqshift

Aplica um deslocamento de frequência às amostras de áudio de entrada.

O filtro aceita as seguintes opções:

shift

Especifica o deslocamento de frequência. O intervalo permitido é de -INT_MAX a INT_MAX. O valor padrão é 0.0.

level

Define o ganho de saída aplicado à saída final. O intervalo permitido é de 0.0 a 1.0. O valor padrão é 1.0.

order

Define a ordem do filtro usada na filtragem. O intervalo permitido é de 1 a 16. O valor padrão é 8.

8.27.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.28 afwtdn

Reduz o ruído de banda larga das amostras de entrada usando Wavelets.

Segue uma descrição das opções aceitas.

sigma

Define o sigma do ruído; o intervalo permitido é de 0 a 1. O valor padrão é 0. Esta opção controla a intensidade da redução de ruído aplicada às amostras de entrada. A forma mais útil de definir esta opção é em decibéis, por exemplo, -45dB.

levels

Define o número de níveis de decomposição wavelet. O intervalo permitido é de 1 a 12. O valor padrão é 10. Definir este valor muito baixo torna o desempenho de redução de ruído muito ruim.

wavet

Define o tipo de wavelet para a decomposição do quadro de entrada. Estão ordenadas pelo número de coeficientes, do menor para o maior. Mais coeficientes significam menor velocidade de filtragem, mas, em geral, melhor qualidade. As wavelets disponíveis são:

‘sym2’ ‘sym4’ ‘rbior68’ ‘deb10’ ‘sym10’ ‘coif5’ ‘bl3’ percent

Define o percentual de redução de ruído completa. O intervalo permitido é de 0 a 100 por cento. O valor padrão é 85 por cento, ou seja, redução de ruído parcial.

profile

Se habilitada, o primeiro quadro de entrada será usado como perfil de ruído. Se as amostras do primeiro quadro contiverem algo além de ruído, o desempenho será muito ruim.

adaptive

Se habilitada, os quadros de entrada são analisados quanto à presença de ruído. Se ruído for detectado com alta probabilidade, o perfil do quadro de entrada será usado para processar os quadros seguintes, até que um novo quadro de ruído seja detectado.

samples

Define o tamanho de um único quadro em número de amostras. O intervalo permitido é de 512 a 65536. O tamanho de quadro padrão é 8192 amostras.

softness

Define a suavidade aplicada dentro da função de limiarização. O intervalo permitido é de 0 a 10. A suavidade padrão é 1.

8.28.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.29 agate

Um gate é usado principalmente para reduzir as partes mais baixas de um sinal. Esse tipo de processamento de sinal reduz ruídos incômodos entre sinais úteis.

O gating é feito detectando o volume abaixo de um nível de limiar (threshold) escolhido e dividindo-o pelo fator definido em ratio. O piso do ruído de fundo é definido por range. Como uma manipulação exata do sinal causaria distorção da forma de onda, a redução pode ser nivelada ao longo do tempo. Isso é feito definindo attack e release.

attack determina por quanto tempo o sinal precisa cair abaixo do limiar antes que ocorra qualquer redução, e release define o tempo que o sinal precisa subir acima do limiar para reduzir novamente a redução. Sinais mais curtos que o tempo de attack escolhido serão deixados intactos.

level_in

Define o nível de entrada antes da filtragem. O padrão é 1. O intervalo permitido é de 0.015625 a 64.

mode

Define o modo de operação. Pode ser upward ou downward. O padrão é downward. Se definido para o modo upward, as partes mais altas do sinal serão amplificadas, expandindo a faixa dinâmica no sentido ascendente. Caso contrário, no modo downward, as partes mais baixas do sinal serão reduzidas.

range

Define o nível de redução de ganho quando o sinal está abaixo do limiar. O padrão é 0.06125. O intervalo permitido é de 0 a 1. Definir este valor como 0 desabilita a redução, e o filtro passa a se comportar como um expansor.

threshold

Se um sinal se eleva acima deste nível, a redução de ganho é liberada. O padrão é 0.125. O intervalo permitido é de 0 a 1.

ratio

Define a proporção pela qual o sinal é reduzido. O padrão é 2. O intervalo permitido é de 1 a 9000.

attack

Quantidade de milissegundos que o sinal precisa subir acima do limiar antes que a redução de ganho pare. O padrão é 20 milissegundos. O intervalo permitido é de 0.01 a 9000.

release

Quantidade de milissegundos que o sinal precisa cair abaixo do limiar antes que a redução seja novamente aumentada. O padrão é 250 milissegundos. O intervalo permitido é de 0.01 a 9000.

makeup

Define a quantidade de amplificação do sinal após o processamento. O padrão é 1. O intervalo permitido é de 1 a 64.

knee

Suaviza a curva acentuada (knee) em torno do limiar para entrar na redução de ganho de forma mais suave. O padrão é 2.828427125. O intervalo permitido é de 1 a 8.

detection

Escolhe se o sinal exato deve ser usado para a detecção ou algo semelhante a RMS. O padrão é rms. Pode ser peak ou rms.

link

Escolhe se o nível médio entre todos os canais ou o canal mais alto afeta a redução. O padrão é average. Pode ser average ou maximum.

8.29.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.30 aiir

Aplica um filtro de Resposta ao Impulso Infinita (IIR) arbitrário.

Aceita os seguintes parâmetros:

zeros, z

Define os coeficientes B/numerador/zeros/reflexão.

poles, p

Define os coeficientes A/denominador/polos/escada (ladder).

gains, k

Define os ganhos dos canais.

dry_gain

Define o ganho de entrada.

wet_gain

Define o ganho de saída.

format, f

Define o formato dos coeficientes.

‘ll’

função de treliça-escada (lattice-ladder)

‘sf’

função de transferência analógica

‘tf’

função de transferência digital

‘zp’

Zeros/polos no plano Z, cartesiano (padrão)

‘pr’

Zeros/polos no plano Z, polar em radianos

‘pd’

Zeros/polos no plano Z, polar em graus

‘sp’

Zeros/polos no plano S

process, r

Define o tipo de processamento.

‘d’

processamento direto

‘s’

processamento serial

‘p’

processamento paralelo

precision, e

Define a precisão de filtragem.

‘dbl’

ponto flutuante de precisão dupla (padrão)

‘flt’

ponto flutuante de precisão simples

‘i32’

inteiros de 32 bits

‘i16’

inteiros de 16 bits

normalize, n

Normaliza os coeficientes do filtro; por padrão está habilitado. Habilitá-lo normalizará a resposta de magnitude em DC para 0dB.

mix

Quanto do sinal filtrado usar na saída. O padrão é 1. O intervalo é entre 0 e 1.

response

Mostra a resposta em frequência da IR, com magnitude (magenta), fase (verde) e atraso de grupo (amarelo) em um fluxo de vídeo adicional. Por padrão está desabilitado.

channel

Define para qual canal de IR exibir a resposta em frequência. Por padrão, o primeiro canal é exibido. Esta opção é usada apenas quando response está habilitado.

size

Define o tamanho do fluxo de vídeo. Esta opção é usada apenas quando response está habilitado.

Os coeficientes nos formatos tf e sf são separados por espaços e estão em ordem crescente.

Os coeficientes no formato zp são separados por espaços, e a ordem dos coeficientes não importa. Os coeficientes no formato zp são números complexos com unidade imaginária i.

Coeficientes e ganhos diferentes podem ser fornecidos para cada canal; nesse caso, use ’|’ para separar os coeficientes ou ganhos. Os últimos coeficientes fornecidos serão usados para todos os canais restantes.

8.30.1 Exemplos

  • Aplicar um entalhe elíptico de 2 polos em torno de 5000Hz para uma taxa de amostragem de 48000 Hz:

    aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
    
  • O mesmo que acima, mas no formato zp:

    aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
    
  • Aplicar um filtro Butterworth passa-baixa analógico normalizado de 3ª ordem, usando o formato de função de transferência analógica:

    aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
    

8.31 alimiter

O limiter impede que um sinal de entrada suba acima de um limiar desejado. Este limiter usa tecnologia de lookahead para evitar que o sinal distorça. Isso significa que há um pequeno atraso após o processamento do sinal. Tenha em mente que o atraso produzido é igual ao tempo de attack definido.

O filtro aceita as seguintes opções:

level_in

Define o ganho de entrada. O padrão é 1.

level_out

Define o ganho de saída. O padrão é 1.

limit

Não deixa passar pelo limiter sinais acima deste nível. O padrão é 1.

attack

O limiter atingirá seu nível de atenuação nesse período de tempo, em milissegundos. O padrão é 5 milissegundos.

release

Retorna da limitação para a atenuação 1.0 nesse período de tempo, em milissegundos. O padrão é 50 milissegundos.

asc

Quando a redução de ganho é sempre necessária, o ASC se encarrega de liberar até um nível de redução médio, em vez de chegar a uma redução de 0 no tempo de release.

asc_level

Seleciona o quanto o tempo de release é afetado pelo ASC; 0 significa quase nenhuma alteração no tempo de release, enquanto 1 produz tempos de release maiores.

level

Ajusta automaticamente o nível do sinal de saída. O padrão é habilitado. Isso normaliza o áudio de volta para 0dB quando habilitado.

latency

Compensa o atraso introduzido pelo uso do buffer de lookahead definido com o parâmetro attack. Também descarrega os dados de áudio válidos no buffer de lookahead quando o fluxo atinge o EOF.

Dependendo da configuração escolhida, recomenda-se fazer upsample da entrada em 2x ou 4x com aresample antes de aplicar este filtro.

8.32 allpass

Aplica um filtro passa-tudo (all-pass) de dois polos com frequência central (em Hz) frequency e largura de filtro width. Um filtro passa-tudo altera a relação entre frequência e fase do áudio sem alterar sua relação entre frequência e amplitude.

O filtro aceita as seguintes opções:

frequency, f

Define a frequência em Hz.

width_type, t

Define o método para especificar a largura de banda do filtro.

h

Hz

q

Fator Q

o

oitava

s

inclinação (slope)

k

kHz

width, w

Especifica a largura de banda de um filtro nas unidades de width_type.

mix, m

Quanto do sinal filtrado usar na saída. O padrão é 1. O intervalo é entre 0 e 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes biquad; por padrão está desabilitado. Habilitá-lo normalizará a resposta de magnitude em DC para 0dB.

order, o

Define a ordem do filtro; pode ser 1 ou 2. O padrão é 2.

transform, a

Define o tipo de transformação do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Escolhe automaticamente o sample format dependendo dos filtros de surround.

s16

Sempre usa 16 bits com sinal.

s32

Sempre usa 32 bits com sinal.

f32

Sempre usa ponto flutuante de 32 bits.

f64

Sempre usa ponto flutuante de 64 bits.

8.32.1 Comandos

Este filtro é compatível com os seguintes comandos:

frequency, f

Altera a frequency do allpass. A sintaxe do comando é: "frequency"

width_type, t

Altera o width_type do allpass. A sintaxe do comando é: "width_type"

width, w

Altera o width do allpass. A sintaxe do comando é: "width"

mix, m

Altera o mix do allpass. A sintaxe do comando é: "mix"

8.33 aloop

Faz um loop das amostras de áudio.

O filtro aceita as seguintes opções:

loop

Define o número de loops. Definir este valor como -1 resultará em loops infinitos. O padrão é 0.

size

Define o número máximo de amostras. O padrão é 0.

start

Define a primeira amostra do loop. O padrão é 0.

time

Define o tempo de início do loop em segundos. Usado apenas se a opção start estiver definida como -1.

8.34 amerge

Mescla dois ou mais fluxos de áudio em um único fluxo multicanal.

Todas as entradas devem ter a mesma taxa de amostragem e o mesmo formato.

Se as entradas não tiverem a mesma duração, a saída termina na mais curta.

O filtro aceita as seguintes opções:

inputs

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

layout_mode

Esta opção controla como o layout de canais de saída é determinado e se os canais de áudio são reordenados durante a mesclagem.

legacy

Este é o modo como o filtro se comportou historicamente, portanto é o padrão.

Se os layouts de canais das entradas forem conhecidos e disjuntos e, portanto, compatíveis, o layout de canais da saída será definido de acordo, e os canais serão reordenados conforme necessário. Se os layouts de canais das entradas não forem disjuntos, alguns forem desconhecidos, ou estiverem usando layouts de canais especiais, como ambisônica, a saída terá todos os canais da primeira entrada e, em seguida, todos os canais da segunda entrada, nessa ordem, e o layout de canais da saída será o valor padrão correspondente ao número total de canais.

Por exemplo, se a primeira entrada estiver em 2.1 (FL+FR+LF) e a segunda entrada for FC+BL+BR, a saída estará em 5.1, com os canais na seguinte ordem: a1, a2, b1, a3, b2, b3 (a1 é o primeiro canal da primeira entrada, b1 é o primeiro canal da segunda entrada).

Por outro lado, se ambas as entradas estiverem em estéreo, os canais de saída seguirão a ordem padrão: a1, a2, b1, b2, e o layout de canais será definido arbitrariamente como 4.0, o que pode ou não ser o valor esperado.

reset

Este modo ignora os layouts de canais de entrada e não reordena os canais. A saída terá todos os canais da primeira entrada, depois todos os canais da segunda entrada, nessa ordem, e assim por diante.

O layout de canais de saída especificará apenas a contagem total de canais.

normal

Este modo mantém as informações de nome e designação dos canais de entrada e não reordena os canais. A saída terá todos os canais da primeira entrada, depois todos os canais da segunda entrada, nessa ordem, e assim por diante.

8.34.1 Exemplos

  • Mesclar dois arquivos mono em um fluxo estéreo:

    amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
    
  • Múltiplas mesclagens supondo 1 fluxo de vídeo e 6 fluxos de áudio em input.mkv:

    ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
    

8.35 amix

Mistura múltiplas entradas de áudio em uma única saída.

Observe que este filtro é compatível apenas com amostras em float (os filtros de áudio amerge e pan são compatíveis com muitos formatos). Se a entrada de amix tiver amostras inteiras, o aresample será inserido automaticamente para realizar a conversão para amostras em float.

Aceita os seguintes parâmetros:

inputs

O número de entradas. Se não especificado, o padrão é 2.

duration

Como determinar o fim do fluxo.

longest

A duração da entrada mais longa. (padrão)

shortest

A duração da entrada mais curta.

first

A duração da primeira entrada.

dropout_transition

O tempo de transição, em segundos, para a renormalização de volume quando um fluxo de entrada termina. O valor padrão é 2 segundos.

weights

Especifica o peso de cada fluxo de áudio de entrada como uma sequência de números separados por espaço. Se forem especificados menos pesos do que o número de entradas, o último peso é atribuído às entradas restantes. O peso padrão de cada entrada é 1.

normalize

Sempre ajusta a escala das entradas em vez de apenas somar as amostras. Cuidado com clipping intenso se as entradas não estiverem normalizadas antes ou depois da filtragem por este filtro, caso esta opção esteja desabilitada. Por padrão está habilitado.

8.35.1 Exemplos

  • Isto mistura 3 fluxos de áudio de entrada em uma única saída com a mesma duração da primeira entrada e um tempo de transição de dropout de 3 segundos:

    ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
    
  • Isto mistura um fluxo de áudio vocal e um fluxo de áudio musical em uma única saída com a mesma duração da entrada mais longa. A música terá um quarto do peso dos vocais, e as entradas não são normalizadas:

    ffmpeg -i VOCALS -i MUSIC -filter_complex amix=inputs=2:duration=longest:dropout_transition=0:weights="1 0.25":normalize=0 OUTPUT
    

8.35.2 Comandos

Este filtro aceita os seguintes comandos:

weights normalize

A sintaxe é a mesma da opção de mesmo nome.

8.36 amultiply

Multiplica o primeiro fluxo de áudio pelo segundo fluxo de áudio e armazena o resultado no fluxo de áudio de saída. A multiplicação é feita multiplicando cada amostra do primeiro fluxo pela amostra na mesma posição do segundo fluxo.

Com essa multiplicação elemento a elemento, é possível criar fades de amplitude e modulações de amplitude.

8.37 anequalizer

Equalizador multibanda paramétrico de alta ordem para cada canal.

Aceita os seguintes parâmetros:

params

Esta string de opção está no formato: "cchn f=cf w=w g=g t=f | ..." Cada banda do equalizador é separada por ’|’.

chn

Define o número do canal ao qual a equalização será aplicada. Se a entrada não tiver esse canal, a entrada é ignorada.

f

Define a frequência central da banda. Se a entrada não tiver essa frequência, a entrada é ignorada.

w

Define a largura de banda em Hertz.

g

Define o ganho da banda em dB.

t

Define o tipo de filtro da banda, opcional, pode ser:

‘0’

Butterworth, este é o padrão.

‘1’

Chebyshev tipo 1.

‘2’

Chebyshev tipo 2.

curves

Quando esta opção está ativada, a resposta em frequência do anequalizer é exibida no fluxo de vídeo.

size

Define o tamanho do fluxo de vídeo. Só é útil se a opção curves estiver ativada.

mgain

Define o ganho máximo que será exibido. Só é útil se a opção curves estiver ativada. Definir isso com um valor razoável permite exibir o ganho derivado de bandas vizinhas muito próximas entre si, que por isso produzem um ganho maior quando ambas estão ativadas.

fscale

Define a escala de frequência usada para desenhar a resposta em frequência na saída de vídeo. Pode ser linear ou logarithmic. O padrão é logarithmic.

colors

Define a cor de cada curva de canal que será exibida no fluxo de vídeo. É uma lista de nomes de cores separados por espaço ou por ’|’. Cores não reconhecidas ou ausentes serão substituídas pela cor branca.

8.37.1 Exemplos

  • Reduz em 10 o ganho da frequência central de 200Hz e largura de 100 Hz para os primeiros 2 canais usando um filtro Chebyshev tipo 1:
    anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
    

8.37.2 Comandos

Este filtro aceita os seguintes comandos:

change

Altera os parâmetros de um filtro existente. A sintaxe para os comandos é: "fN|f=freq|w=width|g=gain"

fN é o número de um filtro existente, começando em 0; se não houver tal filtro, um erro é retornado. freq define o novo parâmetro de frequência. width define o novo parâmetro de largura em Hertz. gain define o novo parâmetro de ganho em dB.

Uma invocação completa do filtro com asendcmd pode ser assim: asendcmd=c=’4.0 anequalizer change 0|f=200|w=50|g=1’,anequalizer=...

8.38 anlmdn

Reduz o ruído de banda larga nas amostras de áudio usando o algoritmo Non-Local Means.

Cada amostra é ajustada procurando outras amostras com contextos semelhantes. Essa semelhança de contexto é definida comparando os patches vizinhos de tamanho p. Os patches são buscados em uma área de raio r ao redor da amostra.

O filtro aceita as seguintes opções:

strength, s

Define a intensidade da redução de ruído. O intervalo permitido vai de 0.00001 a 10000. O valor padrão é 0.00001.

patch, p

Define a duração do raio do patch. O intervalo permitido vai de 1 a 100 milissegundos. O valor padrão é 2 milissegundos.

research, r

Define a duração do raio de pesquisa. O intervalo permitido vai de 2 a 300 milissegundos. O valor padrão é 6 milissegundos.

output, o

Define o modo de saída.

Aceita os seguintes valores:

i

Passa a entrada sem modificação.

o

Passa o sinal com o ruído removido.

n

Passa somente o ruído.

O valor padrão é o.

smooth, m

Define o fator de suavização. O valor padrão é 11. O intervalo permitido vai de 1 a 1000.

8.38.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.39 anlmf, anlms

Aplica o algoritmo Normalized Least-Mean-(Squares|Fourth) ao primeiro fluxo de áudio usando o segundo fluxo de áudio.

Este filtro adaptativo é usado para imitar um filtro desejado, encontrando os coeficientes do filtro que produzem o menor erro quadrático médio do sinal de erro (a diferença entre o sinal desejado, o 2º fluxo de áudio de entrada, e o sinal real, o 1º fluxo de áudio de entrada).

A seguir, uma descrição das opções aceitas.

order

Define a ordem do filtro.

mu

Define o mu do filtro.

eps

Define o eps do filtro.

leakage

Define o vazamento (leakage) do filtro.

out_mode

Aceita os seguintes valores:

i

Passa a 1ª entrada.

d

Passa a 2ª entrada.

o

Passa a diferença entre a entrada desejada, a 2ª entrada, e a estimativa do sinal de erro.

n

Passa a diferença entre a entrada, a 1ª entrada, e a estimativa do sinal de erro.

e

Passa as amostras estimadas do sinal de erro.

O valor padrão é o.

precision

Define qual precisão usar ao processar as amostras.

auto

Escolhe automaticamente o sample format interno de acordo com outros filtros.

float

Sempre usa o sample format de precisão simples em ponto flutuante.

double

Sempre usa o sample format de precisão dupla em ponto flutuante.

8.39.1 Exemplos

  • Um dos muitos usos deste filtro é a redução de ruído: o áudio de entrada é filtrado com as mesmas amostras atrasadas por uma quantidade fixa; um exemplo disso para áudio estéreo é:
    asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
    

8.39.2 Comandos

Este filtro aceita os mesmos comandos que as opções, exceto a opção order.

8.40 anull

Passa a fonte de áudio sem modificação para a saída.

8.41 apad

Preenche o final de um fluxo de áudio com silêncio.

Isto pode ser usado em conjunto com ffmpeg -shortest para estender os fluxos de áudio até o mesmo comprimento do fluxo de vídeo.

A seguir, uma descrição das opções aceitas.

packet_size

Define o tamanho do pacote de silêncio. O valor padrão é 4096.

pad_len

Define o número de amostras de silêncio a adicionar ao final. Depois que o valor é atingido, o fluxo é encerrado. Esta opção é mutuamente exclusiva com whole_len.

whole_len

Define o número total mínimo de amostras no fluxo de áudio de saída. Se o valor for maior que a duração do áudio de entrada, silêncio é adicionado ao final até que o valor seja atingido. Esta opção é mutuamente exclusiva com pad_len.

pad_dur

Especifica a duração das amostras de silêncio a adicionar. Consulte (ffmpeg-utils)a seção Duração de tempo do manual ffmpeg-utils(1) para a sintaxe aceita. Usado somente se definido com um valor não negativo.

whole_dur

Especifica a duração total mínima no fluxo de áudio de saída. Consulte (ffmpeg-utils)a seção Duração de tempo do manual ffmpeg-utils(1) para a sintaxe aceita. Usado somente se definido com um valor não negativo. Se o valor for maior que a duração do áudio de entrada, silêncio é adicionado ao final até que o valor seja atingido. Esta opção é mutuamente exclusiva com pad_dur

Se nenhuma das opções pad_len, whole_len, pad_dur ou whole_dur estiver definida, o filtro adicionará silêncio ao final do fluxo de entrada indefinidamente.

Observe que, no ffmpeg 4.4 e versões anteriores, um pad_dur ou whole_dur igual a zero também fazia o filtro adicionar silêncio indefinidamente.

8.41.1 Exemplos

  • Adiciona 1024 amostras de silêncio ao final da entrada:

    apad=pad_len=1024
    
  • Garante que a saída de áudio contenha pelo menos 10000 amostras, preenchendo a entrada com silêncio se necessário:

    apad=whole_len=10000
    
  • Usa o ffmpeg para preencher a entrada de áudio com silêncio, de modo que o fluxo de vídeo sempre resulte no mais curto e seja convertido até o final no arquivo de saída ao usar a opção shortest:

    ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
    

8.42 aphaser

Adiciona um efeito de phasing ao áudio de entrada.

Um filtro phaser cria uma série de picos e vales no espectro de frequência. A posição dos picos e vales é modulada para variar ao longo do tempo, criando um efeito de varredura.

A seguir, uma descrição dos parâmetros aceitos.

in_gain

Define o ganho de entrada. O padrão é 0.4.

out_gain

Define o ganho de saída. O padrão é 0.74

delay

Define o atraso em milissegundos. O padrão é 3.0.

decay

Define a queda. O padrão é 0.4.

speed

Define a velocidade de modulação em Hz. O padrão é 0.5.

type

Define o tipo de modulação. O padrão é triangular.

Aceita os seguintes valores:

‘triangular, t’ ‘sinusoidal, s’

8.43 aphaseshift

Aplica um deslocamento de fase às amostras de áudio de entrada.

O filtro aceita as seguintes opções:

shift

Especifica o deslocamento de fase. O intervalo permitido vai de -1.0 a 1.0. O valor padrão é 0.0.

level

Define o ganho de saída aplicado à saída final. O intervalo permitido vai de 0.0 a 1.0. O valor padrão é 1.0.

order

Define a ordem do filtro usada para a filtragem. O intervalo permitido vai de 1 a 16. O valor padrão é 8.

8.43.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.44 apsnr

Mede a relação sinal-ruído de pico do áudio (Audio Peak Signal-to-Noise Ratio).

Este filtro recebe dois fluxos de áudio como entrada e gera o primeiro fluxo de áudio como saída. Os resultados são em dB por canal ao final de qualquer uma das entradas.

8.45 apsyclip

Aplica um clipper psicoacústico ao fluxo de áudio de entrada.

O filtro aceita as seguintes opções:

level_in

Define o ganho de entrada. Por padrão, é 1. O intervalo é [0.015625 - 64].

level_out

Define o ganho de saída. Por padrão, é 1. O intervalo é [0.015625 - 64].

clip

Define o valor inicial do clipping. O valor padrão é 0dBFS ou 1.

diff

Gera apenas as amostras de diferença, útil para ouvir as distorções introduzidas. Por padrão, está desativado.

adaptive

Define a intensidade da distorção adaptativa aplicada. O valor padrão é 0.5. O intervalo permitido vai de 0 a 1.

iterations

Define o número de iterações do clipper psicoacústico. O intervalo permitido vai de 1 a 20. O valor padrão é 10.

level

Nivela automaticamente o sinal de saída. O padrão é desativado. Isso normaliza o áudio de volta a 0dBFS quando ativado.

8.45.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.46 apulsator

O pulsador de áudio (audio pulsator) é algo entre um autopanner e um trêmolo. Mas também pode produzir efeitos estéreo curiosos. O pulsator altera o volume dos canais esquerdo e direito com base em um LFO (oscilador de baixa frequência, low frequency oscillator) com diferentes formas de onda e fases deslocadas. Este filtro tem a capacidade de definir um deslocamento entre os canais esquerdo e direito. Um deslocamento de 0 significa que as duas formas de onda do LFO coincidem entre si. Os canais esquerdo e direito são alterados igualmente - um trêmolo convencional. Um deslocamento de 50% significa que a forma do canal direito está exatamente deslocada em fase (ou atrasada em cerca de metade da frequência) - o pulsator age como um autopanner. Em 1, as duas curvas voltam a coincidir. Cada ajuste intermediário desloca a fase de forma contínua entre todos os estágios e produz alguns sons de "bypass" com formas de onda senoidal e triangular. Quanto mais o deslocamento se aproxima de 1 (a partir de 0.5), mais rápido o sinal passa do alto-falante esquerdo para o direito.

O filtro aceita as seguintes opções:

level_in

Define o ganho de entrada. Por padrão, é 1. O intervalo é [0.015625 - 64].

level_out

Define o ganho de saída. Por padrão, é 1. O intervalo é [0.015625 - 64].

mode

Define a forma de onda que o LFO usará. Pode ser uma de: sine, triangle, square, sawup ou sawdown. O padrão é sine.

amount

Define a modulação. Define quanto do sinal original é afetado pelo LFO.

offset_l

Define o deslocamento do canal esquerdo. O padrão é 0. O intervalo permitido é [0 - 1].

offset_r

Define o deslocamento do canal direito. O padrão é 0.5. O intervalo permitido é [0 - 1].

width

Define a largura do pulso. O padrão é 1. O intervalo permitido é [0 - 2].

timing

Define o modo de temporização possível. Pode ser um de: bpm, ms ou hz. O padrão é hz.

bpm

Define o bpm. O padrão é 120. O intervalo permitido é [30 - 300]. Usado somente se timing estiver definido como bpm.

ms

Define o ms. O padrão é 500. O intervalo permitido é [10 - 2000]. Usado somente se timing estiver definido como ms.

hz

Define a frequência em Hz. O padrão é 2. O intervalo permitido é [0.01 - 100]. Usado somente se timing estiver definido como hz.

8.47 aresample

Reamostra o áudio de entrada conforme os parâmetros especificados, usando a biblioteca libswresample. Se nenhum for especificado, o filtro converterá automaticamente entre sua entrada e sua saída.

Este filtro também é capaz de esticar/comprimir os dados de áudio para fazê-los corresponder às marcas de tempo, ou de injetar silêncio / cortar áudio para fazê-los corresponder às marcas de tempo, fazer uma combinação das duas coisas ou nenhuma delas.

O filtro aceita a sintaxe [sample_rate:]resampler_options, em que sample_rate expressa uma taxa de amostragem e resampler_options é uma lista de pares chave=valor, separados por ":". Consulte a seção (ffmpeg-resampler)"Opções do reamostrador" do manual ffmpeg-resampler(1) para a lista completa de opções compatíveis.

8.47.1 Exemplos

  • Reamostra o áudio de entrada para 44100Hz:

    aresample=44100
    
  • Estica/comprime as amostras até as marcas de tempo fornecidas, com uma compensação máxima de 1000 amostras por segundo:

    aresample=async=1000
    

8.48 areverse

Inverte um trecho de áudio.

Aviso: este filtro requer memória para armazenar em buffer o trecho inteiro, portanto é recomendável cortá-lo antes.

8.48.1 Exemplos

  • Pega os primeiros 5 segundos de um trecho e o inverte.
    atrim=end=5,areverse
    

8.49 arls

Aplica o algoritmo Recursive Least Squares ao primeiro fluxo de áudio usando o segundo fluxo de áudio.

Este filtro adaptativo é usado para imitar um filtro desejado, encontrando recursivamente os coeficientes do filtro que produzem a função de custo mínima dos mínimos quadrados lineares ponderados do sinal de erro (a diferença entre o sinal desejado, o 2º fluxo de áudio de entrada, e o sinal real, o 1º fluxo de áudio de entrada).

A seguir, uma descrição das opções aceitas.

order

Define a ordem do filtro.

lambda

Define o fator de esquecimento.

delta

Define o coeficiente para inicializar a matriz de covariância interna.

out_mode

Define as amostras de saída do filtro. Aceita os seguintes valores:

i

Passa a 1ª entrada.

d

Passa a 2ª entrada.

o

Passa a diferença entre a entrada desejada, a 2ª entrada, e a estimativa do sinal de erro.

n

Passa a diferença entre a entrada, a 1ª entrada, e a estimativa do sinal de erro.

e

Passa as amostras estimadas do sinal de erro.

O valor padrão é o.

precision

Define qual precisão usar ao processar as amostras.

auto

Escolhe automaticamente o sample format interno de acordo com outros filtros.

float

Sempre usa o sample format de precisão simples em ponto flutuante.

double

Sempre usa o sample format de precisão dupla em ponto flutuante.

8.50 arnndn

Reduz o ruído da fala usando redes neurais recorrentes (Recurrent Neural Networks).

Este filtro aceita as seguintes opções:

model, m

Define o arquivo do modelo treinado a carregar. Esta opção é sempre obrigatória.

mix

Define o quanto misturar as amostras filtradas na saída final. O intervalo permitido vai de -1 a 1. O valor padrão é 1. Valores negativos são especiais: definem o quanto do ruído filtrado é mantido na saída final do filtro. Defina esta opção como -1 para ouvir o ruído real removido do sinal de entrada.

8.50.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.51 asdr

Mede a relação sinal-distorção do áudio (Audio Signal-to-Distortion Ratio).

Este filtro recebe dois fluxos de áudio como entrada e gera o primeiro fluxo de áudio como saída. Os resultados são em dB por canal ao final de qualquer uma das entradas.

8.52 asetnsamples

Define o número de amostras de cada quadro de áudio de saída.

O último pacote de saída pode conter um número diferente de amostras, pois o filtro descarrega todas as amostras restantes quando o áudio de entrada sinaliza seu fim.

O filtro aceita as seguintes opções:

nb_out_samples, n

Define o número de quadros por cada quadro de áudio de saída. O número é entendido como a quantidade de amostras por canal. O valor padrão é 1024.

pad, p

Se definido como 1, o filtro preenche o último quadro de áudio com zeros, de modo que esse quadro contenha o mesmo número de amostras que os anteriores. O valor padrão é 1.

Por exemplo, para definir o número de amostras por quadro em 1234 e desativar o preenchimento do último quadro, use:

asetnsamples=n=1234:p=0

8.53 asetrate

Define a taxa de amostragem sem alterar os dados PCM. Isso resultará em uma mudança de velocidade e pitch.

O filtro aceita as seguintes opções:

sample_rate, r

Define a taxa de amostragem de saída. O padrão é 44100 Hz.

8.54 ashowinfo

Exibe uma linha contendo diversas informações de cada quadro de áudio de entrada. O áudio de entrada não é modificado.

A linha exibida contém uma sequência de pares chave/valor no formato chave:valor.

Os seguintes valores são exibidos na saída:

n

O número (sequencial) do quadro de entrada, começando em 0.

pts

A marca de tempo de apresentação (presentation timestamp) do quadro de entrada, em unidades de base de tempo; a base de tempo depende do pad de entrada do filtro e costuma ser 1/sample_rate.

pts_time

A marca de tempo de apresentação do quadro de entrada em segundos.

fmt

O sample format.

chlayout

O layout de canais.

rate

A taxa de amostragem do quadro de áudio.

nb_samples

O número de amostras (por canal) no quadro.

checksum

A soma de verificação (checksum) Adler-32 (impressa em hexadecimal) dos dados de áudio. Para áudio planar, os dados são tratados como se todos os planos estivessem concatenados.

plane_checksums

Uma lista de somas de verificação Adler-32 para cada plano de dados.

8.55 asisdr

Mede a relação sinal-distorção invariante à escala do áudio (Audio Scaled-Invariant Signal-to-Distortion Ratio).

Este filtro recebe dois fluxos de áudio como entrada e gera o primeiro fluxo de áudio como saída. Os resultados são em dB por canal ao final de qualquer uma das entradas.

8.56 asoftclip

Aplica recorte suave (soft clipping) ao áudio.

O recorte suave (soft clipping) é um tipo de efeito de distorção em que a amplitude de um sinal é saturada ao longo de uma curva suave, em vez da forma abrupta do recorte brusco (hard clipping).

Este filtro aceita as seguintes opções:

type

Define o tipo de recorte suave.

Aceita os seguintes valores:

hard tanh atan cubic exp alg quintic sin erf threshold

Define o limiar a partir do qual o clipping começa. O valor padrão é 0dB ou 1.

output

Define o ganho aplicado à saída. O valor padrão é 0dB ou 1.

param

Define o parâmetro adicional que controla a função sigmoide.

oversample

Define o fator de sobreamostragem.

8.56.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.57 aspectralstats

Exibe informações estatísticas do domínio da frequência sobre os canais de áudio. As estatísticas são calculadas e armazenadas como metadados para cada canal de áudio e para cada quadro de áudio.

Aceita a seguinte opção:

win_size

Define o comprimento da janela em amostras. O valor padrão é 2048. O intervalo permitido vai de 32 a 65536.

win_func

Define a função de janela.

Aceita os seguintes valores:

‘rect’ ‘bartlett’ ‘hann, hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’

O padrão é hann.

overlap

Define a sobreposição da janela. O intervalo permitido vai de 0 a 1. O valor padrão é 0.5.

measure

Seleciona os parâmetros que são medidos. As chaves de metadados podem ser usadas como flags; o padrão é all, que mede tudo. none desativa toda a medição.

A seguir, a lista de cada chave de metadados:

mean variance centroid spread skewness kurtosis entropy flatness crest flux slope decrease rolloff

8.58 asr

Reconhecimento automático de fala (Automatic Speech Recognition)

Este filtro usa o PocketSphinx para reconhecimento de fala. Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-pocketsphinx.

Aceita as seguintes opções:

rate

Define a taxa de amostragem do áudio de entrada. O padrão é 16000. É necessário que isso corresponda aos modelos de voz, caso contrário os resultados serão ruins.

hmm

Define o dicionário contendo os arquivos do modelo acústico.

dict

Define o dicionário de pronúncia.

lm

Define o arquivo do modelo de linguagem.

lmctl

Define o conjunto de modelos de linguagem.

lmname

Define qual modelo de linguagem usar.

logfn

Define a saída das mensagens de log.

O filtro exporta a fala reconhecida como o metadado de quadro lavfi.asr.text.

8.59 astats

Exibe informações estatísticas do domínio do tempo sobre os canais de áudio. As estatísticas são calculadas e exibidas para cada canal de áudio e, quando aplicável, também é fornecido um valor geral.

Aceita a seguinte opção:

length

Duração da janela curta em segundos, usada para a medição de pico e vale em RMS. O valor padrão é 0.05 (50 milissegundos). O intervalo permitido é [0 - 10].

metadata

Define a injeção de metadados. Todas as chaves de metadados recebem o prefixo lavfi.astats.X, em que X é o número do canal a partir de 1, ou a string Overall. O valor padrão é desabilitado.

As chaves disponíveis para cada canal são: Bit_depth Crest_factor DC_offset Dynamic_range Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Peak_count Abs_Peak_count Peak_level RMS_difference RMS_peak RMS_trough Zero_crossings Zero_crossings_rate

e para Overall: Bit_depth DC_offset Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Number_of_samples Peak_count Abs_Peak_count Peak_level RMS_difference RMS_level RMS_peak RMS_trough

Por exemplo, uma chave completa tem a forma lavfi.astats.1.DC_offset ou lavfi.astats.Overall.Peak_count.

Consulte abaixo a descrição das chaves.

reset

Define o número de quadros sobre os quais as estatísticas cumulativas são calculadas antes de serem reiniciadas. O valor padrão é desabilitado.

measure_perchannel

Seleciona os parâmetros que são medidos por canal. As chaves de metadados podem ser usadas como flags; o valor padrão é all, que mede tudo. none desabilita toda a medição por canal.

measure_overall

Seleciona os parâmetros que são medidos de forma geral. As chaves de metadados podem ser usadas como flags; o valor padrão é all, que mede tudo. none desabilita toda a medição geral.

Segue uma descrição das chaves de medida:

none

nenhuma medida

all

todas as medidas

Bit_depth

profundidade de bits geral do áudio, ou seja, o número de bits usados em cada amostra

Crest_factor

razão padrão entre o nível de pico e o nível RMS (observação: não em dB)

DC_offset

deslocamento médio de amplitude em relação a zero

Dynamic_range

faixa dinâmica medida do áudio, em dB

Entropy

entropia medida em todo o áudio; um valor de entropia próximo de 1.0 costuma ser medido em ruído branco

Flat_factor

planicidade (ou seja, amostras consecutivas com o mesmo valor) do sinal em seus níveis de pico (ou seja, Min_level ou Max_level)

Max_difference

diferença máxima entre duas amostras consecutivas

Max_level

nível máximo de amostra

Mean_difference

diferença média entre duas amostras consecutivas, ou seja, a média de cada diferença entre duas amostras consecutivas

Min_difference

diferença mínima entre duas amostras consecutivas

Min_level

nível mínimo de amostra

Noise_floor

pico local mínimo medido em dBFS ao longo de uma janela curta

Noise_floor_count

número de ocasiões (não o número de amostras) em que o sinal atingiu o Noise floor

Number_of_Infs

número de amostras com um valor infinito

Number_of_NaNs

número de amostras com um valor NaN (não numérico)

Number_of_denormals

número de amostras com um valor subnormal

Number_of_samples

número de amostras

Peak_count

número de ocasiões (não o número de amostras) em que o sinal atingiu Min_level ou Max_level

Abs_Peak_count

número de ocasiões em que as amostras absolutas obtidas do sinal atingiram o valor absoluto máximo entre Min_level e Max_level

Peak_level

nível de pico padrão medido em dBFS

RMS_difference

diferença RMS (raiz quadrada média) entre duas amostras consecutivas

RMS_level

nível RMS padrão medido em dBFS

RMS_peak RMS_trough

valores de pico e vale do nível RMS medidos ao longo de uma janela curta, em dBFS.

Zero crossings

número de pontos em que a forma de onda cruza o eixo de nível zero

Zero crossings rate

taxa de Zero crossings em relação ao número de amostras de áudio

8.60 asubboost

Aumenta as frequências do subwoofer.

O filtro aceita as seguintes opções:

dry

Define o ganho dry (seco), ou seja, quanto do sinal original é mantido. O intervalo permitido vai de 0 a 1. O valor padrão é 1.0.

wet

Define o ganho wet (úmido), ou seja, quanto do sinal filtrado é mantido. O intervalo permitido vai de 0 a 1. O valor padrão é 1.0.

boost

Define o fator máximo de aumento. O intervalo permitido vai de 1 a 12. O valor padrão é 2.

decay

Define o valor de ganho de decaimento da linha de atraso. O intervalo permitido vai de 0 a 1. O valor padrão é 0.0.

feedback

Define o valor de ganho de realimentação da linha de atraso. O intervalo permitido vai de 0 a 1. O valor padrão é 0.9.

cutoff

Define a frequência de corte em hertz. O intervalo permitido vai de 50 a 900. O valor padrão é 100.

slope

Define a quantidade de inclinação para a frequência de corte. O intervalo permitido vai de 0.0001 a 1. O valor padrão é 0.5.

delay

Define o atraso. O intervalo permitido vai de 1 a 100. O valor padrão é 20.

channels

Define os canais a serem processados. O valor padrão é todos os disponíveis.

8.60.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.61 asubcut

Corta as frequências do subwoofer.

Este filtro permite definir um roll-off personalizado e mais acentuado do que um filtro highpass, e assim consegue atenuar mais o conteúdo de frequência na banda de rejeição.

O filtro aceita as seguintes opções:

cutoff

Define a frequência de corte em hertz. O intervalo permitido vai de 2 a 200. O valor padrão é 20.

order

Define a ordem do filtro. Os valores disponíveis vão de 3 a 20. O valor padrão é 10.

level

Define o nível de ganho de entrada. O intervalo permitido vai de 0 a 1. O valor padrão é 1.

8.61.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.62 asupercut

Corta as frequências superagudas.

O filtro aceita as seguintes opções:

cutoff

Define a frequência de corte em hertz. O intervalo permitido vai de 20000 a 192000. O valor padrão é 20000.

order

Define a ordem do filtro. Os valores disponíveis vão de 3 a 20. O valor padrão é 10.

level

Define o nível de ganho de entrada. O intervalo permitido vai de 0 a 1. O valor padrão é 1.

8.62.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.63 asuperpass

Aplica um filtro Butterworth passa-banda de ordem alta.

O filtro aceita as seguintes opções:

centerf

Define a frequência central em hertz. O intervalo permitido vai de 2 a 999999. O valor padrão é 1000.

order

Define a ordem do filtro. Os valores disponíveis vão de 4 a 20. O valor padrão é 4.

qfactor

Define o fator Q. O intervalo permitido vai de 0.01 a 100. O valor padrão é 1.

level

Define o nível de ganho de entrada. O intervalo permitido vai de 0 a 2. O valor padrão é 1.

8.63.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.64 asuperstop

Aplica um filtro Butterworth rejeita-banda de ordem alta.

O filtro aceita as seguintes opções:

centerf

Define a frequência central em hertz. O intervalo permitido vai de 2 a 999999. O valor padrão é 1000.

order

Define a ordem do filtro. Os valores disponíveis vão de 4 a 20. O valor padrão é 4.

qfactor

Define o fator Q. O intervalo permitido vai de 0.01 a 100. O valor padrão é 1.

level

Define o nível de ganho de entrada. O intervalo permitido vai de 0 a 2. O valor padrão é 1.

8.64.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.65 atempo

Ajusta o tempo do áudio.

O filtro aceita exatamente um parâmetro, o tempo do áudio. Se não for especificado, o filtro assume um tempo nominal de 1.0. O tempo deve estar no intervalo [0.5, 100.0].

Observe que um tempo maior que 2 fará com que algumas amostras sejam descartadas em vez de misturadas. Se por algum motivo isso for um problema, é sempre possível encadear várias instâncias de atempo para obter o tempo resultante desejado.

8.65.1 Exemplos

  • Reduz o tempo do áudio para 80%:

    atempo=0.8
    
  • Aumenta o tempo do áudio para 300%:

    atempo=3
    
  • Aumenta o tempo do áudio para 300% encadeando duas instâncias de atempo:

    atempo=sqrt(3),atempo=sqrt(3)
    

8.65.2 Comandos

Este filtro é compatível com os seguintes comandos:

tempo

Altera o fator de escala do tempo do filtro. A sintaxe do comando é: "tempo"

8.66 atilt

Aplica um filtro de inclinação espectral ao fluxo de áudio.

Este filtro aplica qualquer inclinação de roll-off espectral sobre qualquer banda de frequência especificada.

O filtro aceita as seguintes opções:

freq

Define a frequência central da inclinação em Hz. O valor padrão é 10000 Hz.

slope

Define a direção da inclinação. O valor padrão é 0. O intervalo permitido vai de -1 a 1.

width

Define a largura da inclinação. O valor padrão é 1000. O intervalo permitido vai de 100 a 10000.

order

Define a ordem do filtro de inclinação.

level

Define o nível de volume de entrada. O intervalo permitido vai de 0 a 4. O valor padrão é 1.

8.66.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.67 atrim

Corta a entrada de forma que a saída contenha uma única subparte contínua da entrada.

Aceita os seguintes parâmetros:

start

Marca de tempo (em segundos) do início da seção a manter. Ou seja, a amostra de áudio com a marca de tempo start será a primeira amostra na saída.

end

Especifica o instante da primeira amostra de áudio que será descartada, ou seja, a amostra de áudio imediatamente anterior à que tem a marca de tempo end será a última amostra na saída.

start_pts

Igual a start, exceto que esta opção define a marca de tempo inicial em amostras em vez de segundos.

end_pts

Igual a end, exceto que esta opção define a marca de tempo final em amostras em vez de segundos.

duration

A duração máxima da saída em segundos.

start_sample

O número da primeira amostra que deve ser produzida na saída.

end_sample

O número da primeira amostra que deve ser descartada.

start, end e duration são expressos como especificações de duração de tempo; consulte (ffmpeg-utils) a seção Time duration do manual ffmpeg-utils(1).

Observe que os dois primeiros conjuntos de opções start/end e a opção duration consideram a marca de tempo do quadro, enquanto as opções _sample simplesmente contam as amostras que passam pelo filtro. Assim, start/end_pts e start/end_sample produzirão resultados diferentes quando as marcas de tempo estiverem erradas, imprecisas ou não começarem em zero. Observe também que este filtro não modifica as marcas de tempo. Se você quiser que as marcas de tempo de saída comecem em zero, insira o filtro asetpts depois do filtro atrim.

Se várias opções start ou end forem definidas, este filtro tenta ser guloso e manter todas as amostras que correspondem a pelo menos uma das restrições especificadas. Para manter apenas a parte que atende a todas as restrições ao mesmo tempo, encadeie vários filtros atrim.

Os valores padrão são tais que toda a entrada é mantida. Assim, é possível definir, por exemplo, apenas os valores de end para manter tudo antes do instante especificado.

Exemplos:

  • Descartar tudo exceto o segundo minuto da entrada:

    ffmpeg -i INPUT -af atrim=60:120
    
  • Manter apenas as primeiras 1000 amostras:

    ffmpeg -i INPUT -af atrim=end_sample=1000
    

8.68 axcorrelate

Calcula a correlação cruzada normalizada com janela entre dois fluxos de áudio de entrada.

As amostras resultantes estão sempre entre -1 e 1, inclusive. Se o resultado for 1, significa que as duas amostras de entrada estão altamente correlacionadas naquele segmento selecionado. Resultado 0 significa que não estão correlacionadas de forma alguma. Se o resultado for -1, significa que as duas amostras de entrada estão em fase oposta, o que significa que se cancelam mutuamente.

O filtro aceita as seguintes opções:

size

Define o tamanho do segmento sobre o qual a correlação cruzada é calculada. O valor padrão é 256. O intervalo permitido vai de 2 a 131072.

algo

Define o algoritmo para a correlação cruzada. Pode ser slow, fast ou best. O valor padrão é best. O algoritmo fast presume que os valores médios em qualquer segmento dado são sempre zero e, portanto, precisa de muito menos cálculos. Isso geralmente não é verdade, mas é válido para fluxos de áudio típicos.

8.68.1 Exemplos

  • Calcular a correlação entre canais em um fluxo de áudio estéreo:
    ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
    

8.69 bandpass

Aplica um filtro Butterworth passa-banda de dois polos com frequência central frequency e largura de banda (ponto de 3dB) width. A opção csg seleciona um ganho skirt constante (ganho de pico = Q) em vez do padrão: ganho de pico constante de 0dB. O filtro tem um roll-off de 6dB por oitava (20dB por década).

O filtro aceita as seguintes opções:

frequency, f

Define a frequência central do filtro. O valor padrão é 3000.

csg

Ganho skirt constante se definido como 1. O valor padrão é 0.

width_type, t

Define o método para especificar a largura de banda do filtro.

h

Hz

q

Fator Q

o

oitava

s

inclinação

k

kHz

width, w

Especifica a largura de banda de um filtro nas unidades de width_type.

mix, m

Quanto do sinal filtrado é usado na saída. O valor padrão é 1. O intervalo vai de 0 a 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes biquad; por padrão, está desabilitado. Ao habilitá-la, a resposta de magnitude em DC é normalizada para 0dB.

transform, a

Define o tipo de transformada do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Escolhe automaticamente o sample format dependendo dos filtros surround.

s16

Sempre usa 16 bits com sinal.

s32

Sempre usa 32 bits com sinal.

f32

Sempre usa ponto flutuante de 32 bits.

f64

Sempre usa ponto flutuante de 64 bits.

block_size, b

Define o tamanho de bloco usado no processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada quando ela se aproxima de valores próximos de zero), a filtragem se tornará de fase linear; caso contrário, se não for grande o suficiente, produzirá artefatos desagradáveis.

Observe que o atraso do filtro será exatamente esse número de amostras quando definido como um valor diferente de zero.

8.69.1 Comandos

Este filtro é compatível com os seguintes comandos:

frequency, f

Altera a frequência de bandpass. A sintaxe do comando é: "frequency"

width_type, t

Altera o width_type de bandpass. A sintaxe do comando é: "width_type"

width, w

Altera o width de bandpass. A sintaxe do comando é: "width"

mix, m

Altera o mix de bandpass. A sintaxe do comando é: "mix"

8.70 bandreject

Aplica um filtro Butterworth rejeita-banda de dois polos com frequência central frequency e largura de banda (ponto de 3dB) width. O filtro tem um roll-off de 6dB por oitava (20dB por década).

O filtro aceita as seguintes opções:

frequency, f

Define a frequência central do filtro. O valor padrão é 3000.

width_type, t

Define o método para especificar a largura de banda do filtro.

h

Hz

q

Fator Q

o

oitava

s

inclinação

k

kHz

width, w

Especifica a largura de banda de um filtro nas unidades de width_type.

mix, m

Quanto do sinal filtrado é usado na saída. O valor padrão é 1. O intervalo vai de 0 a 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes biquad; por padrão, está desabilitado. Ao habilitá-la, a resposta de magnitude em DC é normalizada para 0dB.

transform, a

Define o tipo de transformada do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Escolhe automaticamente o sample format dependendo dos filtros surround.

s16

Sempre usa 16 bits com sinal.

s32

Sempre usa 32 bits com sinal.

f32

Sempre usa ponto flutuante de 32 bits.

f64

Sempre usa ponto flutuante de 64 bits.

block_size, b

Define o tamanho de bloco usado no processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada quando ela se aproxima de valores próximos de zero), a filtragem se tornará de fase linear; caso contrário, se não for grande o suficiente, produzirá artefatos desagradáveis.

Observe que o atraso do filtro será exatamente esse número de amostras quando definido como um valor diferente de zero.

8.70.1 Comandos

Este filtro é compatível com os seguintes comandos:

frequency, f

Altera a frequência de bandreject. A sintaxe do comando é: "frequency"

width_type, t

Altera o width_type de bandreject. A sintaxe do comando é: "width_type"

width, w

Altera o width de bandreject. A sintaxe do comando é: "width"

mix, m

Altera o mix de bandreject. A sintaxe do comando é: "mix"

8.71 bass, lowshelf

Aumenta ou corta as frequências graves (mais baixas) do áudio usando um filtro shelving de dois polos, com uma resposta semelhante à dos controles de tom de um equipamento hi-fi padrão. Isso também é conhecido como equalização shelving (EQ).

O filtro aceita as seguintes opções:

gain, g

Informa o ganho em 0 Hz. Seu intervalo útil vai de aproximadamente -20 (para um grande corte) a +20 (para um grande aumento). Cuidado com o clipping ao usar um ganho positivo.

frequency, f

Define a frequência central do filtro, que pode ser usada para estender ou reduzir a faixa de frequência a ser aumentada ou cortada. O valor padrão é 100 Hz.

width_type, t

Define o método para especificar a largura de banda do filtro.

h

Hz

q

Fator Q

o

oitava

s

inclinação

k

kHz

width, w

Determina quão acentuada é a transição de shelf do filtro.

poles, p

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

mix, m

Quanto do sinal filtrado é usado na saída. O valor padrão é 1. O intervalo vai de 0 a 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes biquad; por padrão, está desabilitado. Ao habilitá-la, a resposta de magnitude em DC é normalizada para 0dB.

transform, a

Define o tipo de transformada do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Escolhe automaticamente o sample format dependendo dos filtros surround.

s16

Sempre usa 16 bits com sinal.

s32

Sempre usa 32 bits com sinal.

f32

Sempre usa ponto flutuante de 32 bits.

f64

Sempre usa ponto flutuante de 64 bits.

block_size, b

Define o tamanho de bloco usado no processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada quando ela se aproxima de valores próximos de zero), a filtragem se tornará de fase linear; caso contrário, se não for grande o suficiente, produzirá artefatos desagradáveis.

Observe que o atraso do filtro será exatamente esse número de amostras quando definido como um valor diferente de zero.

8.71.1 Comandos

Este filtro é compatível com os seguintes comandos:

frequency, f

Altera a frequência de bass. A sintaxe do comando é: "frequency"

width_type, t

Altera o width_type de bass. A sintaxe do comando é: "width_type"

width, w

Altera o width de bass. A sintaxe do comando é: "width"

gain, g

Altera o ganho de bass. A sintaxe do comando é: "gain"

mix, m

Altera o mix de bass. A sintaxe do comando é: "mix"

8.72 biquad

Aplica um filtro IIR biquad com os coeficientes fornecidos, em que b0, b1, b2 e a0, a1, a2 são, respectivamente, os coeficientes do numerador e do denominador, e channels, c especifica quais canais filtrar; por padrão, todos os canais disponíveis são filtrados.

8.72.1 Comandos

Este filtro é compatível com os seguintes comandos:

a0 a1 a2 b0 b1 b2

Altera um parâmetro de biquad. A sintaxe do comando é: "value"

mix, m

Quanto do sinal filtrado é usado na saída. O padrão é 1. A faixa vai de 0 a 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes do biquad. Por padrão, está desativada. Ativá-la normaliza a resposta de magnitude em DC para 0dB.

transform, a

Define o tipo de transformação do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Escolhe automaticamente o sample format de acordo com os filtros surround.

s16

Usa sempre 16 bits com sinal.

s32

Usa sempre 32 bits com sinal.

f32

Usa sempre 32 bits em ponto flutuante.

f64

Usa sempre 64 bits em ponto flutuante.

block_size, b

Define o tamanho de bloco usado no processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada ao se aproximar de valores próximos de zero), a filtragem passa a ter fase linear; caso contrário, se não for grande o bastante, produzirá apenas artefatos desagradáveis.

Observe que, ao definir um valor diferente de zero, o atraso do filtro será exatamente esse número de amostras.

8.73 bs2b

Transformação de estéreo para binaural de Bauer, que melhora a audição de gravações de áudio estéreo em fones de ouvido.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libbs2b.

Aceita os seguintes parâmetros:

profile

Nível de crossfeed predefinido.

default

Nível padrão (fcut=700, feed=50).

cmoy

Circuito Chu Moy (fcut=700, feed=60).

jmeier

Circuito Jan Meier (fcut=650, feed=95).

fcut

Frequência de corte (em Hz).

feed

Nível de feed (em Hz).

8.74 channelmap

Remapeia os canais de entrada para novos locais.

Aceita os seguintes parâmetros:

map

Mapeia os canais da entrada para a saída. O argumento é uma lista de mapeamentos separados por ’|’, cada um na forma in_channel-out_channel ou in_channel. in_channel pode ser o nome do canal de entrada (por exemplo, FL para o canal frontal esquerdo) ou seu índice no layout de canais de entrada. out_channel é o nome do canal de saída ou seu índice no layout de canais de saída. Se out_channel não for informado, ele é implicitamente um índice, começando em zero e aumentando em um a cada mapeamento. Não é permitido misturar tipos diferentes de mapeamento, o que resulta em um erro de análise.

channel_layout

O layout de canais do fluxo de saída. Se não for especificado, o filtro o deduz a partir dos nomes de out_channel ou do número de mapeamentos. Os layouts deduzidos não conterão necessariamente os canais na ordem dos mapeamentos.

Se não houver nenhum mapeamento, o filtro mapeia implicitamente os canais de entrada para os canais de saída, preservando os índices.

8.74.1 Exemplos

  • Por exemplo, supondo um arquivo MOV de entrada 5.1+downmix,
    ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
    

criará um arquivo WAV de saída identificado como estéreo a partir dos canais de downmix da entrada.

  • Para corrigir um WAV 5.1 codificado incorretamente na ordem de canais nativa do AAC
    ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
    

8.75 channelsplit

Divide cada canal de um fluxo de áudio de entrada em um fluxo de saída separado.

Aceita os seguintes parâmetros:

channel_layout

O layout de canais do fluxo de entrada. O padrão é "stereo".

channels

Um layout de canais que descreve os canais a serem extraídos como fluxos de saída separados, ou "all" para extrair cada canal de entrada como um fluxo separado. O padrão é "all".

Escolher canais que não estão presentes no layout de canais da entrada resulta em um erro.

8.75.1 Exemplos

  • Por exemplo, supondo um arquivo MP3 de entrada estéreo,
    ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
    

criará um arquivo Matroska de saída com dois fluxos de áudio, um contendo apenas o canal esquerdo e o outro o canal direito.

  • Dividir um arquivo WAV 5.1 em arquivos por canal:

    ffmpeg -i in.wav -filter_complex
    'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
    -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
    front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
    side_right.wav
    
  • Extrair somente o LFE de um arquivo WAV 5.1:

    ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
    -map '[LFE]' lfe.wav
    

8.76 chorus

Adiciona um efeito de chorus ao áudio.

Pode fazer um único vocal soar como um chorus, mas também pode ser aplicado a instrumentação.

O chorus se assemelha a um efeito de eco com um atraso curto, mas, enquanto no eco o atraso é constante, no chorus ele varia por meio de modulação senoidal ou triangular. A profundidade da modulação define a faixa em que o atraso modulado é reproduzido antes ou depois do atraso base. Por isso, o som atrasado soará mais lento ou mais rápido, ou seja, o som atrasado oscila em torno do original, como em um coral em que algumas vozes desafinam levemente.

Aceita os seguintes parâmetros:

in_gain

Define o ganho de entrada. O padrão é 0.4.

out_gain

Define o ganho de saída. O padrão é 0.4.

delays

Define os atrasos. Um atraso típico fica entre 40ms e 60ms.

decays

Define os decaimentos.

speeds

Define as velocidades.

depths

Define as profundidades.

8.76.1 Exemplos

  • Um único atraso:

    chorus=0.7:0.9:55:0.4:0.25:2
    
  • Dois atrasos:

    chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
    
  • Chorus de som mais pleno com três atrasos:

    chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
    

8.77 compand

Comprime ou expande a faixa dinâmica do áudio.

Aceita os seguintes parâmetros:

attacks decays

Uma lista de tempos em segundos, para cada canal, durante os quais o nível instantâneo do sinal de entrada é calculado em média para determinar seu volume. attacks se refere ao aumento de volume e decays à redução de volume. Na maioria das situações, o tempo de ataque (resposta ao áudio ficando mais alto) deve ser mais curto que o tempo de decaimento, porque o ouvido humano é mais sensível a um som alto repentino do que a um som suave repentino. Um valor típico de ataque é 0.3 segundos, e um valor típico de decaimento é 0.8 segundos. Se o número especificado de attacks e decays for menor que o número de canais, o último ataque/decaimento definido será usado para todos os canais restantes.

points

Uma lista de pontos para a função de transferência, especificados em dB em relação à amplitude máxima possível do sinal. Cada lista de pontos-chave deve ser definida usando a seguinte sintaxe: x0/y0|x1/y1|x2/y2|.... ou x0/y0 x1/y1 x2/y2 ....

Os valores de entrada devem estar em ordem estritamente crescente, mas a função de transferência não precisa ser monotonicamente crescente. O ponto 0/0 é assumido, mas pode ser sobrescrito (por 0/out-dBn). Valores típicos para a função de transferência são -70/-70|-60/-20|1/0.

soft-knee

Define o raio da curva em dB para todas as junções. O padrão é 0.01.

gain

Define o ganho adicional em dB a ser aplicado em todos os pontos da função de transferência. Isso permite ajustar facilmente o ganho geral. O padrão é 0.

volume

Define um volume inicial, em dB, a ser assumido para cada canal quando a filtragem começa. Isso permite que o usuário forneça um nível nominal inicial, de modo que, por exemplo, um ganho muito alto não seja aplicado aos níveis de sinal iniciais antes de o companding começar a atuar. Um valor típico para áudio inicialmente silencioso é -90 dB. O padrão é 0.

delay

Define um atraso, em segundos. O áudio de entrada é analisado imediatamente, mas o áudio é atrasado antes de ser enviado ao ajustador de volume. Especificar um atraso aproximadamente igual aos tempos de ataque/decaimento permite que o filtro opere de forma efetivamente preditiva, em vez de reativa. O padrão é 0.

8.77.1 Exemplos

  • Criar uma música com trechos suaves e trechos fortes, adequada para ouvir em um ambiente ruidoso:
    compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
    

Outro exemplo para áudio com trechos sussurrados e trechos com explosões:

    compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
  • Um noise gate para quando o ruído está em um nível mais baixo que o sinal:

    compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
    
  • Aqui está outro noise gate, desta vez para quando o ruído está em um nível mais alto que o sinal (o que o torna, de certa forma, semelhante a um squelch):

    compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
    
  • Compressão 2:1 a partir de -6dB:

    compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
    
  • Compressão 2:1 a partir de -9dB:

    compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
    
  • Compressão 2:1 a partir de -12dB:

    compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
    
  • Compressão 2:1 a partir de -18dB:

    compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
    
  • Compressão 3:1 a partir de -15dB:

    compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
    
  • Compressor/gate:

    compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
    
  • Expansor:

    compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
    
  • Limitador duro a -6dB:

    compand=attacks=0:points=-80/-80|-6/-6|20/-6
    
  • Limitador duro a -12dB:

    compand=attacks=0:points=-80/-80|-12/-12|20/-12
    
  • Noise gate duro a -35 dB:

    compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
    
  • Limitador suave:

    compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
    

8.78 compensationdelay

Compensation Delay Line é um atraso baseado em unidades métricas para compensar diferenças de posição entre microfones ou alto-falantes.

Por exemplo, suponha que você tenha gravado uma guitarra com dois microfones posicionados em locais diferentes. Como a frente da onda sonora tem velocidade fixa em condições normais, a fase dos microfones pode variar de acordo com sua localização e disposição relativa. A melhor mixagem de som é obtida quando esses microfones estão em fase (sincronizados). Observe que uma distância de ~30 cm entre microfones faz com que um microfone capte o sinal em antifase em relação ao outro. Isso faz com que a mixagem final soe turva. Este filtro ajuda a resolver problemas de fase adicionando atrasos diferentes às faixas de cada microfone e sincronizando-as.

O melhor resultado é obtido quando você usa uma faixa como referência e sincroniza as demais faixas com ela, uma a uma. Lembre-se de que a tolerância de sincronização/atraso também depende da taxa de amostragem. Taxas de amostragem mais altas oferecem mais tolerância.

O filtro aceita os seguintes parâmetros:

mm

Define a distância em milímetros. É a distância de compensação para ajuste fino. O padrão é 0.

cm

Define a distância em centímetros. É a distância de compensação para afinar a configuração de distância. O padrão é 0.

m

Define a distância em metros. É a distância de compensação para uma configuração de distância grosseira. O padrão é 0.

dry

Define a quantidade de dry. Quantidade de sinal não processado (dry). O padrão é 0.

wet

Define a quantidade de wet. Quantidade de sinal processado (wet). O padrão é 1.

temp

Define a temperatura em graus Celsius. É a temperatura do ambiente. O padrão é 20.

8.78.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.79 crossfeed

Aplica um filtro de crossfeed para fones de ouvido.

Crossfeed é o processo de mesclar os canais esquerdo e direito de uma gravação de áudio estéreo. É usado principalmente para reduzir a separação estéreo extrema de frequências baixas.

A intenção é produzir, para o ouvinte, um som mais parecido com o de alto-falantes.

O filtro aceita as seguintes opções:

strength

Define a intensidade do crossfeed. O padrão é 0.2. A faixa permitida vai de 0 a 1. Isso define o ganho do filtro low shelf para a parte lateral da imagem estéreo. O padrão é -6dB. O máximo permitido é -30db quando strength é definido como 1.

range

Define a amplitude do palco sonoro (soundstage). O padrão é 0.5. A faixa permitida vai de 0 a 1. Isso define a frequência de corte do filtro low shelf. Por padrão, o corte fica perto de 1550 Hz. Com range definido como 1, a frequência de corte passa a ser 2100 Hz.

slope

Define a inclinação da curva do filtro low shelf. O padrão é 0.5. A faixa permitida vai de 0.01 a 1.

level_in

Define o ganho de entrada. O padrão é 0.9.

level_out

Define o ganho de saída. O padrão é 1.

block_size

Define o tamanho de bloco usado no processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada ao se aproximar de valores próximos de zero), a filtragem passa a ter fase linear; caso contrário, se não for grande o bastante, produzirá apenas artefatos desagradáveis.

Observe que, ao definir um valor diferente de zero, o atraso do filtro será exatamente esse número de amostras.

8.79.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.80 crystalizer

Algoritmo simples de nitidez de ruído (noise sharpening) em áudio.

Este filtro aumenta linearmente as diferenças entre cada amostra de áudio.

O filtro aceita as seguintes opções:

i

Define a intensidade do efeito (padrão: 2.0). Deve estar na faixa de -10.0 a 0 (som inalterado) até 10.0 (efeito máximo). Para inverter a filtragem, use um valor negativo.

c

Ativa o recorte (clipping). Por padrão, está ativado.

8.80.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.81 dcshift

Aplica um deslocamento de DC (DC shift) ao áudio.

Isso pode ser útil para remover do áudio um offset de DC (causado talvez por um problema de hardware na cadeia de gravação). O efeito de um offset de DC é a redução do headroom e, consequentemente, do volume. O filtro astats pode ser usado para determinar se um sinal tem um offset de DC.

shift

Define o deslocamento de DC; a faixa permitida é [-1, 1]. Indica a quantidade de deslocamento aplicada ao áudio.

limitergain

Opcional. Deve ter um valor bem menor que 1 (por exemplo, 0.05 ou 0.02) e é usado para evitar o recorte (clipping).

8.82 deesser

Aplica de-essing às amostras de áudio.

i

Define a intensidade para acionar o de-essing. A faixa permitida vai de 0 a 1. O padrão é 0.

m

Define a quantidade de ducking na parte aguda do som. A faixa permitida vai de 0 a 1. O padrão é 0.5.

f

Quanto do conteúdo de frequência original é mantido ao aplicar o de-essing. A faixa permitida vai de 0 a 1. O padrão é 0.5.

s

Define o modo de saída.

Aceita os seguintes valores:

i

Passa a entrada sem alterações.

o

Passa o sinal com o ess removido.

e

Passa somente o ess.

O valor padrão é o.

8.83 dialoguenhance

Realça o diálogo em áudio estéreo.

Este filtro aceita uma entrada estéreo e produz uma saída em canais surround (3.0). O canal frontal central recém-criado contém o diálogo falado realçado, originalmente presente em ambos os canais estéreo. Este filtro emite os canais frontal esquerdo e frontal direito da mesma forma que estão presentes na entrada estéreo.

O filtro aceita as seguintes opções:

original

Define o fator do centro original a manter na saída do canal frontal central. A faixa permitida vai de 0 a 1. O valor padrão é 1.

enhance

Define o fator de realce do diálogo a aplicar na saída do canal frontal central. A faixa permitida vai de 0 a 3. O valor padrão é 1.

voice

Define o fator de detecção de voz. A faixa permitida vai de 2 a 32. O valor padrão é 2.

8.83.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.84 drmeter

Mede a faixa dinâmica do áudio.

Valores de DR de 14 ou mais são encontrados em material muito dinâmico. DR de 8 a 13 é encontrado em material de transição. E qualquer valor abaixo de 8 indica uma dinâmica muito pobre e uma compressão muito forte.

O filtro aceita as seguintes opções:

length

Define, em segundos, o comprimento de janela usado para dividir o áudio em segmentos de igual duração. O padrão é 3 segundos.

8.85 dynaudnorm

Dynamic Audio Normalizer.

Este filtro aplica uma determinada quantidade de ganho ao áudio de entrada para levar sua magnitude de pico a um nível-alvo (por exemplo, 0 dBFS). No entanto, ao contrário de algoritmos de normalização mais "simples", o Dynamic Audio Normalizer reajusta dinamicamente o fator de ganho conforme o áudio de entrada. Isso permite aplicar ganho extra às seções "silenciosas" do áudio, evitando distorções ou recorte nas seções "altas". Em outras palavras: o Dynamic Audio Normalizer "equilibra" o volume das seções silenciosas e altas, no sentido de que o volume de cada seção é levado ao mesmo nível-alvo. Observe, porém, que o Dynamic Audio Normalizer atinge esse objetivo sem aplicar "compressão de faixa dinâmica". Ele preserva 100% da faixa dinâmica dentro de cada seção do arquivo de áudio.

framelen, f

Define a duração do quadro em milissegundos. A faixa vai de 10 a 8000 milissegundos. O padrão é 500 milissegundos. O Dynamic Audio Normalizer processa o áudio de entrada em pequenos blocos, chamados de quadros. Isso é necessário porque uma magnitude de pico não tem sentido para um único valor de amostra. Em vez disso, é preciso determinar a magnitude de pico para uma sequência contígua de valores de amostra. Enquanto um normalizador "padrão" simplesmente usaria a magnitude de pico do arquivo inteiro, o Dynamic Audio Normalizer determina a magnitude de pico individualmente para cada quadro. A duração de um quadro é especificada em milissegundos. Por padrão, o Dynamic Audio Normalizer usa uma duração de quadro de 500 milissegundos, que se mostrou capaz de gerar bons resultados na maioria dos arquivos. Observe que a duração exata do quadro, em número de amostras, será determinada automaticamente, com base na taxa de amostragem de cada arquivo de áudio de entrada.

gausssize, g

Define o tamanho da janela do filtro gaussiano. A faixa vai de 3 a 301, e deve ser um número ímpar. O padrão é 31. Provavelmente o parâmetro mais importante do Dynamic Audio Normalizer é o window size (tamanho de janela) do filtro de suavização gaussiana. O tamanho da janela do filtro é especificado em quadros, centrados no quadro atual. Para simplificar, ele deve ser um número ímpar. Por isso, o valor padrão de 31 leva em conta o quadro atual, além dos 15 quadros anteriores e dos 15 quadros seguintes. Usar uma janela maior resulta em um efeito de suavização mais forte e, portanto, em menos variação de ganho, ou seja, uma adaptação de ganho mais lenta. Por outro lado, usar uma janela menor resulta em um efeito de suavização mais fraco e, portanto, em mais variação de ganho, ou seja, uma adaptação de ganho mais rápida. Em outras palavras, quanto mais você aumenta esse valor, mais o Dynamic Audio Normalizer se comporta como um filtro de normalização "tradicional". Ao contrário, quanto mais você reduz esse valor, mais o Dynamic Audio Normalizer se comporta como um compressor de faixa dinâmica.

peak, p

Define o valor de pico-alvo. Especifica o nível de magnitude mais alto permitido para o áudio de entrada normalizado. Este filtro tentará se aproximar ao máximo da magnitude de pico-alvo, mas, ao mesmo tempo, também garante que o sinal normalizado nunca ultrapasse a magnitude de pico. O fator de ganho local máximo de um quadro é imposto diretamente pela magnitude de pico-alvo. O valor padrão é 0.95, o que deixa uma margem (headroom) de 5%*. Não é recomendado ultrapassar esse valor.

maxgain, m

Define o fator de ganho máximo. A faixa vai de 1.0 a 100.0. O padrão é 10.0. O Dynamic Audio Normalizer determina o máximo fator de ganho (local) possível para cada quadro de entrada, ou seja, o maior fator de ganho que não causa recorte ou distorção. O fator de ganho máximo é determinado pela amostra de maior magnitude do quadro. No entanto, o Dynamic Audio Normalizer também limita o fator de ganho máximo do quadro por um fator de ganho máximo (global) predeterminado. Isso é feito para evitar fatores de ganho excessivos em quadros "silenciosos" ou quase silenciosos. Por padrão, o fator de ganho máximo é 10.0. Para a maioria das entradas, o valor padrão deve ser suficiente, e normalmente não é recomendado aumentar esse valor. No entanto, para entradas com um nível de volume geral extremamente baixo, pode ser necessário permitir fatores de ganho ainda maiores. Observe, porém, que o Dynamic Audio Normalizer não aplica simplesmente um limiar "rígido" (ou seja, que corta os valores acima do limiar). Em vez disso, é aplicada uma função de limiar "sigmoide". Dessa forma, os fatores de ganho se aproximam suavemente do valor do limiar, mas nunca o ultrapassam.

targetrms, r

Define o RMS-alvo. A faixa vai de 0.0 a 1.0. O padrão é 0.0 - desativado. Por padrão, o Dynamic Audio Normalizer realiza normalização de "pico". Isso significa que o fator de ganho local máximo de cada quadro é definido (apenas) pela amostra de maior magnitude do quadro. Dessa forma, as amostras podem ser amplificadas o máximo possível sem ultrapassar o nível máximo de sinal, ou seja, sem recorte. Opcionalmente, porém, o Dynamic Audio Normalizer também pode levar em conta o valor quadrático médio do quadro, abreviado como RMS. Na engenharia elétrica, o RMS é comumente usado para determinar a potência de um sinal variável no tempo. Por isso, considera-se que o RMS é uma aproximação melhor da "sonoridade percebida" do que apenas observar a magnitude de pico do sinal. Consequentemente, ao ajustar todos os quadros para um valor de RMS constante, é possível estabelecer uma "sonoridade percebida" uniforme. Se um valor de RMS-alvo tiver sido especificado, o fator de ganho local de um quadro é definido como o fator que resultaria exatamente nesse valor de RMS. Observe, porém, que o fator de ganho local máximo ainda é limitado pela amostra de maior magnitude do quadro, para evitar o recorte.

coupling, n

Ativa o acoplamento de canais. Por padrão, está ativado. Por padrão, o Dynamic Audio Normalizer amplifica todos os canais na mesma proporção. Isso significa que o mesmo fator de ganho é aplicado a todos os canais, ou seja, o maior fator de ganho possível é determinado pelo canal "mais alto". No entanto, em algumas gravações, o volume dos diferentes canais pode ser desigual — por exemplo, um canal pode ser "mais baixo" que os demais. Nesse caso, esta opção pode ser usada para desativar o acoplamento de canais. Dessa forma, o fator de ganho é determinado de forma independente para cada canal, dependendo apenas da amostra de maior magnitude de cada canal. Isso permite equilibrar o volume dos diferentes canais.

correctdc, c

Ativa a correção de bias de DC. Por padrão, está desativada. Um sinal de áudio (no domínio do tempo) é uma sequência de valores de amostra. No Dynamic Audio Normalizer, esses valores de amostra são representados na faixa de -1.0 a 1.0, independentemente do formato de entrada original. Normalmente, o sinal de áudio, ou "forma de onda", deve ficar centrado em torno do ponto zero. Isso significa que, ao calcular o valor médio de todas as amostras de um arquivo, ou de um único quadro, o resultado deve ser 0.0 ou, pelo menos, muito próximo disso. Porém, se houver um desvio significativo do valor médio em relação a 0.0, seja na direção positiva ou negativa, isso é chamado de bias de DC ou offset de DC. Como um bias de DC é claramente indesejável, o Dynamic Audio Normalizer oferece uma correção opcional de bias de DC. Com a correção de bias de DC ativada, o Dynamic Audio Normalizer determina o valor médio, ou offset de "correção de DC", de cada quadro de entrada e o subtrai de todos os valores de amostra do quadro, o que garante que essas amostras voltem a ficar centradas em torno de 0.0. Além disso, para evitar "lacunas" nos limites dos quadros, os valores de offset de correção de DC são interpolados suavemente entre quadros vizinhos.

altboundary, b

Ativa o modo de limite alternativo. Por padrão, está desativado. O Dynamic Audio Normalizer leva em conta uma certa vizinhança ao redor de cada quadro. Isso inclui tanto os quadros anteriores quanto os quadros seguintes. No entanto, para os quadros de "limite", situados bem no início e bem no fim do arquivo de áudio, nem todos os quadros vizinhos estão disponíveis. Em particular, para os primeiros quadros do arquivo de áudio, os quadros anteriores não são conhecidos. E, da mesma forma, para os últimos quadros do arquivo de áudio, os quadros seguintes não são conhecidos. Surge, então, a questão de quais fatores de ganho devem ser assumidos para os quadros ausentes na região de "limite". O Dynamic Audio Normalizer implementa dois modos para lidar com essa situação. O modo de limite padrão assume um fator de ganho de exatamente 1.0 para os quadros ausentes, resultando em um "fade in" e um "fade out" suaves no início e no fim da entrada, respectivamente.

compress, s

Define o fator de compressão. A faixa vai de 0.0 a 30.0. O padrão é 0.0. Por padrão, o Dynamic Audio Normalizer não aplica compressão "tradicional". Isso significa que os picos do sinal não são cortados e, portanto, a faixa dinâmica completa é preservada dentro de cada vizinhança local. No entanto, em alguns casos pode ser desejável combinar o algoritmo de normalização do Dynamic Audio Normalizer com uma compressão mais "tradicional". Para isso, o Dynamic Audio Normalizer oferece uma função opcional de compressão (aplicação de limiar). Se (e somente se) o recurso de compressão estiver ativado, todos os quadros de entrada são processados por uma função de limiar com soft knee antes do processo de normalização propriamente dito. Em termos simples, a função de limiar corta todas as amostras cuja magnitude ultrapassa um determinado valor de limiar. No entanto, o Dynamic Audio Normalizer não aplica simplesmente um valor de limiar fixo. Em vez disso, o valor de limiar é ajustado individualmente para cada quadro. Em geral, parâmetros menores resultam em compressão mais forte, e vice-versa. Não são recomendados valores abaixo de 3.0, pois pode surgir distorção audível.

threshold, t

Define o valor de limiar-alvo. Especifica o nível de magnitude mais baixo permitido para que o áudio de entrada seja normalizado. Se o volume do quadro de entrada estiver acima desse valor, o quadro é normalizado. Caso contrário, o quadro pode não ser normalizado. O valor padrão é definido como 0, o que significa que todos os quadros de entrada são normalizados. Esta opção é útil principalmente quando não se deseja amplificar ruído digital.

channels, h

Especifica quais canais filtrar; por padrão, todos os canais disponíveis são filtrados.

overlap, o

Especifica a sobreposição dos quadros. Se definido como 0 (padrão), nenhuma sobreposição de quadros é feita. Usar valores >0 e <1 resulta em ajustes de ganho menos conservadores, como quando a opção framelen é definida com um valor menor; se o valor da opção framelen for compensado para uma sobreposição diferente de zero, os ajustes de ganho ficam mais suaves ao longo do tempo, em comparação com o caso sem sobreposição.

curve, v

Especifica a expressão da curva de mapeamento de pico usada ao calcular o ganho aplicado aos quadros. O ganho máximo de saída por quadro ainda será limitado pelas demais opções mencionadas anteriormente para este filtro.

A expressão pode conter as seguintes constantes:

ch

número do canal atual

sn

número da amostra atual

nb_channels

número de canais

t

marca de tempo expressa em segundos

sr

taxa de amostragem

p

valor de pico do quadro atual

8.85.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.86 earwax

Torna o áudio mais fácil de ouvir em fones de ouvido.

Este filtro adiciona ‘cues’ ao áudio estéreo de 44.1kHz (ou seja, no formato de CD de áudio) para que, ao ser ouvido em fones de ouvido, a imagem estéreo se desloque de dentro da cabeça (padrão em fones de ouvido) para fora e à frente do ouvinte (padrão em alto-falantes).

Portado do SoX.

8.87 equalizer

Aplica um filtro de equalização (EQ) de pico de dois polos. Com este filtro, o nível de sinal em uma frequência selecionada e ao seu redor pode ser aumentado ou reduzido, enquanto (ao contrário dos filtros bandpass e bandreject) o nível em todas as outras frequências permanece inalterado.

Para produzir curvas de equalização complexas, este filtro pode ser especificado várias vezes, cada uma com uma frequência central diferente.

O filtro aceita as seguintes opções:

frequency, f

Define a frequência central do filtro em Hz.

width_type, t

Define o método para especificar a largura de banda do filtro.

h

Hz

q

Fator Q

o

oitava

s

inclinação

k

kHz

width, w

Especifica a largura de banda de um filtro nas unidades de width_type.

gain, g

Define o ganho ou a atenuação necessários em dB. Cuidado com o recorte (clipping) ao usar um ganho positivo.

mix, m

Quanto do sinal filtrado é usado na saída. O padrão é 1. A faixa vai de 0 a 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes do biquad. Por padrão, está desativada. Ativá-la normaliza a resposta de magnitude em DC para 0dB.

transform, a

Define o tipo de transformação do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Escolhe automaticamente o sample format de acordo com os filtros surround.

s16

Usa sempre 16 bits com sinal.

s32

Usa sempre 32 bits com sinal.

f32

Usa sempre 32 bits em ponto flutuante.

f64

Usa sempre 64 bits em ponto flutuante.

block_size, b

Define o tamanho de bloco usado no processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada ao se aproximar de valores próximos de zero), a filtragem passa a ter fase linear; caso contrário, se não for grande o bastante, produzirá apenas artefatos desagradáveis.

Observe que, ao definir um valor diferente de zero, o atraso do filtro será exatamente esse número de amostras.

8.87.1 Exemplos

  • Atenuar 10 dB em 1000 Hz, com uma largura de banda de 200 Hz:

    equalizer=f=1000:t=h:width=200:g=-10
    
  • Aplicar um ganho de 2 dB em 1000 Hz com Q 1 e atenuar 5 dB em 100 Hz com Q 2:

    equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
    

8.87.2 Comandos

Este filtro é compatível com os seguintes comandos:

frequency, f

Altera a frequência de equalizer. A sintaxe do comando é: "frequency"

width_type, t

Altera o width_type de equalizer. A sintaxe do comando é: "width_type"

width, w

Altera a largura de equalizer. A sintaxe do comando é: "width"

gain, g

Altera o ganho de equalizer. A sintaxe do comando é: "gain"

mix, m

Altera a mixagem de equalizer. A sintaxe do comando é: "mix"

8.88 extrastereo

Aumenta linearmente a diferença entre os canais esquerdo e direito, o que adiciona uma espécie de efeito "ao vivo" à reprodução.

O filtro aceita as seguintes opções:

m

Define o coeficiente de diferença (padrão: 2.5). 0.0 significa som mono (média dos dois canais); com 1.0, o som permanece inalterado; com -1.0, os canais esquerdo e direito são trocados.

c

Ativa o recorte (clipping). Por padrão, está ativado.

8.88.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.89 firequalizer

Aplica equalização FIR usando uma resposta em frequência arbitrária.

O filtro aceita a seguinte opção:

gain

Define a equação da curva de ganho (em dB). A expressão pode conter variáveis:

f

a frequência avaliada

sr

taxa de amostragem

ch

número do canal, definido como 0 quando a avaliação multicanal está desabilitada

chid

id do canal, veja libavutil/channel_layout.h, definido como o id do primeiro canal quando a avaliação multicanal está desabilitada

chs

número de canais

chlayout

channel_layout, veja libavutil/channel_layout.h

e funções:

gain_interpolate(f)

interpola o ganho na frequência f com base em gain_entry

cubic_interpolate(f)

igual a gain_interpolate, mas mais suave

Esta opção também está disponível como comando. O padrão é gain_interpolate(f).

gain_entry

Define a entrada de ganho para a função gain_interpolate. A expressão pode conter funções:

entry(f, g)

armazena uma entrada de ganho na frequência f com o valor g

Esta opção também está disponível como comando.

delay

Define o atraso do filtro em segundos. Quanto maior o valor, mais preciso. O padrão é 0.01.

accuracy

Define a precisão do filtro em Hz. Quanto menor o valor, mais preciso. O padrão é 5.

wfunc

Define a função de janela. Os valores aceitos são:

rectangular

janela retangular, útil quando a curva de ganho já é suave

hann

janela de Hann (padrão)

hamming

janela de Hamming

blackman

janela de Blackman

nuttall3

janela de Nuttall de 3 termos, contínua na 1ª derivada

mnuttall3

janela de Nuttall mínima de 3 termos, descontínua

nuttall

janela de Nuttall de 4 termos, contínua na 1ª derivada

bnuttall

janela de Nuttall mínima de 4 termos, descontínua (Blackman-Nuttall)

bharris

janela de Blackman-Harris

tukey

janela de Tukey

fixed

Se habilitado, usa um número fixo de amostras de áudio. Isso melhora a velocidade ao filtrar com um atraso grande. O padrão é desabilitado.

multi

Habilita a avaliação multicanal sobre o ganho. O padrão é desabilitado.

zero_phase

Habilita o modo de fase zero subtraindo a marca de tempo para compensar o atraso. O padrão é desabilitado.

scale

Define a escala usada pelo ganho. Os valores aceitos são:

linlin

frequência linear, ganho linear

linlog

frequência linear, ganho logarítmico (em dB) (padrão)

loglin

frequência logarítmica (em escala de oitavas em que 20 Hz é 0), ganho linear

loglog

frequência logarítmica, ganho logarítmico

dumpfile

Define o arquivo de despejo, adequado para o gnuplot.

dumpscale

Define a escala para dumpfile. Os valores aceitos são os mesmos da opção scale. O padrão é linlog.

fft2

Habilita a convolução de 2 canais usando FFT complexa. Isso melhora significativamente a velocidade. O padrão é desabilitado.

min_phase

Habilita a resposta ao impulso de fase mínima. O padrão é desabilitado.

8.89.1 Exemplos

  • passa-baixa a 1000 Hz:

    firequalizer=gain='if(lt(f,1000), 0, -INF)'
    
  • passa-baixa a 1000 Hz com gain_entry:

    firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
    
  • equalização personalizada:

    firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
    
  • atraso maior com fase zero para compensar o atraso:

    firequalizer=delay=0.1:fixed=on:zero_phase=on
    
  • passa-baixa no canal esquerdo, passa-alta no canal direito:

    firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
    :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
    

8.90 flanger

Aplica um efeito de flanger ao áudio.

O filtro aceita as seguintes opções:

delay

Define o atraso base em milissegundos. O intervalo vai de 0 a 30. O valor padrão é 0.

depth

Define o atraso de varredura adicionado em milissegundos. O intervalo vai de 0 a 10. O valor padrão é 2.

regen

Define a porcentagem de regeneração (realimentação do sinal atrasado). O intervalo vai de -95 a 95. O valor padrão é 0.

width

Define a porcentagem do sinal atrasado misturado com o original. O intervalo vai de 0 a 100. O valor padrão é 71.

speed

Define as varreduras por segundo (Hz). O intervalo vai de 0.1 a 10. O valor padrão é 0.5.

shape

Define a forma da onda de varredura: pode ser triangular ou sinusoidal. O valor padrão é sinusoidal.

phase

Define o deslocamento percentual da fase da onda de varredura para multicanal. O intervalo vai de 0 a 100. O valor padrão é 25.

interp

Define a interpolação da linha de atraso: linear ou quadratic. O padrão é linear.

8.91 haas

Aplica o efeito Haas ao áudio.

Observe que isso faz mais sentido quando aplicado a sinais mono. Com este filtro aplicado a sinais mono, ele confere alguma direcionalidade e amplia a imagem estéreo.

O filtro aceita as seguintes opções:

level_in

Define o nível de entrada. O padrão é 1, ou 0dB

level_out

Define o nível de saída. O padrão é 1, ou 0dB.

side_gain

Define o ganho aplicado à parte lateral do sinal. O padrão é 1.

middle_source

Define o tipo de fonte central. Pode ser uma das seguintes:

‘left’

Seleciona o canal esquerdo.

‘right’

Seleciona o canal direito.

‘mid’

Seleciona o sinal da parte central da imagem estéreo.

‘side’

Seleciona o sinal da parte lateral da imagem estéreo.

middle_phase

Altera a fase central. O padrão é desabilitado.

left_delay

Define o atraso do canal esquerdo. O padrão é 2.05 milissegundos.

left_balance

Define o balanço do canal esquerdo. O padrão é -1.

left_gain

Define o ganho do canal esquerdo. O padrão é 1.

left_phase

Altera a fase esquerda. O padrão é desabilitado.

right_delay

Define o atraso do canal direito. O padrão é 2.12 milissegundos.

right_balance

Define o balanço do canal direito. O padrão é 1.

right_gain

Define o ganho do canal direito. O padrão é 1.

right_phase

Altera a fase direita. O padrão é habilitado.

8.92 hdcd

Decodifica dados High Definition Compatible Digital (HDCD). Um fluxo PCM de 16 bits com códigos HDCD embutidos é expandido para um fluxo PCM de 20 bits.

O filtro é compatível com os recursos Peak Extend e Low-level Gain Adjustment do HDCD, e detecta a flag Transient Filter.

ffmpeg -i HDCD16.flac -af hdcd OUT24.flac

Ao usar o filtro com wav, observe que a codificação padrão do wav é de 16 bits; assim, o fluxo de 20 bits resultante será truncado de volta para 16 bits. Use algo como -acodec pcm_s24le após o filtro para obter uma saída PCM de 24 bits.

ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav

O filtro aceita as seguintes opções:

disable_autoconvert

Desabilita qualquer conversão automática de formato ou reamostragem no grafo de filtros.

process_stereo

Processa os canais estéreo juntos. Se target_gain não corresponder entre os canais, considera-o inválido e usa o último target_gain válido.

cdt_ms

Define o período do temporizador de detecção de código em ms.

force_pe

Sempre estende os picos acima de -3dBFS mesmo que PE não seja sinalizado.

analyze_mode

Substitui o áudio por um tom sólido e ajusta a amplitude para sinalizar algum aspecto específico do processo de decodificação. O arquivo de saída pode ser carregado em um editor de áudio ao lado do original para auxiliar a análise.

analyze_mode=pe:force_pe=true pode ser usado para ver todas as amostras acima do nível PE.

Os modos são:

‘0, off’

Desabilitado

‘1, lle’

Nível de ajuste de ganho em cada amostra

‘2, pe’

Amostras em que ocorre peak extend

‘3, cdt’

Amostras em que o temporizador de detecção de código está ativo

‘4, tgm’

Amostras em que target gain não corresponde entre os canais

8.93 headphone

Aplica funções de transferência relacionadas à cabeça (HRTFs) para criar alto-falantes virtuais ao redor do usuário, para escuta binaural via fones de ouvido. As HRIRs são fornecidas por meio de fluxos adicionais; para cada canal, é necessário um fluxo de entrada estéreo.

O filtro aceita as seguintes opções:

map

Define o mapeamento dos fluxos de entrada para a convolução. O argumento é uma lista de nomes de canais separados por ’|’, na ordem em que são fornecidos como entradas de fluxo adicionais do filtro. Isso também especifica o número de fluxos de entrada. O número de fluxos de entrada não deve ser menor que o número de canais do primeiro fluxo mais um.

gain

Define o ganho aplicado ao áudio. O valor está em dB. O padrão é 0.

type

Define o tipo de processamento. Pode ser time ou freq. time processa o áudio no domínio do tempo, o que é lento. freq processa o áudio no domínio da frequência, o que é rápido. O padrão é freq.

lfe

Define um ganho personalizado para os canais LFE. O valor está em dB. O padrão é 0.

size

Define o tamanho do quadro em número de amostras que serão processadas de uma vez. O valor padrão é 1024. O intervalo permitido é de 1024 a 96000.

hrir

Define o formato do fluxo hrir. O valor padrão é stereo. O valor alternativo é multich. Se o valor for definido como stereo, o número de fluxos adicionais deve ser maior ou igual ao número de canais de entrada do primeiro fluxo de entrada. Além disso, cada fluxo adicional deve ter dois canais (estéreo). Se o valor for definido como multich, o número de fluxos adicionais deve ser exatamente um. Além disso, o número de canais de entrada do fluxo adicional deve ser igual ou maior que o dobro do número de canais do primeiro fluxo de entrada.

8.93.1 Exemplos

  • Exemplo completo usando arquivos wav como coeficientes com filtros amovie para downmix 7.1; cada filtro amovie usa um arquivo estéreo com coeficientes de IR como entrada. Os arquivos fornecem os coeficientes para cada posição do alto-falante virtual:

    ffmpeg -i input.wav
    -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
    output.wav
    
  • Exemplo completo usando arquivos wav como coeficientes com filtros amovie para downmix 7.1, mas agora no formato hrir multich.

    ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
    output.wav
    

8.94 highpass

Aplica um filtro passa-alta com frequência de ponto de 3dB. O filtro pode ser de polo único ou de polo duplo (o padrão). A atenuação do filtro é de 6dB por polo por oitava (20dB por polo por década).

O filtro aceita as seguintes opções:

frequency, f

Define a frequência em Hz. O padrão é 3000.

poles, p

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

width_type, t

Define o método para especificar a largura de banda do filtro.

h

Hz

q

fator Q

o

oitava

s

inclinação

k

kHz

width, w

Especifica a largura de banda do filtro nas unidades de width_type. Aplica-se apenas ao filtro de polo duplo. O padrão é 0.707q e produz uma resposta Butterworth.

mix, m

Quanto do sinal filtrado é usado na saída. O padrão é 1. O intervalo vai de 0 a 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes biquad; por padrão, está desabilitado. Ao habilitar, normaliza a resposta de magnitude em DC para 0dB.

transform, a

Define o tipo de transformada do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Seleciona automaticamente o sample format, dependendo dos filtros surround.

s16

Sempre usa 16 bits com sinal.

s32

Sempre usa 32 bits com sinal.

f32

Sempre usa ponto flutuante de 32 bits.

f64

Sempre usa ponto flutuante de 64 bits.

block_size, b

Define o tamanho de bloco usado no processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada quando se aproxima de valores próximos de zero), a filtragem se tornará de fase linear; caso contrário, se não for grande o suficiente, produzirá apenas artefatos desagradáveis.

Observe que o atraso do filtro será exatamente esse número de amostras quando definido com um valor diferente de zero.

8.94.1 Comandos

Este filtro é compatível com os seguintes comandos:

frequency, f

Altera a frequência de highpass. A sintaxe do comando é: "frequency"

width_type, t

Altera o width_type de highpass. A sintaxe do comando é: "width_type"

width, w

Altera o width de highpass. A sintaxe do comando é: "width"

mix, m

Altera o mix de highpass. A sintaxe do comando é: "mix"

8.95 join

Une vários fluxos de entrada em um único fluxo multicanal.

Aceita os seguintes parâmetros:

inputs

O número de fluxos de entrada. O padrão é 2.

channel_layout

O layout de canais desejado para a saída. O padrão é stereo.

map

Mapeia canais das entradas para a saída. O argumento é uma lista de mapeamentos separados por ’|’, cada um no formato input_idx.in_channel-out_channel. input_idx é o índice, baseado em 0, do fluxo de entrada. in_channel pode ser o nome do canal de entrada (por exemplo, FL para frente esquerda) ou seu índice no fluxo de entrada especificado. out_channel é o nome do canal de saída.

O filtro tentará adivinhar os mapeamentos quando não forem especificados explicitamente. Para isso, primeiro tenta encontrar um canal de entrada correspondente não utilizado; se isso falhar, escolhe o primeiro canal de entrada não utilizado.

Une 3 entradas (com os layouts de canais definidos corretamente):

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT

Cria uma saída 5.1 a partir de 6 fluxos de canal único:

ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
out

8.96 ladspa

Carrega um plugin LADSPA (Linux Audio Developer’s Simple Plugin API).

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-ladspa.

file, f

Especifica o nome da biblioteca de plugins LADSPA a carregar. Se a variável de ambiente LADSPA_PATH estiver definida, o plugin LADSPA é procurado em cada um dos diretórios especificados na lista separada por dois-pontos em LADSPA_PATH; caso contrário, nos caminhos padrão do LADSPA, na seguinte ordem: HOME/.ladspa/lib/, /usr/local/lib/ladspa/, /usr/lib/ladspa/.

plugin, p

Especifica o plugin dentro da biblioteca. Algumas bibliotecas contêm apenas um plugin, mas outras contêm muitos. Se isso não for definido, o filtro listará todos os plugins disponíveis na biblioteca especificada.

controls, c

Define a lista de controls separados por ’|’, que são zero ou mais valores em ponto flutuante que determinam o comportamento do plugin carregado (por exemplo, delay, threshold ou gain). Os controls precisam ser definidos usando a seguinte sintaxe: c0=value0|c1=value1|c2=value2|..., em que valuei é o valor definido no i-ésimo control. Alternativamente, também podem ser definidos usando a seguinte sintaxe: value0|value1|value2|..., em que valuei é o valor definido no i-ésimo control. Se controls for definido como help, todos os controls disponíveis e seus intervalos válidos são exibidos.

sample_rate, s

Especifica a taxa de amostragem; o padrão é 44100. Usado apenas se o plugin não tiver entradas.

nb_samples, n

Define o número de amostras por canal em cada quadro de saída; o padrão é 1024. Usado apenas se o plugin não tiver entradas.

duration, d

Define a duração mínima do áudio de origem. Consulte (ffmpeg-utils)a seção Duração de tempo do manual ffmpeg-utils(1) para a sintaxe aceita. Observe que a duração resultante pode ser maior que a especificada, já que o áudio gerado é sempre cortado ao final de um quadro completo. Se não for especificada, ou se a duração expressa for negativa, presume-se que o áudio será gerado indefinidamente. Usado apenas se o plugin não tiver entradas.

latency, l

Habilita a compensação de latência; por padrão, está desabilitada. Usado apenas se o plugin tiver entradas.

8.96.1 Exemplos

  • Lista todos os plugins disponíveis na biblioteca amp (plugin de exemplo do LADSPA):

    ladspa=file=amp
    
  • Lista todos os controls disponíveis e seus intervalos válidos para o plugin vcf_notch da biblioteca VCF:

    ladspa=f=vcf:p=vcf_notch:c=help
    
  • Simula equipamento de áudio de baixa qualidade usando a biblioteca de plugins Computer Music Toolkit (CMT):

    ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
    
  • Adiciona reverberação ao áudio usando os TAP-plugins (Tom’s Audio Processing plugins):

    ladspa=file=tap_reverb:tap_reverb
    
  • Gera ruído branco, com amplitude 0.2:

    ladspa=file=cmt:noise_source_white:c=c0=.2
    
  • Gera cliques de 20 bpm usando o plugin C* Click - Metronome da biblioteca C* Audio Plugin Suite (CAPS):

    ladspa=file=caps:Click:c=c1=20'
    
  • Aplica o efeito C* Eq10X2 - Stereo 10-band equaliser:

    ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
    
  • Aumenta o volume em 20dB usando o fast lookahead limiter da coleção SWH Plugins de Steve Harris:

    ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
    
  • Atenua frequências baixas usando o Multiband EQ da coleção SWH Plugins de Steve Harris:

    ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
    
  • Reduz a imagem estéreo usando Narrower da biblioteca C* Audio Plugin Suite (CAPS):

    ladspa=caps:Narrower
    
  • Outro ruído branco, agora usando a biblioteca C* Audio Plugin Suite (CAPS):

    ladspa=caps:White:.2
    
  • Um pouco de ruído fractal, usando a biblioteca C* Audio Plugin Suite (CAPS):

    ladspa=caps:Fractal:c=c1=1
    
  • Normalização dinâmica de volume usando o plugin VLevel:

    ladspa=vlevel-ladspa:vlevel_mono
    

8.96.2 Comandos

Este filtro é compatível com os seguintes comandos:

cN

Modifica o valor do N-ésimo control.

Se o valor especificado não for válido, ele é ignorado e o valor anterior é mantido.

8.97 loudnorm

Normalização de loudness EBU R128. Inclui os modos de normalização dinâmica e linear. Compatível com os modos de passada única (transmissões ao vivo, arquivos) e de passada dupla (arquivos). Este algoritmo pode ter como alvo o IL, o LRA e o pico verdadeiro máximo. No modo dinâmico, para detectar os picos verdadeiros com precisão, o fluxo de áudio será sobreamostrado para 192 kHz. Use a opção -ar ou o filtro aresample para definir explicitamente uma taxa de amostragem de saída.

O filtro aceita as seguintes opções:

I, i

Define o alvo de loudness integrado. O intervalo é -70.0 - -5.0. O valor padrão é -24.0.

LRA, lra

Define o alvo de faixa de loudness. O intervalo é 1.0 - 50.0. O valor padrão é 7.0.

TP, tp

Define o pico verdadeiro máximo. O intervalo é -9.0 - +0.0. O valor padrão é -2.0.

measured_I, measured_i

IL medido do arquivo de entrada. O intervalo é -99.0 - +0.0.

measured_LRA, measured_lra

LRA medido do arquivo de entrada. O intervalo é 0.0 - 99.0.

measured_TP, measured_tp

Pico verdadeiro medido do arquivo de entrada. O intervalo é -99.0 - +99.0.

measured_thresh

Limiar medido do arquivo de entrada. O intervalo é -99.0 - +0.0.

offset

Define o ganho de offset. O ganho é aplicado antes do limitador de pico verdadeiro. O intervalo é -99.0 - +99.0. O padrão é +0.0.

linear

Normaliza escalando linearmente o áudio de origem. measured_I, measured_LRA, measured_TP e measured_thresh devem ser todos especificados. O LRA alvo não deve ser menor que o LRA de origem, e a mudança no loudness integrado não deve resultar em um pico verdadeiro que exceda o TP alvo. Se alguma dessas condições não for atendida, o modo de normalização reverterá para dinâmico. As opções são true ou false. O padrão é true.

dual_mono

Trata arquivos de entrada mono como "dual-mono". Se um arquivo mono for destinado à reprodução em um sistema estéreo, sua medição EBU R128 será perceptualmente incorreta. Se definido como true, esta opção compensará esse efeito. Arquivos de entrada multicanal não são afetados por esta opção. As opções são true ou false. O padrão é false.

print_format

Define o formato de impressão das estatísticas. As opções são summary, json ou none. O valor padrão é none.

stats_file

Grava as estatísticas no arquivo especificado. O formato é controlado por print_format, que deve estar definido. Especifique - para gravar na saída padrão. O padrão é não definido.

8.98 lowpass

Aplica um filtro passa-baixa com frequência de ponto de 3dB. O filtro pode ser de polo único ou de polo duplo (o padrão). A atenuação do filtro é de 6dB por polo por oitava (20dB por polo por década).

O filtro aceita as seguintes opções:

frequency, f

Define a frequência em Hz. O padrão é 500.

poles, p

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

width_type, t

Define o método para especificar a largura de banda do filtro.

h

Hz

q

fator Q

o

oitava

s

inclinação

k

kHz

width, w

Especifica a largura de banda do filtro nas unidades de width_type. Aplica-se apenas ao filtro de polo duplo. O padrão é 0.707q e produz uma resposta Butterworth.

mix, m

Quanto do sinal filtrado é usado na saída. O padrão é 1. O intervalo vai de 0 a 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes biquad; por padrão, está desabilitado. Ao habilitar, normaliza a resposta de magnitude em DC para 0dB.

transform, a

Define o tipo de transformada do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Seleciona automaticamente o sample format, dependendo dos filtros surround.

s16

Sempre usa 16 bits com sinal.

s32

Sempre usa 32 bits com sinal.

f32

Sempre usa ponto flutuante de 32 bits.

f64

Sempre usa ponto flutuante de 64 bits.

block_size, b

Define o tamanho de bloco usado no processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada quando se aproxima de valores próximos de zero), a filtragem se tornará de fase linear; caso contrário, se não for grande o suficiente, produzirá apenas artefatos desagradáveis.

Observe que o atraso do filtro será exatamente esse número de amostras quando definido com um valor diferente de zero.

8.98.1 Exemplos

  • Aplica passa-baixa somente ao canal LFE; se o LFE não estiver presente, não faz nada:
    lowpass=c=LFE
    

8.98.2 Comandos

Este filtro é compatível com os seguintes comandos:

frequency, f

Altera a frequência do passa-baixa. A sintaxe do comando é: "frequency"

width_type, t

Altera o width_type do passa-baixa. A sintaxe do comando é: "width_type"

width, w

Altera o width do passa-baixa. A sintaxe do comando é: "width"

mix, m

Altera o mix do passa-baixa. A sintaxe do comando é: "mix"

8.99 lv2

Carrega um plugin LV2 (LADSPA Version 2).

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-lv2.

plugin, p

Especifica o URI do plugin. Pode ser necessário fazer escape de ’:’.

controls, c

Define a lista de controls separados por ’|’, que são zero ou mais valores de ponto flutuante que determinam o comportamento do plugin carregado (por exemplo, delay, threshold ou gain). Se controls for definido como help, todos os controls disponíveis e seus intervalos válidos são exibidos.

sample_rate, s

Especifica a taxa de amostragem; o padrão é 44100. Usado somente se o plugin não tiver entradas.

nb_samples, n

Define o número de amostras por canal em cada quadro de saída; o padrão é 1024. Usado somente se o plugin não tiver entradas.

duration, d

Define a duração mínima do áudio de origem. Consulte (ffmpeg-utils)a seção Duração de tempo do manual ffmpeg-utils(1) para a sintaxe aceita. Observe que a duração resultante pode ser maior que a especificada, já que o áudio gerado é sempre cortado ao final de um quadro completo. Se não for especificada, ou se a duração expressa for negativa, presume-se que o áudio seja gerado indefinidamente. Usado somente se o plugin não tiver entradas.

8.99.1 Exemplos

  • Aplica o plugin bass enhancer da Calf:

    lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
    
  • Aplica o plugin vinyl da Calf:

    lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
    
  • Aplica o plugin bit crusher da ArtyFX:

    lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
    

8.99.2 Comandos

Este filtro é compatível com todas as opções que o plugin exporta como comandos.

8.100 mcompand

Comprime ou expande em múltiplas bandas a faixa dinâmica do áudio.

O áudio de entrada é dividido em bandas usando filtros IIR Linkwitz-Riley de 4ª ordem. Isso equivale ao crossover de um alto-falante e resulta em resposta de frequência plana quando não há ação do compander.

Aceita os seguintes parâmetros:

args

A sintaxe desta opção é: attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ... Para uma explicação de cada item, consulte a documentação do filtro compand.

8.101 pan

Mixa canais com níveis de ganho específicos. O filtro aceita o layout de canais de saída seguido de um conjunto de definições de canais.

Este filtro também foi projetado para remapear com eficiência os canais de um fluxo de áudio.

O filtro aceita parâmetros no formato: "l|outdef|outdef|..."

l

layout de canais de saída ou número de canais

outdef

especificação do canal de saída, no formato: "out_name=[gain]in_name[(+-)[gain]in_name...]"

out_name

canal de saída a ser definido, seja um nome de canal (FL, FR etc.) ou um número de canal (c0, c1 etc.)

gain

coeficiente multiplicativo do canal; 1 deixa o volume inalterado

in_name

canal de entrada a ser usado; consulte out_name para mais detalhes. Não é possível misturar canais de entrada nomeados e numerados

Se o ‘=’ em uma especificação de canal for substituído por ‘<’, os ganhos dessa especificação serão renormalizados de forma que o total seja 1, evitando assim o ruído de clipping.

8.101.1 Exemplos de mixagem

Por exemplo, se você quiser fazer o down-mix de estéreo para mono, mas com um fator maior para o canal esquerdo:

pan=1c|c0=0.9*c0+0.1*c1

Um down-mix personalizado para estéreo que funciona automaticamente para surround de 3, 4, 5 e 7 canais:

pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR

Observe que o ffmpeg integra um sistema padrão de down-mix (e up-mix) que deve ser preferido (consulte a opção "-ac"), a menos que você tenha necessidades muito específicas.

8.101.2 Exemplos de remapeamento

O remapeamento de canais será efetivo se, e somente se:

  • os coeficientes de ganho forem zeros ou uns,
  • houver apenas uma entrada por canal de saída,

Se todas essas condições forem satisfeitas, o filtro notificará o usuário ("Pure channel mapping detected") e usará um método otimizado e sem perdas para fazer o remapeamento.

Por exemplo, se você tiver uma fonte 5.1 e quiser um fluxo de áudio estéreo descartando os canais extras:

pan="stereo| c0=FL | c1=FR"

Com a mesma fonte, você também pode trocar os canais frontal esquerdo e frontal direito mantendo o layout de canais de entrada:

pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"

Se a entrada for um fluxo de áudio estéreo, você pode silenciar o canal frontal esquerdo (mantendo o layout de canais estéreo) com:

pan="stereo|c1=c1"

Ainda com uma entrada de fluxo de áudio estéreo, você pode copiar o canal direito tanto no frontal esquerdo quanto no direito:

pan="stereo| c0=FR | c1=FR"

8.102 replaygain

Filtro escâner de ReplayGain. Este filtro recebe um fluxo de áudio como entrada e o entrega sem alterações. Ao final da filtragem, exibe track_gain e track_peak.

O filtro aceita as seguintes opções exportadas somente leitura:

track_gain

Ganho da faixa exportado, em dB, ao final do fluxo.

track_peak

Pico da faixa exportado ao final do fluxo.

8.103 resample

Converte o sample format, a taxa de amostragem e o layout de canais do áudio. Não se destina a ser usado diretamente.

8.104 rubberband

Aplica time-stretching e pitch-shifting com a librubberband.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-librubberband.

O filtro aceita as seguintes opções:

tempo

Define o fator de escala do tempo.

pitch

Define o fator de escala do pitch.

transients

Define o detector de transientes. Os valores possíveis são:

crisp mixed smooth detector

Define o detector. Os valores possíveis são:

compound percussive soft phase

Define a fase. Os valores possíveis são:

laminar independent window

Define o tamanho da janela de processamento. Os valores possíveis são:

standard short long smoothing

Define o smoothing. Os valores possíveis são:

off on formant

Habilita a preservação do formante ao deslocar o pitch. Os valores possíveis são:

shifted preserved pitchq

Define a qualidade do pitch. Os valores possíveis são:

quality speed consistency channels

Define os canais. Os valores possíveis são:

apart together

8.104.1 Comandos

Este filtro é compatível com os seguintes comandos:

tempo

Altera o fator de escala do tempo do filtro. A sintaxe do comando é: "tempo"

pitch

Altera o fator de escala do pitch do filtro. A sintaxe do comando é: "pitch"

8.105 sidechaincompress

Este filtro age como um compressor normal, mas tem a capacidade de comprimir o sinal detectado usando um segundo sinal de entrada. Precisa de dois fluxos de entrada e retorna um fluxo de saída. O primeiro fluxo de entrada é processado em função do sinal do segundo fluxo. O sinal filtrado resultante pode então ser filtrado com outros filtros em etapas posteriores do processamento. Consulte os filtros pan e amerge.

O filtro aceita as seguintes opções:

level_in

Define o ganho de entrada. O padrão é 1. O intervalo vai de 0.015625 a 64.

mode

Define o modo de operação do compressor. Pode ser upward ou downward. O padrão é downward.

threshold

Se o sinal do segundo fluxo ultrapassar esse nível, afetará a redução de ganho do primeiro fluxo. O padrão é 0.125. O intervalo vai de 0.00097563 a 1.

ratio

Define a proporção pela qual o sinal é reduzido. 1:2 significa que, se o nível subir 4dB acima do threshold, ficará apenas 2dB acima após a redução. O padrão é 2. O intervalo vai de 1 a 20.

attack

Quantidade de milissegundos que o sinal precisa ficar acima do threshold antes que a redução de ganho comece. O padrão é 20. O intervalo vai de 0.01 a 2000.

release

Quantidade de milissegundos que o sinal precisa ficar abaixo do threshold antes que a redução volte a diminuir. O padrão é 250. O intervalo vai de 0.01 a 9000.

makeup

Define o quanto o sinal será amplificado após o processamento. O padrão é 1. O intervalo vai de 1 a 64.

knee

Curva o knee abrupto ao redor do threshold para entrar na redução de ganho de forma mais suave. O padrão é 2.82843. O intervalo vai de 1 a 8.

link

Escolhe se a redução é afetada pelo nível average (médio) entre todos os canais do fluxo de sidechain ou pelo canal mais alto (maximum) desse fluxo. O padrão é average.

detection

Se deve ser considerado o sinal exato, no caso de peak, ou um sinal RMS, no caso de rms. O padrão é rms, que costuma ser mais suave.

level_sc

Define o ganho do sidechain. O padrão é 1. O intervalo vai de 0.015625 a 64.

mix

Quanto do sinal comprimido usar na saída. O padrão é 1. O intervalo vai de 0 a 1.

8.105.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.105.2 Exemplos

  • Exemplo completo com o ffmpeg usando 2 entradas de áudio: a 1ª entrada é comprimida em função do sinal da 2ª, e o sinal comprimido resultante é depois mesclado com a 2ª entrada:
    ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
    

8.106 sidechaingate

Um sidechain gate age como um gate normal (de banda larga), mas tem a capacidade de filtrar o sinal detectado antes de enviá-lo ao estágio de redução de ganho. Normalmente, um gate usa o sinal de faixa completa para detectar um nível acima do threshold. Por exemplo: se você cortar todas as frequências graves do seu sinal de sidechain, o gate reduzirá o volume da sua faixa somente se os agudos não aparecerem o suficiente. Com essa técnica, é possível reduzir a ressonância de uma bateria acústica ou remover o "ronco" de batidas abafadas de uma guitarra muito distorcida. Precisa de dois fluxos de entrada e retorna um fluxo de saída. O primeiro fluxo de entrada é processado em função do sinal do segundo fluxo.

O filtro aceita as seguintes opções:

level_in

Define o nível de entrada antes da filtragem. O padrão é 1. O intervalo permitido vai de 0.015625 a 64.

mode

Define o modo de operação. Pode ser upward ou downward. O padrão é downward. Se definido como modo upward, as partes mais altas do sinal são amplificadas, expandindo a faixa dinâmica para cima. Caso contrário, no modo downward, as partes mais baixas do sinal são reduzidas.

range

Define o nível de redução de ganho quando o sinal está abaixo do threshold. O padrão é 0.06125. O intervalo permitido vai de 0 a 1. Definir isso como 0 desativa a redução, e o filtro passa a se comportar como um expansor.

threshold

Se um sinal ultrapassar esse nível, a redução de ganho é liberada. O padrão é 0.125. O intervalo permitido vai de 0 a 1.

ratio

Define a proporção pela qual o sinal é reduzido. O padrão é 2. O intervalo permitido vai de 1 a 9000.

attack

Quantidade de milissegundos que o sinal precisa ficar acima do threshold antes que a redução de ganho pare. O padrão é 20 milissegundos. O intervalo permitido vai de 0.01 a 9000.

release

Quantidade de milissegundos que o sinal precisa ficar abaixo do threshold antes que a redução volte a aumentar. O padrão é 250 milissegundos. O intervalo permitido vai de 0.01 a 9000.

makeup

Define a quantidade de amplificação do sinal após o processamento. O padrão é 1. O intervalo permitido vai de 1 a 64.

knee

Curva o knee abrupto ao redor do threshold para entrar na redução de ganho de forma mais suave. O padrão é 2.828427125. O intervalo permitido vai de 1 a 8.

detection

Escolhe se o sinal exato deve ser usado para a detecção ou um do tipo RMS. O padrão é rms. Pode ser peak ou rms.

link

Escolhe se a redução é afetada pelo nível médio entre todos os canais ou pelo canal mais alto. O padrão é average. Pode ser average ou maximum.

level_sc

Define o ganho do sidechain. O padrão é 1. O intervalo vai de 0.015625 a 64.

8.106.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.107 silencedetect

Detecta silêncio em um fluxo de áudio.

Este filtro registra uma mensagem quando detecta que o volume do áudio de entrada é menor ou igual a um valor de tolerância de ruído por uma duração maior ou igual à duração mínima de ruído detectado.

Os tempos e a duração exibidos são expressos em segundos. A chave de metadados lavfi.silence_start ou lavfi.silence_start.X é definida no primeiro quadro cuja marca de tempo atinja ou ultrapasse a duração de detecção, e contém a marca de tempo do primeiro quadro do silêncio.

As chaves de metadados lavfi.silence_duration ou lavfi.silence_duration.X e lavfi.silence_end ou lavfi.silence_end.X são definidas no primeiro quadro após o silêncio. Se mono estiver habilitado e cada canal for avaliado separadamente, as chaves com sufixo .X são usadas, e X corresponde ao número do canal.

O filtro aceita as seguintes opções:

noise, n

Define a tolerância de ruído. Pode ser especificada em dB (caso "dB" seja acrescentado ao valor especificado) ou como razão de amplitude. O padrão é -60dB, ou 0.001.

duration, d

Define a duração do silêncio até a notificação (o padrão é 2 segundos). Consulte (ffmpeg-utils)a seção Duração de tempo do manual ffmpeg-utils(1) para a sintaxe aceita.

mono, m

Processa cada canal separadamente, em vez de combinados. Desativado por padrão.

8.107.1 Exemplos

  • Detecta 5 segundos de silêncio com tolerância de ruído de -50dB:

    silencedetect=n=-50dB:d=5
    
  • Exemplo completo com ffmpeg para detectar silêncio com tolerância de ruído de 0.0001 em silence.mp3:

    ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
    

8.108 silenceremove

Remove o silêncio do início, meio ou fim do áudio.

O filtro aceita as seguintes opções:

start_periods

Este valor é usado para indicar se o áudio deve ser cortado no início. Um valor zero indica que nenhum silêncio deve ser cortado do início. Ao especificar um valor diferente de zero, o áudio é cortado até que se encontre um trecho sem silêncio. Normalmente, ao cortar o silêncio do início do áudio, start_periods será 1, mas pode ser aumentado para valores mais altos para cortar todo o áudio até uma contagem específica de períodos sem silêncio. O valor padrão é 0.

start_duration

Especifica o tempo que precisa ser detectado sem silêncio antes que o corte do áudio pare. Ao aumentar a duração, rajadas de ruído podem ser tratadas como silêncio e cortadas. O valor padrão é 0.

start_threshold

Isso indica qual valor de amostra deve ser tratado como silêncio. Para áudio digital, um valor 0 costuma ser adequado, mas para áudio gravado a partir de fonte analógica, pode ser interessante aumentar o valor para considerar o ruído de fundo. Pode ser especificado em dB (caso "dB" seja acrescentado ao valor especificado) ou como razão de amplitude. O valor padrão é 0.

start_silence

Especifica a duração máxima de silêncio no início que será mantida após o corte. O padrão é 0, o que equivale a cortar todas as amostras detectadas como silêncio.

start_mode

Especifica o modo de detecção do fim do silêncio no início de um áudio multicanal. Pode ser any ou all. O padrão é any. Com any, qualquer amostra de qualquer canal detectada como não silêncio dispara o fim do corte de silêncio no início do fluxo de áudio. Com all, o fim do corte de silêncio no início do fluxo de áudio só é disparado se todas as amostras de todos os canais forem detectadas como não silêncio; uso limitado.

stop_periods

Define a contagem para cortar o silêncio do final do áudio. Ao especificar um valor positivo, o áudio é cortado após ser encontrado o período de silêncio especificado. Para remover silêncio do meio de um arquivo, especifique um stop_periods negativo. Esse valor é então tratado como positivo e usado para indicar que o efeito deve reiniciar o processamento conforme especificado por stop_periods, o que o torna adequado para remover períodos de silêncio no meio do áudio. O valor padrão é 0.

stop_duration

Especifica uma duração de silêncio que precisa existir antes que o áudio deixe de ser copiado. Ao especificar uma duração maior, o silêncio desejado pode ser deixado no áudio. O valor padrão é 0.

stop_threshold

É o mesmo que start_threshold, mas para cortar o silêncio do final do áudio. Pode ser especificado em dB (caso "dB" seja acrescentado ao valor especificado) ou como razão de amplitude. O valor padrão é 0.

stop_silence

Especifica a duração máxima de silêncio no final que será mantida após o corte. O padrão é 0, o que equivale a cortar todas as amostras detectadas como silêncio.

stop_mode

Especifica o modo de detecção do início do silêncio após o começo de um áudio multicanal. Pode ser any ou all. O padrão é all. Com any, qualquer amostra de qualquer canal detectada como silêncio dispara o início do corte de silêncio após o começo do fluxo de áudio; uso limitado. Com all, o início do corte de silêncio após o começo do fluxo de áudio só é disparado se todas as amostras de todos os canais forem detectadas como silêncio.

detection

Define como o silêncio é detectado.

avg

Média dos valores absolutos das amostras em uma janela móvel.

rms

Raiz quadrada da média dos valores absolutos das amostras em uma janela móvel.

peak

Máximo dos valores absolutos das amostras em uma janela móvel.

median

Mediana dos valores absolutos das amostras em uma janela móvel.

ptp

Valor absoluto da diferença entre o pico máximo e o pico mínimo das amostras em uma janela móvel.

dev

Desvio padrão dos valores das amostras em uma janela móvel.

O valor padrão é rms.

window

Define a duração em número de segundos usada para calcular o tamanho da janela, em número de amostras, para detectar o silêncio. Usar 0 desativa efetivamente qualquer janelamento e usa apenas uma única amostra por canal para a detecção de silêncio. Nesse caso, pode ser necessário também definir start_silence e/ou stop_silence com valores diferentes de zero, junto com start_duration e/ou stop_duration também diferentes de zero. O valor padrão é 0.02. O intervalo permitido vai de 0 a 10.

timestamp

Define o modo de processamento da marca de tempo de saída de cada quadro de áudio.

write

Reescreve totalmente as marcas de tempo, mantendo apenas o tempo de início para o primeiro quadro de saída.

copy

Os quadros não descartados permanecem com a mesma marca de tempo do quadro de áudio de entrada.

O valor padrão é write.

8.108.1 Exemplos

  • O exemplo a seguir mostra como este filtro pode ser usado para iniciar uma gravação que não contenha o atraso inicial que costuma ocorrer entre pressionar o botão de gravação e o início da apresentação:

    silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
    
  • Corta todo o silêncio encontrado do início ao fim onde houver mais de 1 segundo de silêncio no áudio:

    silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
    
  • Corta todas as amostras de silêncio digital, usando detecção de peak, do início ao fim onde houver mais de 0 amostras de silêncio digital no áudio e o silêncio digital for detectado em todos os canais nas mesmas posições do fluxo:

    silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
    
  • Corta cada 2º período de silêncio encontrado, do início ao fim, onde houver mais de 1 segundo de silêncio por período de silêncio no áudio:

    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB
    
  • Semelhante ao anterior, mas mantendo no máximo 0.5 segundos de silêncio de cada período cortado:

    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5
    
  • Semelhante ao anterior, mas mantendo no máximo 1.5 segundos de silêncio a partir do início do áudio:

    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5:start_periods=1:start_duration=1:start_silence=1.5:stop_threshold=-90dB
    

8.108.2 Comandos

Este filtro é compatível com algumas das opções acima como comandos.

8.109 sofalizer

O SOFAlizer usa funções de transferência relacionadas à cabeça (HRTFs) para criar alto-falantes virtuais ao redor do usuário para escuta binaural por meio de fones de ouvido (compatível com formatos de áudio de até 9 canais). As HRTFs são armazenadas em arquivos SOFA (veja http://www.sofacoustics.org/ para um banco de dados). O SOFAlizer é desenvolvido no Acoustics Research Institute (ARI) da Austrian Academy of Sciences.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libmysofa.

O filtro aceita as seguintes opções:

sofa

Define o arquivo SOFA usado para a renderização.

gain

Define o ganho aplicado ao áudio. O valor é em dB. O padrão é 0.

rotation

Define a rotação dos alto-falantes virtuais em graus. O padrão é 0.

elevation

Define a elevação dos alto-falantes virtuais em graus. O padrão é 0.

radius

Define a distância em metros entre os alto-falantes e o ouvinte, com HRTFs de campo próximo. O padrão é 1.

type

Define o tipo de processamento. Pode ser time ou freq. time processa o áudio no domínio do tempo, o que é lento. freq processa o áudio no domínio da frequência, o que é rápido. O padrão é freq.

speakers

Define posições personalizadas dos alto-falantes virtuais. A sintaxe desta opção é: [| |...]. Cada alto-falante virtual é descrito com o nome curto do canal seguido do azimute e da elevação em graus. Cada descrição de alto-falante virtual é separada por ’|’. Por exemplo, para sobrescrever as posições dos canais frontal esquerdo e frontal direito, use: ’speakers=FL 45 15|FR 345 15’. Descrições com nomes de canal não reconhecidos são ignoradas.

lfegain

Define um ganho personalizado para os canais LFE. O valor é em dB. O padrão é 0.

framesize

Define um tamanho de quadro personalizado em número de amostras. O padrão é 1024. O intervalo permitido vai de 1024 a 96000. Usado somente se a opção ‘type’ estiver definida como freq.

normalize

Indica se todas as IRs devem ser normalizadas ao importar o arquivo SOFA. Habilitado por padrão.

interpolate

Indica se as IRs mais próximas devem ser interpoladas com as IRs vizinhas quando a posição exata não corresponder. Desativado por padrão.

minphase

Aplica fase mínima a todas as IRs ao carregar o arquivo SOFA. Desativado por padrão.

anglestep

Define o passo angular de busca de vizinhos. Usado somente se a opção interpolate estiver habilitada.

radstep

Define o passo radial de busca de vizinhos. Usado somente se a opção interpolate estiver habilitada.

8.109.1 Exemplos

  • Usando o arquivo sofa ClubFritz6:

    sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
    
  • Usando o arquivo sofa ClubFritz12 com raio maior e uma pequena rotação:

    sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
    
  • Semelhante ao anterior, mas com posições de alto-falante personalizadas para frontal esquerdo, frontal direito, traseiro esquerdo e traseiro direito, além de ganho personalizado:

    "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
    

8.110 speechnorm

Normalizador de voz.

Este filtro expande ou comprime cada semiciclo de amostras de áudio (conjunto local de amostras todas acima ou todas abaixo de zero, situado entre os dois cruzamentos de zero mais próximos) em função do valor de threshold, de modo que o áudio alcance o valor de pico alvo sob as condições controladas pelas opções abaixo.

O filtro aceita as seguintes opções:

peak, p

Define o valor de pico alvo da expansão. Especifica o nível de amplitude absoluta mais alto permitido para o áudio de entrada normalizado. O valor padrão é 0.95. O intervalo permitido vai de 0.0 a 1.0.

expansion, e

Define o fator máximo de expansão. O intervalo permitido vai de 1.0 a 50.0. O valor padrão é 2.0. Esta opção controla a expansão máxima do semiciclo local de amostras. A expansão máxima seria tal que o valor de pico local alcance o valor de pico alvo, mas nunca o ultrapasse, e que a razão entre o valor de pico novo e o anterior não ultrapasse o valor desta opção.

compression, c

Define o fator máximo de compressão. O intervalo permitido vai de 1.0 a 50.0. O valor padrão é 2.0. Esta opção controla a compressão máxima do semiciclo local de amostras. É usada somente se a opção threshold estiver definida com um valor maior que 0.0; nesse caso, quando o pico local for menor ou igual ao valor definido por threshold, todas as amostras pertencentes ao semiciclo desse pico são comprimidas pelo fator de compressão atual.

threshold, t

Define o valor de threshold. O valor padrão é 0.0. O intervalo permitido vai de 0.0 a 1.0. Esta opção especifica quais semiciclos de amostras serão comprimidos e quais serão expandidos. Qualquer semiciclo de amostras cujo valor de pico local seja menor ou igual ao valor desta opção é comprimido pelo fator de compressão atual; caso contrário, se maior que o valor de threshold, é expandido com o fator de expansão de modo que possa alcançar o valor de pico alvo, mas nunca o ultrapasse.

raise, r

Define a quantidade de aumento da expansão por cada semiciclo de amostras. O valor padrão é 0.001. O intervalo permitido vai de 0.0 a 1.0. Isso controla a rapidez com que o fator de expansão aumenta a cada novo semiciclo até alcançar o valor de expansion. Definir esta opção muito alta pode causar distorções.

fall, f

Define a quantidade de aumento da compressão por cada semiciclo de amostras. O valor padrão é 0.001. O intervalo permitido vai de 0.0 a 1.0. Isso controla a rapidez com que o fator de compressão aumenta a cada novo semiciclo até alcançar o valor de compression.

channels, h

Especifica quais canais filtrar; por padrão, todos os canais disponíveis são filtrados.

invert, i

Habilita a filtragem invertida; desativada por padrão. Isso inverte a interpretação da opção threshold. Quando habilitada, qualquer semiciclo de amostras cujo valor de pico local seja menor ou igual à opção threshold é expandido; caso contrário, é comprimido.

link, l

Vincula os canais ao calcular o ganho aplicado a cada amostra de canal filtrado; desativado por padrão. Quando desativado, o cálculo de ganho de cada canal filtrado é independente; quando esta opção é habilitada, é usado o mínimo entre todos os ganhos possíveis para cada canal filtrado.

rms, m

Define o valor de RMS alvo da expansão. Especifica o nível de RMS mais alto permitido para o áudio de entrada normalizado. O valor padrão é 0.0, portanto desativado. O intervalo permitido vai de 0.0 a 1.0.

8.110.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.110.2 Exemplos

  • Amplificação fraca e lenta:

    speechnorm=e=3:r=0.00001:l=1
    
  • Amplificação moderada e lenta:

    speechnorm=e=6.25:r=0.00001:l=1
    
  • Amplificação forte e rápida:

    speechnorm=e=12.5:r=0.0001:l=1
    
  • Amplificação muito forte e rápida:

    speechnorm=e=25:r=0.0001:l=1
    
  • Amplificação extrema e rápida:

    speechnorm=e=50:r=0.0001:l=1
    

8.111 stereotools

Este filtro traz alguns utilitários práticos para gerenciar sinais estéreo, tanto para converter gravações estéreo M/S em sinal L/R com controle sobre os parâmetros quanto para ampliar a imagem estéreo da faixa master.

O filtro aceita as seguintes opções:

level_in

Define o nível de entrada antes da filtragem para ambos os canais. O padrão é 1. O intervalo permitido vai de 0.015625 a 64.

level_out

Define o nível de saída após a filtragem para ambos os canais. O padrão é 1. O intervalo permitido vai de 0.015625 a 64.

balance_in

Define o balanço de entrada entre ambos os canais. O padrão é 0. O intervalo permitido vai de -1 a 1.

balance_out

Define o balanço de saída entre ambos os canais. O padrão é 0. O intervalo permitido vai de -1 a 1.

softclip

Habilita o softclipping. Resulta em distorção analógica em vez do clipping digital abrupto de 0dB. Desativado por padrão.

mutel

Silencia o canal esquerdo. Desativado por padrão.

muter

Silencia o canal direito. Desativado por padrão.

phasel

Altera a fase do canal esquerdo. Desativado por padrão.

phaser

Altera a fase do canal direito. Desativado por padrão.

mode

Define o modo estéreo. Os valores disponíveis são:

‘lr>lr’

Left/Right para Left/Right; este é o padrão.

‘lr>ms’

Left/Right para Mid/Side.

‘ms>lr’

Mid/Side para Left/Right.

‘lr>ll’

Left/Right para Left/Left.

‘lr>rr’

Left/Right para Right/Right.

‘lr>l+r’

Left/Right para Left + Right.

‘lr>rl’

Left/Right para Right/Left.

‘ms>ll’

Mid/Side para Left/Left.

‘ms>rr’

Mid/Side para Right/Right.

‘ms>rl’

Mid/Side para Right/Left.

‘lr>l-r’

Left/Right para Left - Right.

slev

Define o nível do sinal lateral (side). O padrão é 1. O intervalo permitido vai de 0.015625 a 64.

sbal

Define o balanço do sinal lateral (side). O padrão é 0. O intervalo permitido vai de -1 a 1.

mlev

Define o nível do sinal central (middle). O padrão é 1. O intervalo permitido vai de 0.015625 a 64.

mpan

Define o pan do sinal central (middle). O padrão é 0. O intervalo permitido vai de -1 a 1.

base

Define a base estéreo entre canais mono e invertidos. O padrão é 0. O intervalo permitido vai de -1 a 1.

delay

Define o atraso em milissegundos entre o canal esquerdo e o direito, e vice-versa. O padrão é 0. O intervalo permitido vai de -20 a 20.

sclevel

Define o nível S/C. O padrão é 1. O intervalo permitido vai de 1 a 100.

phase

Define a fase estéreo em graus. O padrão é 0. O intervalo permitido vai de 0 a 360.

bmode_in, bmode_out

Define o modo de balanço para a opção balance_in/balance_out.

Pode ser um dos seguintes:

‘balance’

Modo de balanço clássico. Atenua um canal por vez. O ganho é elevado até 1.

‘amplitude’

Semelhante ao modo clássico acima, mas o ganho é elevado até 2.

‘power’

Distribuição de potência igual, no intervalo de -6dB a +6dB.

8.111.1 Comandos

Este filtro aceita todas as opções acima como comandos.

8.111.2 Exemplos

  • Aplica um efeito semelhante a karaokê:

    stereotools=mlev=0.015625
    
  • Converte um sinal M/S em L/R:

    "stereotools=mode=ms>lr"
    

8.112 stereowiden

Este filtro amplia o efeito estéreo suprimindo o sinal comum a ambos os canais e atrasando o sinal do canal esquerdo para o direito e vice-versa, ampliando assim o efeito estéreo.

O filtro aceita as seguintes opções:

delay

Tempo em milissegundos do atraso do sinal esquerdo para o direito e vice-versa. O padrão é 20 milissegundos.

feedback

Quantidade de ganho no sinal atrasado para o direito e vice-versa. Produz um efeito de atraso do sinal esquerdo na saída direita e vice-versa, o que gera o efeito de ampliação. O padrão é 0.3.

crossfeed

Mistura cruzada (crossfeed) do sinal esquerdo para o direito com fase invertida. Isso ajuda a suprimir o sinal mono. Se o valor for 1, cancelará todo o sinal comum a ambos os canais. O padrão é 0.3.

drymix

Define o nível do sinal de entrada do canal original. O padrão é 0.8.

8.112.1 Comandos

Este filtro aceita todas as opções acima, exceto delay, como comandos.

8.113 superequalizer

Aplica um equalizador de 18 bandas.

O filtro aceita as seguintes opções:

1b

Define o ganho da banda de 65Hz.

2b

Define o ganho da banda de 92Hz.

3b

Define o ganho da banda de 131Hz.

4b

Define o ganho da banda de 185Hz.

5b

Define o ganho da banda de 262Hz.

6b

Define o ganho da banda de 370Hz.

7b

Define o ganho da banda de 523Hz.

8b

Define o ganho da banda de 740Hz.

9b

Define o ganho da banda de 1047Hz.

10b

Define o ganho da banda de 1480Hz.

11b

Define o ganho da banda de 2093Hz.

12b

Define o ganho da banda de 2960Hz.

13b

Define o ganho da banda de 4186Hz.

14b

Define o ganho da banda de 5920Hz.

15b

Define o ganho da banda de 8372Hz.

16b

Define o ganho da banda de 11840Hz.

17b

Define o ganho da banda de 16744Hz.

18b

Define o ganho da banda de 20000Hz.

8.114 surround

Aplica um filtro de upmix surround de áudio.

Este filtro permite produzir uma saída multicanal a partir de um fluxo de áudio.

O filtro aceita as seguintes opções:

chl_out

Define o layout de canais de saída. Por padrão, é 5.1.

Consulte (ffmpeg-utils) a seção Layout de canais do manual ffmpeg-utils(1) para conhecer a sintaxe necessária.

chl_in

Define o layout de canais de entrada. Por padrão, é estéreo.

Consulte (ffmpeg-utils) a seção Layout de canais do manual ffmpeg-utils(1) para conhecer a sintaxe necessária.

level_in

Define o nível de volume de entrada. Por padrão, é 1.

level_out

Define o nível de volume de saída. Por padrão, é 1.

lfe

Ativa a saída do canal LFE se o layout de canais de saída o incluir. Por padrão, está ativado.

lfe_low

Define a frequência de corte inferior do LFE. Por padrão, é 128 Hz.

lfe_high

Define a frequência de corte superior do LFE. Por padrão, é 256 Hz.

lfe_mode

Define o modo do LFE, que pode ser add ou sub. O padrão é add. No modo add, o canal LFE é criado a partir do áudio de entrada e adicionado à saída. No modo sub, o canal LFE também é criado a partir do áudio de entrada e adicionado à saída, mas além disso todos os canais de saída que não são LFE são subtraídos pelo canal LFE de saída.

smooth

Define a intensidade da suavização temporal, usada para alterar gradualmente os fatores ao transformar o som estéreo ao longo do tempo. O intervalo permitido vai de 0.0 a 1.0. Útil para melhorar a qualidade de saída com valores da opção focus maiores que 0.0. O padrão é 0.0. Somente valores dentro desse intervalo e sem os extremos são efetivos.

angle

Define o ângulo da transformação surround estéreo. O intervalo permitido vai de 0 a 360. O padrão é 90.

focus

Define o foco da transformação surround estéreo. O intervalo permitido vai de -1 a 1. O padrão é 0.

fc_in

Define o volume de entrada do canal central frontal. Por padrão, é 1.

fc_out

Define o volume de saída do canal central frontal. Por padrão, é 1.

fl_in

Define o volume de entrada do canal frontal esquerdo. Por padrão, é 1.

fl_out

Define o volume de saída do canal frontal esquerdo. Por padrão, é 1.

fr_in

Define o volume de entrada do canal frontal direito. Por padrão, é 1.

fr_out

Define o volume de saída do canal frontal direito. Por padrão, é 1.

sl_in

Define o volume de entrada do canal lateral esquerdo. Por padrão, é 1.

sl_out

Define o volume de saída do canal lateral esquerdo. Por padrão, é 1.

sr_in

Define o volume de entrada do canal lateral direito. Por padrão, é 1.

sr_out

Define o volume de saída do canal lateral direito. Por padrão, é 1.

bl_in

Define o volume de entrada do canal traseiro esquerdo. Por padrão, é 1.

bl_out

Define o volume de saída do canal traseiro esquerdo. Por padrão, é 1.

br_in

Define o volume de entrada do canal traseiro direito. Por padrão, é 1.

br_out

Define o volume de saída do canal traseiro direito. Por padrão, é 1.

bc_in

Define o volume de entrada do canal central traseiro. Por padrão, é 1.

bc_out

Define o volume de saída do canal central traseiro. Por padrão, é 1.

lfe_in

Define o volume de entrada do LFE. Por padrão, é 1.

lfe_out

Define o volume de saída do LFE. Por padrão, é 1.

allx

Define o uso de espalhamento da imagem estéreo pelo eixo X para todos os canais. O intervalo permitido vai de -1 a 15. Por padrão, esse valor é -1 (negativo) e, portanto, não é usado.

ally

Define o uso de espalhamento da imagem estéreo pelo eixo Y para todos os canais. O intervalo permitido vai de -1 a 15. Por padrão, esse valor é -1 (negativo) e, portanto, não é usado.

fcx, flx, frx, blx, brx, slx, srx, bcx

Define o uso de espalhamento da imagem estéreo pelo eixo X para cada canal. O intervalo permitido vai de 0.06 a 15. Por padrão, esse valor é 0.5.

fcy, fly, fry, bly, bry, sly, sry, bcy

Define o uso de espalhamento da imagem estéreo pelo eixo Y para cada canal. O intervalo permitido vai de 0.06 a 15. Por padrão, esse valor é 0.5.

win_size

Define o tamanho da janela. O intervalo permitido vai de 1024 a 65536. O tamanho padrão é 4096.

win_func

Define a função de janela.

Aceita os seguintes valores:

‘rect’ ‘bartlett’ ‘hann, hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’

O padrão é hann.

overlap

Define a sobreposição da janela. Se definido como 1, será escolhida a sobreposição recomendada para a função de janela selecionada. O padrão é 0.5.

8.115 tiltshelf

Aumenta ou corta as frequências baixas e corta ou aumenta as frequências altas do áudio usando um filtro shelving de dois polos com uma resposta semelhante à dos controles de tom de um equipamento hi-fi padrão. Isso também é conhecido como equalização shelving (EQ).

O filtro aceita as seguintes opções:

gain, g

Especifica o ganho em 0 Hz. Seu intervalo útil vai de aproximadamente -20 (para um grande corte) a +20 (para um grande aumento). Cuidado com o recorte (clipping) ao usar um ganho positivo.

frequency, f

Define a frequência central do filtro, podendo ser usada para ampliar ou reduzir o intervalo de frequências a ser aumentado ou cortado. O valor padrão é 3000 Hz.

width_type, t

Define o método para especificar a largura de banda do filtro.

h

Hz

q

Fator Q

o

oitava

s

inclinação

k

kHz

width, w

Determina a inclinação da transição shelf do filtro.

poles, p

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

mix, m

Quanto do sinal filtrado é usado na saída. O padrão é 1. O intervalo é entre 0 e 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes biquad; desativado por padrão. Ao habilitá-lo, a resposta de magnitude em DC é normalizada para 0dB.

transform, a

Define o tipo de transformação do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Escolhe automaticamente o sample format de acordo com os filtros surround.

s16

Usa sempre 16 bits com sinal.

s32

Usa sempre 32 bits com sinal.

f32

Usa sempre ponto flutuante de 32 bits.

f64

Usa sempre ponto flutuante de 64 bits.

block_size, b

Define o tamanho do bloco usado para o processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada ao chegar perto de valores próximos de zero), a filtragem se tornará de fase linear; caso contrário, se não for grande o suficiente, produzirá apenas artefatos desagradáveis.

Observe que o atraso do filtro será exatamente essa quantidade de amostras quando definido como um valor diferente de zero.

8.115.1 Comandos

Este filtro é compatível com algumas opções como comandos.

8.116 treble, highshelf

Aumenta ou corta as frequências agudas (altas) do áudio usando um filtro shelving de dois polos com uma resposta semelhante à dos controles de tom de um equipamento hi-fi padrão. Isso também é conhecido como equalização shelving (EQ).

O filtro aceita as seguintes opções:

gain, g

Especifica o ganho no valor que for menor entre ~22 kHz e a frequência de Nyquist. Seu intervalo útil vai de aproximadamente -20 (para um grande corte) a +20 (para um grande aumento). Cuidado com o recorte (clipping) ao usar um ganho positivo.

frequency, f

Define a frequência central do filtro, podendo ser usada para ampliar ou reduzir o intervalo de frequências a ser aumentado ou cortado. O valor padrão é 3000 Hz.

width_type, t

Define o método para especificar a largura de banda do filtro.

h

Hz

q

Fator Q

o

oitava

s

inclinação

k

kHz

width, w

Determina a inclinação da transição shelf do filtro.

poles, p

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

mix, m

Quanto do sinal filtrado é usado na saída. O padrão é 1. O intervalo é entre 0 e 1.

channels, c

Especifica quais canais filtrar; por padrão, todos os disponíveis são filtrados.

normalize, n

Normaliza os coeficientes biquad; desativado por padrão. Ao habilitá-lo, a resposta de magnitude em DC é normalizada para 0dB.

transform, a

Define o tipo de transformação do filtro IIR.

di dii tdi tdii latt svf zdf precision, r

Define a precisão da filtragem.

auto

Escolhe automaticamente o sample format de acordo com os filtros surround.

s16

Usa sempre 16 bits com sinal.

s32

Usa sempre 32 bits com sinal.

f32

Usa sempre ponto flutuante de 32 bits.

f64

Usa sempre ponto flutuante de 64 bits.

block_size, b

Define o tamanho do bloco usado para o processamento IIR reverso. Se esse valor for definido alto o suficiente (maior que o comprimento da resposta ao impulso truncada ao chegar perto de valores próximos de zero), a filtragem se tornará de fase linear; caso contrário, se não for grande o suficiente, produzirá apenas artefatos desagradáveis.

Observe que o atraso do filtro será exatamente essa quantidade de amostras quando definido como um valor diferente de zero.

8.116.1 Comandos

Este filtro é compatível com os seguintes comandos:

frequency, f

Altera a frequência do treble. A sintaxe do comando é: "frequency"

width_type, t

Altera o width_type do treble. A sintaxe do comando é: "width_type"

width, w

Altera o width do treble. A sintaxe do comando é: "width"

gain, g

Altera o ganho do treble. A sintaxe do comando é: "gain"

mix, m

Altera o mix do treble. A sintaxe do comando é: "mix"

8.117 tremolo

Modulação senoidal de amplitude.

O filtro aceita as seguintes opções:

f

Frequência de modulação em hertz. Frequências de modulação na faixa sub-harmônica (20 Hz ou menos) resultarão em um efeito de trêmolo. Este filtro também pode ser usado como um modulador em anel especificando uma frequência de modulação superior a 20 Hz. O intervalo é 0.1 - 20000.0. O valor padrão é 5.0 Hz.

d

Profundidade da modulação como porcentagem. O intervalo é 0.0 - 1.0. O valor padrão é 0.5.

8.118 vibrato

Modulação senoidal de fase.

O filtro aceita as seguintes opções:

f

Frequência de modulação em hertz. O intervalo é 0.1 - 20000.0. O valor padrão é 5.0 Hz.

d

Profundidade da modulação como porcentagem. O intervalo é 0.0 - 1.0. O valor padrão é 0.5.

8.119 virtualbass

Aplica o filtro de graves virtuais (Virtual Bass) ao áudio.

Este filtro aceita uma entrada estéreo e produz uma saída estéreo com canal LFE (2.1). O novo canal LFE gerado contém graves virtuais aprimorados, obtidos originalmente a partir de ambos os canais estéreo. Este filtro mantém inalterados os canais frontal esquerdo e frontal direito, como disponíveis na entrada estéreo.

O filtro aceita as seguintes opções:

cutoff

Define a frequência de corte dos graves virtuais. O valor padrão é 250 Hz. O intervalo permitido vai de 100 a 500 Hz.

strength

Define a intensidade dos graves virtuais. O intervalo permitido vai de 0.5 a 3. O valor padrão é 3.

8.120 volume

Ajusta o volume do áudio de entrada.

Aceita os seguintes parâmetros:

volume

Define a expressão de volume do áudio.

Os valores de saída são recortados no valor máximo.

O volume do áudio de saída é dado pela relação:

output_volume = volume * input_volume

O valor padrão para volume é "1.0".

precision

Este parâmetro representa a precisão matemática.

Determina quais sample formats de entrada serão permitidos, o que afeta a precisão do escalonamento de volume.

fixed

Ponto fixo de 8 bits; isso limita o sample format de entrada a U8, S16 e S32.

float

Ponto flutuante de 32 bits; isso limita o sample format de entrada a FLT. (padrão)

double

Ponto flutuante de 64 bits; isso limita o sample format de entrada a DBL.

replaygain

Escolhe o comportamento ao encontrar dados laterais do ReplayGain nos quadros de entrada.

drop

Remove os dados laterais do ReplayGain, ignorando seu conteúdo (o padrão).

ignore

Ignora os dados laterais do ReplayGain, mas os mantém no quadro.

track

Prefere o ganho da faixa, se presente.

album

Prefere o ganho do álbum, se presente.

replaygain_preamp

Ganho de pré-amplificação em dB a ser aplicado ao ganho de replaygain selecionado.

O valor padrão de replaygain_preamp é 0.0.

replaygain_noclip

Evita o recorte (clipping) limitando o ganho aplicado.

O valor padrão de replaygain_noclip é 1.

eval

Define quando a expressão de volume é avaliada.

Aceita os seguintes valores:

‘once’

avalia a expressão apenas uma vez durante a inicialização do filtro, ou quando o comando ‘volume’ é enviado

‘frame’

avalia a expressão para cada quadro recebido

O valor padrão é ‘once’.

A expressão de volume pode conter os seguintes parâmetros.

n

número do quadro (começando em zero)

nb_channels

número de canais

nb_consumed_samples

número de amostras consumidas pelo filtro

nb_samples

número de amostras no quadro atual

pos

posição original do quadro no arquivo; obsoleto, não use

pts

PTS do quadro

sample_rate

taxa de amostragem

startpts

PTS no início do fluxo

startt

tempo no início do fluxo

t

tempo do quadro

tb

base de tempo da marca de tempo

volume

último valor de volume definido

Observe que, quando eval é definido como ‘once’, apenas as variáveis sample_rate e tb estão disponíveis; todas as outras variáveis serão avaliadas como NAN.

8.120.1 Comandos

Este filtro é compatível com os seguintes comandos:

volume

Modifica a expressão de volume. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, ela é mantida no valor atual.

8.120.2 Exemplos

  • Reduz o volume do áudio de entrada pela metade:
    volume=volume=0.5
    volume=volume=1/2
    volume=volume=-6.0206dB
    

Em todos os exemplos acima, a chave nomeada para volume pode ser omitida, por exemplo, como em:

    volume=0.5
  • Aumenta a potência do áudio de entrada em 6 decibéis usando precisão de ponto fixo:

    volume=volume=6dB:precision=fixed
    
  • Aplica fade no volume após o tempo 10, com um período de anulação de 5 segundos:

    volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
    

8.121 volumedetect

Detecta o volume do vídeo de entrada.

O filtro não tem parâmetros. Ele é compatível apenas com amostras inteiras de 16 bits com sinal, então a entrada será convertida quando necessário. Estatísticas sobre o volume serão impressas no log quando o final do fluxo de entrada for atingido.

Em particular, mostrará o volume médio (raiz média quadrática), o volume máximo (por amostra) e o início de um histograma dos valores de volume registrados (do valor máximo até um acumulado de 1/1000 das amostras).

Todos os volumes são expressos em decibéis relativos ao valor PCM máximo.

8.121.1 Exemplos

Aqui está um trecho da saída:

[Parsed_volumedetect_0  0xa23120] mean_volume: -27 dB
[Parsed_volumedetect_0  0xa23120] max_volume: -4 dB
[Parsed_volumedetect_0  0xa23120] histogram_4db: 6
[Parsed_volumedetect_0  0xa23120] histogram_5db: 62
[Parsed_volumedetect_0  0xa23120] histogram_6db: 286
[Parsed_volumedetect_0  0xa23120] histogram_7db: 1042
[Parsed_volumedetect_0  0xa23120] histogram_8db: 2551
[Parsed_volumedetect_0  0xa23120] histogram_9db: 4609
[Parsed_volumedetect_0  0xa23120] histogram_10db: 8409

Isso significa que:

  • A energia média quadrática é de aproximadamente -27 dB, ou 10^-2.7.
  • A maior amostra está em -4 dB ou, mais precisamente, entre -4 dB e -5 dB.
  • Há 6 amostras em -4 dB, 62 em -5 dB, 286 em -6 dB etc.

Em outras palavras, aumentar o volume em +4 dB não causa nenhum recorte (clipping); aumentá-lo em +5 dB causa recorte (clipping) em 6 amostras etc.

8.122 whisper

Executa reconhecimento automático de voz usando o modelo Whisper da OpenAI.

Requer a biblioteca whisper.cpp (https://github.com/ggml-org/whisper.cpp) como pré-requisito. Depois de instalar a biblioteca, é possível habilitá-la com: ./configure --enable-whisper.

O filtro aceita as seguintes opções:

model

Caminho do arquivo do modelo whisper.cpp baixado (obrigatório).

language

O idioma a ser usado na transcrição (’auto’ para detecção automática). Valor padrão: "auto"

translate

Se habilitada, traduz a transcrição do idioma de origem para o inglês. É necessário um modelo multilíngue para habilitar esta opção. Valor padrão: "false"

queue

Tamanho máximo que será enfileirado no filtro antes de processar o áudio com o whisper. Com um valor pequeno, o fluxo de áudio será processado com mais frequência, mas a qualidade da transcrição será menor e será necessário mais poder de processamento. Com um valor grande (por exemplo, 10-20s), obtêm-se resultados mais precisos usando menos CPU (como ao usar a ferramenta whisper-cli), mas a latência da transcrição será maior, o que a torna pouco útil para processar fluxos em tempo real. Considere usar a opção vad_model associada a um valor de queue elevado. Valor padrão: "3"

use_gpu

Indica se o suporte a GPU deve ser habilitado. Valor padrão: "true"

gpu_device

Índice do dispositivo GPU a ser usado. Valor padrão: "0"

destination

Se definido, a saída da transcrição será enviada para o arquivo ou URL especificado (use um dos protocolos AVIO do FFmpeg); caso contrário, a saída será registrada como mensagens info. A saída também será definida no metadado de quadro "lavfi.whisper.text". Se o destino for um arquivo e ele já existir, será sobrescrito.

format

String que define o formato do destino; pode ser "text" (somente o texto transcrito será enviado ao destino), "srt" (formato de legenda) ou "json". Valor padrão: "text"

max_len

Comprimento máximo do segmento em caracteres. Quando definido com um valor maior que 0, os segmentos da transcrição serão divididos por palavra para não ultrapassar esse comprimento. Isso é útil para gerar legendas com linhas mais curtas. Valor padrão: "0"

vad_model

Caminho para o arquivo do modelo VAD. Se definido, o filtro carregará um módulo adicional de detecção de atividade de voz (voice activity detection, https://github.com/snakers4/silero-vad) que será usado para fragmentar a fila de áudio; para usar esta opção, defina um caminho válido obtido no repositório whisper.cpp (por exemplo, "../whisper.cpp/models/ggml-silero-v5.1.2.bin") e aumente o parâmetro queue para um valor maior (por exemplo, 20).

vad_threshold

Limiar de VAD a ser usado. Valor padrão: "0.5"

vad_min_speech_duration

Duração mínima de fala para o VAD. Valor padrão: "0.1"

vad_min_silence_duration

Duração mínima de silêncio para o VAD. Valor padrão: "0.5"

8.122.1 Exemplos

  • Executar uma transcrição gerando um arquivo srt:

    ffmpeg -i input.mp4 -vn -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin\
    :language=en\
    :queue=3\
    :destination=output.srt\
    :format=srt" -f null -
    
  • Executar uma transcrição e enviar a saída em formato JSON para um serviço HTTP:

    ffmpeg -i input.mp4 -vn -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin\
    :language=en\
    :queue=3\
    :destination=http\\://localhost\\:3000\
    :format=json' -f null -
    
  • Transcrever a entrada do microfone usando a opção VAD:

    ffmpeg -loglevel warning -f pulse -i default \
    -af 'highpass=f=200,lowpass=f=3000,whisper=model=../whisper.cpp/models/ggml-medium.bin\
    :language=en\
    :queue=10\
    :destination=-\
    :format=json\
    :vad_model=../whisper.cpp/models/ggml-silero-v5.1.2.bin' -f null -
    

9 Fontes de áudio

A seguir, uma descrição das fontes de áudio atualmente disponíveis.

9.1 abuffer

Armazena quadros de áudio em buffer e os disponibiliza para a cadeia de filtros.

Esta fonte é destinada principalmente ao uso programático, em especial por meio da interface definida em libavfilter/buffersrc.h.

Aceita os seguintes parâmetros:

time_base

Base de tempo que será usada para as marcas de tempo dos quadros enviados. Deve ser um número de ponto flutuante ou estar na forma numerador/denominador.

sample_rate

Taxa de amostragem dos buffers de áudio recebidos.

sample_fmt

Sample format dos buffers de áudio recebidos. Pode ser um nome de sample format ou a representação inteira correspondente no enum AVSampleFormat em libavutil/samplefmt.h

channel_layout

Layout de canais dos buffers de áudio recebidos. Pode ser um nome de layout de canais de channel_layout_map em libavutil/channel_layout.c ou a representação inteira correspondente nas macros AV_CH_LAYOUT_* em libavutil/channel_layout.h

channels

Número de canais dos buffers de áudio recebidos. Se channels e channel_layout forem especificados juntos, eles devem ser consistentes entre si.

9.1.1 Exemplos

abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo

instrui a fonte a aceitar áudio estéreo planar de 16 bits com sinal a 44100Hz. Como o sample format com nome "s16p" corresponde ao número 6 e o layout de canais "stereo" corresponde ao valor 0x3, isso equivale a:

abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3

9.2 aevalsrc

Gera um sinal de áudio especificado por uma expressão.

Esta fonte aceita como entrada uma ou mais expressões (uma para cada canal), que são avaliadas e usadas para gerar o sinal de áudio correspondente.

Esta fonte aceita as seguintes opções:

exprs

Define a lista de expressões separadas por ’|’ para cada canal. Caso a opção channel_layout não seja especificada, o layout de canais selecionado depende do número de expressões fornecidas. Caso contrário, a última expressão especificada é aplicada aos canais de saída restantes.

channel_layout, c

Define o layout de canais. O número de canais no layout especificado deve ser igual ao número de expressões especificadas.

duration, d

Define a duração mínima do áudio gerado. Consulte (ffmpeg-utils) a seção Time duration do manual ffmpeg-utils(1) para a sintaxe aceita. Observe que a duração resultante pode ser maior que a duração especificada, já que o áudio gerado é sempre cortado no final de um quadro completo.

Se não for especificada, ou se a duração expressa for negativa, entende-se que o áudio deve ser gerado indefinidamente.

nb_samples, n

Define o número de amostras por canal em cada quadro de saída; o padrão é 1024.

sample_rate, s

Especifica a taxa de amostragem; o padrão é 44100.

Cada expressão em exprs pode conter as seguintes constantes:

n

número da amostra avaliada, a partir de 0

t

tempo da amostra avaliada, expresso em segundos, a partir de 0

s

taxa de amostragem

9.2.1 Exemplos

  • Gerar silêncio:

    aevalsrc=0
    
  • Gerar um sinal senoidal com frequência de 440 Hz, definindo a taxa de amostragem para 8000 Hz:

    aevalsrc="sin(440*2*PI*t):s=8000"
    
  • Gerar um sinal de dois canais, especificando explicitamente o layout de canais (Front Center + Back Center):

    aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
    
  • Gerar ruído branco:

    aevalsrc="-2+random(0)"
    
  • Gerar um sinal modulado em amplitude:

    aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
    
  • Gerar batimentos binaurais de 2.5 Hz em uma portadora de 360 Hz:

    aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
    

9.3 afdelaysrc

Gera coeficientes FIR de atraso fracionário.

O fluxo resultante pode ser usado com o filtro afir para filtrar o sinal de áudio.

O filtro aceita as seguintes opções:

delay, d

Define o atraso fracionário. O padrão é 0.

sample_rate, r

Define a taxa de amostragem; o padrão é 44100.

nb_samples, n

Define o número de amostras por quadro. O padrão é 1024.

taps, t

Define o número de coeficientes do filtro no fluxo de áudio de saída. O valor padrão é 0.

channel_layout, c

Especifica o layout de canais e pode ser uma string representando um layout de canais. O valor padrão de channel_layout é "stereo".

9.4 afireqsrc

Gera coeficientes de um equalizador FIR.

O fluxo resultante pode ser usado com o filtro afir para filtrar o sinal de áudio.

O filtro aceita as seguintes opções:

preset, p

Define o preset do equalizador. O preset padrão é flat.

Os presets disponíveis são:

‘custom’ ‘flat’ ‘acoustic’ ‘bass’ ‘beats’ ‘classic’ ‘clear’ ‘deep bass’ ‘dubstep’ ‘electronic’ ‘hard-style’ ‘hip-hop’ ‘jazz’ ‘metal’ ‘movie’ ‘pop’ ‘r&b’ ‘rock’ ‘vocal booster’ gains, g

Define os ganhos personalizados de cada banda. Usado somente se a opção preset estiver definida como custom. Os ganhos são separados por espaços em branco e cada ganho é definido em dBFS. O padrão é 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.

bands, b

Define as bandas personalizadas a partir das quais os ganhos personalizados do equalizador são definidos. Isso deve estar em ordem estritamente crescente. Usado somente se a opção preset estiver definida como custom. As bandas são separadas por espaços em branco e cada banda representa uma frequência em Hz. O padrão é 25 40 63 100 160 250 400 630 1000 1600 2500 4000 6300 10000 16000 24000.

taps, t

Define o número de coeficientes do filtro no fluxo de áudio de saída. O valor padrão é 4096.

sample_rate, r

Define a taxa de amostragem do fluxo de áudio de saída; o padrão é 44100.

nb_samples, n

Define o número de amostras por quadro no fluxo de áudio de saída. O padrão é 1024.

interp, i

Define o método de interpolação para os coeficientes do equalizador FIR. Pode ser linear ou cubic.

phase, h

Define o tipo de fase do filtro FIR. Pode ser linear ou min: fase mínima. O padrão é o filtro de fase mínima.

9.5 afirsrc

Gera coeficientes FIR usando o método de amostragem de frequência.

O fluxo resultante pode ser usado com o filtro afir para filtrar o sinal de áudio.

O filtro aceita as seguintes opções:

taps, t

Define o número de coeficientes do filtro no fluxo de áudio de saída. O valor padrão é 1025.

frequency, f

Define os pontos de frequência a partir dos quais a magnitude e a fase são definidas. Isso deve estar em ordem não decrescente; o primeiro elemento deve ser 0 e o último deve ser 1. Os elementos são separados por espaços em branco.

magnitude, m

Define o valor de magnitude para cada ponto de frequência definido por frequency. O número de valores deve ser igual ao número de pontos de frequência. Os valores são separados por espaços em branco.

phase, p

Define o valor de fase para cada ponto de frequência definido por frequency. O número de valores deve ser igual ao número de pontos de frequência. Os valores são separados por espaços em branco.

sample_rate, r

Define a taxa de amostragem; o padrão é 44100.

nb_samples, n

Define o número de amostras por quadro. O padrão é 1024.

win_func, w

Define a função de janela. O padrão é blackman.

9.6 anullsrc

A fonte de áudio nula retorna quadros de áudio não processados. É útil principalmente como modelo e para uso em ferramentas de análise/depuração, ou como fonte para filtros que ignoram os dados de entrada (por exemplo, o filtro sox synth).

Esta fonte aceita as seguintes opções:

channel_layout, cl

Especifica o layout de canais e pode ser um inteiro ou uma string representando um layout de canais. O valor padrão de channel_layout é "stereo".

Consulte a definição de channel_layout_map em libavutil/channel_layout.c para o mapeamento entre strings e valores de layout de canais.

sample_rate, r

Especifica a taxa de amostragem; o padrão é 44100.

nb_samples, n

Define o número de amostras por quadro solicitado.

duration, d

Define a duração do áudio gerado. Consulte (ffmpeg-utils) a seção Time duration do manual ffmpeg-utils(1) para a sintaxe aceita.

Se não for especificada, ou se a duração expressa for negativa, entende-se que o áudio deve ser gerado indefinidamente.

9.6.1 Exemplos

  • Definir a taxa de amostragem para 48000 Hz e o layout de canais para AV_CH_LAYOUT_MONO.

    anullsrc=r=48000:cl=4
    
  • Fazer a mesma operação com uma sintaxe mais óbvia:

    anullsrc=r=48000:cl=mono
    

Todos os parâmetros precisam ser definidos explicitamente.

9.7 flite

Sintetiza uma fala usando a biblioteca libflite.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libflite.

Observe que versões da biblioteca flite anteriores à 2.0 não são thread-safe.

O filtro aceita as seguintes opções:

list_voices

Se definido como 1, lista os nomes das vozes disponíveis e encerra imediatamente. O valor padrão é 0.

nb_samples, n

Define o número máximo de amostras por quadro. O valor padrão é 512.

textfile

Define o nome do arquivo que contém o texto a ser falado.

text

Define o texto a ser falado.

voice, v

Define a voz a ser usada na síntese de fala. O valor padrão é kal. Consulte também a opção list_voices.

9.7.1 Exemplos

  • Ler o arquivo speech.txt e sintetizar o texto usando a voz padrão do flite:

    flite=textfile=speech.txt
    
  • Ler o texto especificado selecionando a voz slt:

    flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • Fornecer o texto ao ffmpeg:

    ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • Fazer o ffplay falar o texto especificado, usando flite e o dispositivo lavfi:

    ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
    

Para mais informações sobre a libflite, consulte: http://www.festvox.org/flite/

9.8 anoisesrc

Gera um sinal de áudio de ruído.

O filtro aceita as seguintes opções:

sample_rate, r

Especifica a taxa de amostragem. O valor padrão é 48000 Hz.

amplitude, a

Especifica a amplitude (0.0 - 1.0) do fluxo de áudio gerado. O valor padrão é 1.0.

duration, d

Especifica a duração do fluxo de áudio gerado. Se esta opção não for especificada, o ruído terá duração infinita.

color, colour, c

Especifica a cor do ruído. As cores de ruído disponíveis são white, pink, brown, blue, violet e velvet. A cor padrão é white.

seed, s

Especifica um valor usado para semear o PRNG.

nb_samples, n

Define o número de amostras por quadro de saída; o padrão é 1024.

density

Define a densidade (0.0 - 1.0) do gerador de ruído velvet; o padrão é 0.05.

9.8.1 Exemplos

  • Gerar 60 segundos de ruído pink, com taxa de amostragem de 44.1 kHz e amplitude de 0.5:
    anoisesrc=d=60:c=pink:r=44100:a=0.5
    

9.9 hilbert

Gera coeficientes FIR de transformada de Hilbert com número ímpar de taps.

O fluxo resultante pode ser usado com o filtro afir para deslocar a fase do sinal em 90 graus.

Isso é usado em muitos esquemas de codificação matricial e na geração de sinais analíticos. O processo costuma ser descrito como uma multiplicação por i (ou j), a unidade imaginária.

O filtro aceita as seguintes opções:

sample_rate, s

Define a taxa de amostragem; o padrão é 44100.

taps, t

Define o comprimento do filtro FIR; o padrão é 22051.

nb_samples, n

Define o número de amostras por quadro.

win_func, w

Define a função de janela a ser usada ao gerar os coeficientes FIR.

9.10 sinc

Gera coeficientes FIR sinc com janela de Kaiser do tipo passa-baixa, passa-alta, passa-faixa ou rejeita-faixa.

O fluxo resultante pode ser usado com o filtro afir para filtrar o sinal de áudio.

O filtro aceita as seguintes opções:

sample_rate, r

Define a taxa de amostragem; o padrão é 44100.

nb_samples, n

Define o número de amostras por quadro. O padrão é 1024.

hp

Define a frequência de corte passa-alta. O padrão é 0.

lp

Define a frequência de corte passa-baixa. O padrão é 0. Se a frequência passa-alta for menor que a frequência passa-baixa e a frequência passa-baixa for maior que 0, o filtro criará coeficientes de filtro passa-faixa; caso contrário, criará coeficientes de filtro rejeita-faixa.

phase

Define a resposta de fase do filtro. O padrão é 50. O intervalo permitido vai de 0 a 100.

beta

Define o beta da janela de Kaiser.

att

Define a atenuação da banda de rejeição. O padrão é 120dB; o intervalo permitido vai de 40 a 180 dB.

round

Habilita o arredondamento; por padrão, está desabilitado.

hptaps

Define o número de taps do filtro passa-alta.

lptaps

Define o número de taps do filtro passa-baixa.

9.11 sine

Gera um sinal de áudio formado por uma onda senoidal com amplitude 1/8.

O sinal de áudio é exato em nível de bit (bit-exact).

O filtro aceita as seguintes opções:

frequency, f

Define a frequência da portadora. O padrão é 440 Hz.

beep_factor, b

Habilita um bipe periódico a cada segundo, com frequência igual a beep_factor vezes a frequência da portadora. O padrão é 0, o que significa que o bipe está desabilitado.

sample_rate, r

Especifica a taxa de amostragem; o padrão é 44100.

duration, d

Especifica a duração do fluxo de áudio gerado.

samples_per_frame

Define o número de amostras por quadro de saída.

A expressão pode conter as seguintes constantes:

n

O número (sequencial) do quadro de áudio de saída, a partir de 0.

pts

O PTS (Presentation TimeStamp) do quadro de áudio de saída, expresso em unidades TB.

t

O PTS do quadro de áudio de saída, expresso em segundos.

TB

A base de tempo dos quadros de áudio de saída.

O padrão é 1024.

9.11.1 Exemplos

  • Gerar uma onda senoidal simples de 440 Hz:

    sine
    
  • Gerar uma onda senoidal de 220 Hz com um bipe de 880 Hz a cada segundo, durante 5 segundos:

    sine=220:4:d=5
    sine=f=220:b=4:d=5
    sine=frequency=220:beep_factor=4:duration=5
    
  • Gerar uma onda senoidal de 1 kHz seguindo o padrão NTSC 1602,1601,1602,1601,1602:

    sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
    

10 Destinos de áudio

A seguir, uma descrição dos destinos de áudio atualmente disponíveis.

10.1 abuffersink

Armazena quadros de áudio em buffer e os disponibiliza no final da cadeia de filtros.

Este destino é voltado principalmente para uso programático, em especial por meio da interface definida em libavfilter/buffersink.h ou do sistema de opções.

Aceita um ponteiro para uma estrutura AVABufferSinkContext, que define os formatos dos buffers recebidos, a ser passado como o parâmetro opaque para avfilter_init_filter na inicialização.

10.2 anullsink

Destino de áudio nulo; não faz absolutamente nada com o áudio de entrada. É útil principalmente como modelo e para uso em ferramentas de análise/depuração.

11 Filtros de vídeo

Ao configurar sua build do FFmpeg, você pode desabilitar qualquer um dos filtros existentes usando --disable-filters. A saída do configure mostrará os filtros de vídeo incluídos na sua build.

A seguir, uma descrição dos filtros de vídeo atualmente disponíveis.

11.1 addroi

Marca uma região de interesse em um quadro de vídeo.

Os dados do quadro são repassados sem alteração, mas metadados são anexados ao quadro indicando regiões de interesse que podem afetar o comportamento da codificação posterior. Várias regiões podem ser marcadas aplicando o filtro várias vezes.

x

Distância da região até a borda esquerda do quadro, em pixels.

y

Distância da região até a borda superior do quadro, em pixels.

w

Largura da região, em pixels.

h

Altura da região, em pixels.

Os parâmetros x, y, w e h são expressões e podem conter as seguintes variáveis:

iw

Largura do quadro de entrada.

ih

Altura do quadro de entrada.

qoffset

Deslocamento (offset) de quantização a ser aplicado dentro da região.

Deve ser um valor real no intervalo de -1 a +1. Um valor zero indica nenhuma mudança de qualidade. Um valor negativo solicita melhor qualidade (menos quantização), enquanto um valor positivo solicita pior qualidade (mais quantização).

O intervalo é calibrado de modo que os valores extremos indiquem o maior deslocamento possível - se o restante do quadro for codificado com a pior qualidade possível, um deslocamento de -1 indica que essa região deve, ainda assim, ser codificada com a melhor qualidade possível. Os valores intermediários são então interpolados de alguma forma que depende do codec.

Por exemplo, em H.264 de 10 bits, o parâmetro de quantização varia entre -12 e 51. Um valor típico de qoffset igual a -1/10 indica, portanto, que essa região deve ser codificada com um QP cerca de um décimo do intervalo total melhor que o restante do quadro. Assim, se a maior parte do quadro fosse codificada com um QP em torno de 30, essa região receberia um QP em torno de 24 (um deslocamento de aproximadamente -1/10 * (51 - -12) = -6.3). Um valor extremo de -1 indicaria que essa região deve ser codificada com a melhor qualidade possível, independentemente do tratamento dado ao restante do quadro - ou seja, deve ser codificada com um QP de -12.

clear

Se definido como true, remove todas as regiões de interesse já marcadas no quadro antes de adicionar a nova.

11.1.1 Exemplos

  • Marcar o quarto central do quadro como interessante.

    addroi=iw/4:ih/4:iw/2:ih/2:-1/10
    
  • Marcar a região de 100 pixels de largura na borda esquerda do quadro como muito pouco interessante (a ser codificada com qualidade muito inferior à do restante do quadro).

    addroi=0:0:100:ih:+1/5
    

11.2 alphaextract

Extrai o componente alfa da entrada como um vídeo em tons de cinza. Isso é especialmente útil junto com o filtro alphamerge.

11.3 alphamerge

Adiciona ou substitui o componente alfa da entrada principal pelo valor em tons de cinza de uma segunda entrada. Destina-se ao uso com alphaextract, permitindo transmitir ou armazenar sequências de quadros que têm alfa em um formato que não é compatível com canal alfa.

Por exemplo, para reconstruir quadros completos a partir de um vídeo codificado normalmente em YUV e um vídeo separado criado com alphaextract, é possível usar:

movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]

11.4 amplify

Amplifica as diferenças entre o pixel atual e os pixels de quadros adjacentes na mesma posição.

Este filtro aceita as seguintes opções:

radius

Define o raio de quadros. O padrão é 2. O intervalo permitido vai de 1 a 63. Por exemplo, um raio de 3 instrui o filtro a calcular a média de 7 quadros.

factor

Define o fator de amplificação da diferença. O padrão é 2. O intervalo permitido vai de 0 a 65535.

threshold

Define o limiar para a amplificação da diferença. Qualquer diferença maior ou igual a esse valor não altera o pixel de origem. O padrão é 10. O intervalo permitido vai de 0 a 65535.

tolerance

Define a tolerância para a amplificação da diferença. Qualquer diferença menor que esse valor não altera o pixel de origem. O padrão é 0. O intervalo permitido vai de 0 a 65535.

low

Define o limite inferior para alterar o pixel de origem. O padrão é 65535. O intervalo permitido vai de 0 a 65535. Esta opção controla o valor máximo possível que reduzirá o valor do pixel de origem.

high

Define o limite superior para alterar o pixel de origem. O padrão é 65535. O intervalo permitido vai de 0 a 65535. Esta opção controla o valor máximo possível que aumentará o valor do pixel de origem.

planes

Define quais planos filtrar. O padrão é all. O intervalo permitido vai de 0 a 15.

11.4.1 Comandos

Este filtro é compatível com os seguintes comandos, que correspondem às opções de mesmo nome:

factor threshold tolerance low high planes

11.5 ass

É igual ao filtro subtitles, exceto por não exigir libavcodec e libavformat para funcionar. Por outro lado, é limitado a arquivos de legenda ASS (Advanced Substation Alpha).

Este filtro aceita filename/f, original_size, fontsdir e alpha do filtro subtitles, além da seguinte opção:

shaping

Define o mecanismo de shaping.

Os valores disponíveis são:

‘auto’

O mecanismo de shaping padrão do libass, que é o melhor disponível.

‘simple’

Shaper rápido e independente de fonte, capaz de realizar apenas substituições.

‘complex’

Shaper mais lento que usa OpenType para substituições e posicionamento. Necessário para a renderização correta de escritas complexas, como árabe, hebraico, devanágari e tailandês. Requer que o libass seja compilado com HarfBuzz.

O padrão é auto.

11.6 atadenoise

Aplica um eliminador de ruído por média temporal adaptativa (Adaptive Temporal Averaging Denoiser) ao vídeo de entrada.

O filtro aceita as seguintes opções:

0a

Define o limiar A para o primeiro plano. O padrão é 0.02. O intervalo válido é de 0 a 0.3.

0b

Define o limiar B para o primeiro plano. O padrão é 0.04. O intervalo válido é de 0 a 5.

1a

Define o limiar A para o segundo plano. O padrão é 0.02. O intervalo válido é de 0 a 0.3.

1b

Define o limiar B para o segundo plano. O padrão é 0.04. O intervalo válido é de 0 a 5.

2a

Define o limiar A para o terceiro plano. O padrão é 0.02. O intervalo válido é de 0 a 0.3.

2b

Define o limiar B para o terceiro plano. O padrão é 0.04. O intervalo válido é de 0 a 5.

O limiar A foi criado para reagir a mudanças abruptas no sinal de entrada, e o limiar B foi criado para reagir a mudanças contínuas no sinal de entrada.

s

Define o número de quadros que o filtro usará para o cálculo da média. O padrão é 9. Deve ser um número ímpar dentro do intervalo [5, 129].

p

Define quais planos do quadro o filtro usará para o cálculo da média. O padrão é all.

a

Define qual variante do algoritmo o filtro usará para o cálculo da média. O padrão é p, paralelo. Também pode ser definido como s, serial.

O paralelo pode ser mais rápido que o serial, mas o contrário nunca ocorre. O paralelo interrompe antecipadamente assim que a primeira mudança for maior que os limiares, enquanto o serial continua processando o outro lado dos quadros se estiverem iguais ou abaixo dos limiares.

0s 1s 2s

Define o sigma para o primeiro plano, o segundo plano ou o terceiro plano. O padrão é 32767. O intervalo válido é de 0 a 32767. Esta opção controla o peso de cada pixel dentro do raio definido por size. O padrão faz com que todo pixel tenha o mesmo peso. Definir esta opção como 0 desativa a filtragem na prática.

11.6.1 Comandos

Este filtro aceita os mesmos comandos que as opções, exceto a opção s. O comando aceita a mesma sintaxe da opção correspondente.

11.7 avgblur

Aplica um filtro de desfoque por média.

O filtro aceita as seguintes opções:

sizeX

Define o tamanho do raio horizontal.

planes

Define quais planos filtrar. Por padrão, todos os planos são filtrados.

sizeY

Define o tamanho do raio vertical; se for zero, será igual a sizeX. O padrão é 0.

11.7.1 Comandos

Este filtro aceita os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.8 backgroundkey

Transforma um fundo estático em transparência.

O filtro aceita a seguinte opção:

threshold

Limiar para a detecção de mudança de cena.

similarity

Porcentagem de similaridade com o fundo.

blend

Define a quantidade de mescla para os pixels que não são similares.

11.8.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.9 bbox

Calcula o retângulo delimitador (bounding box) dos pixels não pretos no plano de luma do quadro de entrada.

Este filtro calcula o retângulo delimitador que contém todos os pixels com um valor de luma maior que o valor mínimo permitido. Os parâmetros que descrevem o retângulo delimitador são impressos no log do filtro.

O filtro aceita a seguinte opção:

min_val

Define o valor mínimo de luma. O padrão é 16.

11.9.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.10 bilateral

Aplica um filtro bilateral, que suaviza espacialmente preservando as bordas.

O filtro aceita as seguintes opções:

sigmaS

Define o sigma da função gaussiana usada para calcular o peso espacial. O intervalo permitido é de 0 a 512. O padrão é 0.1.

sigmaR

Define o sigma da função gaussiana usada para calcular o peso de intervalo. O intervalo permitido é de 0 a 1. O padrão é 0.1.

planes

Define os planos a filtrar. O padrão é somente o primeiro.

11.10.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.11 bitplanenoise

Exibe e mede o ruído do plano de bits.

O filtro aceita as seguintes opções:

bitplane

Define qual plano analisar. O padrão é 1.

filter

Filtra os pixels ruidosos do bitplane definido acima. O padrão é desativado.

11.12 blackdetect, blackdetect_vulkan

Detecta intervalos de vídeo que estão (quase) completamente pretos. Pode ser útil para detectar transições de capítulo, comerciais ou gravações inválidas.

O filtro envia sua análise de detecção tanto para o log quanto para os metadados do quadro. Se for encontrado um segmento preto com pelo menos a duração mínima especificada, é impressa no log, com o nível info, uma linha com as marcas de tempo de início e fim, além da duração. Além disso, é impressa uma linha de log com o nível debug por quadro, mostrando a quantidade de preto detectada naquele quadro.

O filtro também anexa metadados ao primeiro quadro de um segmento preto com a chave lavfi.black_start, e ao primeiro quadro após o término do segmento preto com a chave lavfi.black_end. O valor é a marca de tempo do quadro. Esses metadados são adicionados independentemente da duração mínima especificada.

O filtro aceita as seguintes opções:

black_min_duration, d

Define a duração mínima de preto detectada, expressa em segundos. Deve ser um número de ponto flutuante não negativo.

O padrão é 2.0.

picture_black_ratio_th, pic_th

Define o limiar para considerar uma imagem "preta". Expressa o valor mínimo da razão:

nb_black_pixels / nb_pixels

para que uma imagem seja considerada preta. O padrão é 0.98.

pixel_black_th, pix_th

Define o limiar para considerar um pixel "preto".

O limiar expressa o valor máximo de luma de um pixel para que ele seja considerado "preto". O valor fornecido é escalado de acordo com a seguinte equação:

absolute_threshold = luma_minimum_value + pixel_black_th * luma_range_size

luma_range_size e luma_minimum_value dependem do formato de vídeo de entrada; o intervalo é [0-255] para formatos YUV de faixa completa e [16-235] para formatos YUV de faixa limitada.

O padrão é 0.10.

alpha

Se verdadeiro, verifica o canal alfa em vez do canal de luma. Detecta quadros que estão (quase) transparentes, em vez de quadros que estão quase pretos.

O padrão é desativado.

O exemplo a seguir define o limiar máximo de pixel como o valor mínimo e detecta apenas intervalos pretos de 2 segundos ou mais:

blackdetect=d=2:pix_th=0.00

11.13 blackframe

Detecta quadros que estão (quase) completamente pretos. Pode ser útil para detectar transições de capítulo ou comerciais. As linhas de saída consistem no número do quadro detectado, na porcentagem de escuridão, na posição no arquivo, se conhecida (ou -1), e na marca de tempo em segundos.

Para exibir as linhas de saída, é necessário definir o loglevel pelo menos com o valor AV_LOG_INFO.

Este filtro exporta o metadado de quadro lavfi.blackframe.pblack. O valor representa a porcentagem de pixels da imagem que estão abaixo do valor de limiar.

Aceita os seguintes parâmetros:

amount

A porcentagem de pixels que precisa estar abaixo do limiar; o padrão é 98.

threshold, thresh

O limiar abaixo do qual um valor de pixel é considerado preto; o padrão é 32.

11.14 blend

Mescla dois quadros de vídeo entre si.

O filtro blend recebe dois fluxos de entrada e produz um fluxo de saída: a primeira entrada é a camada "superior" (top) e a segunda é a camada "inferior" (bottom). Por padrão, a saída termina quando a entrada mais longa termina.

O filtro tblend (mescla temporal) recebe dois quadros consecutivos de um único fluxo e produz o resultado da mesclagem do quadro novo sobre o quadro antigo.

A seguir, uma descrição das opções aceitas.

c0_mode c1_mode c2_mode c3_mode all_mode

Define o modo de mescla para um componente de pixel específico, ou para todos os componentes de pixel no caso de all_mode. O padrão é normal.

Os valores disponíveis para os modos de componente são:

‘addition’ ‘and’ ‘average’ ‘bleach’ ‘burn’ ‘darken’ ‘difference’ ‘divide’ ‘dodge’ ‘exclusion’ ‘extremity’ ‘freeze’ ‘geometric’ ‘glow’ ‘grainextract’ ‘grainmerge’ ‘hardlight’ ‘hardmix’ ‘hardoverlay’ ‘harmonic’ ‘heat’ ‘interpolate’ ‘lighten’ ‘linearlight’ ‘multiply’ ‘multiply128’ ‘negation’ ‘normal’ ‘or’ ‘overlay’ ‘phoenix’ ‘pinlight’ ‘reflect’ ‘screen’ ‘softdifference’ ‘softlight’ ‘stain’ ‘subtract’ ‘vividlight’ ‘xor’ c0_opacity c1_opacity c2_opacity c3_opacity all_opacity

Define a opacidade de mescla para um componente de pixel específico, ou para todos os componentes de pixel no caso de all_opacity. Usado apenas em combinação com os modos de mescla por componente de pixel.

c0_expr c1_expr c2_expr c3_expr all_expr

Define a expressão de mescla para um componente de pixel específico, ou para todos os componentes de pixel no caso de all_expr. Observe que as opções de modo relacionadas serão ignoradas se estas estiverem definidas.

As expressões podem usar as seguintes variáveis:

N

O número sequencial do quadro filtrado, começando em 0.

X Y

as coordenadas da amostra atual

W H

a largura e a altura do plano filtrado no momento

SW SH

Escala de largura e altura do plano que está sendo filtrado. É a razão entre as dimensões do plano atual e as do plano de luma; por exemplo, para um quadro yuv420p, os valores são 1,1 para o plano de luma e 0.5,0.5 para os planos de croma.

T

Tempo do quadro atual, expresso em segundos.

TOP, A

Valor do componente de pixel na posição atual para o primeiro quadro de vídeo (camada superior).

BOTTOM, B

Valor do componente de pixel na posição atual para o segundo quadro de vídeo (camada inferior).

O filtro blend também aceita as opções de framesync.

11.14.1 Exemplos

  • Aplicar a transição da camada inferior para a camada superior nos primeiros 10 segundos:

    blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
    
  • Aplicar a transição horizontal linear da camada superior para a camada inferior:

    blend=all_expr='A*(X/W)+B*(1-X/W)'
    
  • Aplicar o efeito de tabuleiro de xadrez 1x1:

    blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
    
  • Aplicar o efeito de revelar pela esquerda:

    blend=all_expr='if(gte(N*SW+X,W),A,B)'
    
  • Aplicar o efeito de revelar por baixo:

    blend=all_expr='if(gte(Y-N*SH,0),A,B)'
    
  • Aplicar o efeito de revelar pelo canto superior esquerdo:

    blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
    
  • Dividir o vídeo na diagonal e mostrar a camada superior e a inferior em cada lado:

    blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
    
  • Exibir as diferenças entre o quadro atual e o anterior:

    tblend=all_mode=grainextract
    

11.14.2 Comandos

Este filtro aceita os mesmos comandos que as opções.

11.15 blockdetect

Determina a blocagem (blockiness) dos quadros sem alterar os quadros de entrada.

Baseado em Remco Muijs e Ihor Kirenko: "A no-reference blocking artifact measure for adaptive video processing." 2005 13th European Signal Processing Conference.

O filtro aceita as seguintes opções:

period_min period_max

Define os valores mínimo e máximo para determinar as grades de pixels (períodos). Os padrões são [3,24].

planes

Define os planos a filtrar. O padrão é somente o primeiro.

11.15.1 Exemplos

  • Determinar a blocagem do primeiro plano e buscar períodos dentro de [8,32]:
    blockdetect=period_min=8:period_max=32:planes=1
    

11.16 blurdetect

Determina o nível de desfoque dos quadros sem alterar os quadros de entrada.

Baseado em Marziliano, Pina, et al. "A no-reference perceptual blur metric." Permite uma abreviação baseada em blocos.

O filtro aceita as seguintes opções:

low high

Define os limiares low e high usados pelo algoritmo de limiarização de Canny.

O limiar high seleciona os pixels de borda "fortes", que em seguida são conectados por conectividade-8 aos pixels de borda "fracos" selecionados pelo limiar low.

Os valores de limiar low e high devem ser escolhidos dentro do intervalo [0,1], e low deve ser menor ou igual a high.

O padrão de low é 20/255, e o padrão de high é 50/255.

radius

Define o raio de busca ao redor de um pixel de borda para os máximos locais.

block_pct

Determina o desfoque somente para os blocos mais significativos, dado em porcentagem.

block_width

Determina o desfoque para blocos de largura block_width. Se definido como qualquer valor menor que 1, nenhum bloco é usado e a imagem inteira é processada como uma só, independentemente de block_height.

block_height

Determina o desfoque para blocos de altura block_height. Se definido como qualquer valor menor que 1, nenhum bloco é usado e a imagem inteira é processada como uma só, independentemente de block_width.

planes

Define os planos a filtrar. O padrão é somente o primeiro.

11.16.1 Exemplos

  • Determinar o desfoque para 80% dos blocos 32x32 mais significativos:
    blurdetect=block_width=32:block_height=32:block_pct=80
    

11.17 bm3d

Reduz o ruído dos quadros usando o algoritmo Block-Matching 3D.

O filtro aceita as seguintes opções.

sigma

Define a intensidade da redução de ruído. O padrão é 1. O intervalo permitido é de 0 a 999.9. O algoritmo de redução de ruído é muito sensível ao sigma, portanto ajuste-o de acordo com a fonte.

block

Define o tamanho do patch local. Isso define as dimensões em 2D.

bstep

Define o passo de deslizamento para o processamento dos blocos. O padrão é 4. O intervalo permitido é de 1 a 64. Valores menores permitem processar mais blocos de referência e tornam o processo mais lento.

group

Define o número máximo de blocos semelhantes para a terceira dimensão. O padrão é 1. Quando definido como 1, nenhuma correspondência de blocos é feita. Valores maiores permitem mais blocos em um mesmo grupo. O intervalo permitido é de 1 a 256.

range

Define o raio de busca para a correspondência de blocos. O padrão é 9. O intervalo permitido é de 1 a INT32_MAX.

mstep

Define o passo entre duas posições de busca para a correspondência de blocos. O padrão é 1. O intervalo permitido é de 1 a 64. Quanto menor, mais lento.

thmse

Define o limiar do erro quadrático médio para a correspondência de blocos. O intervalo válido é de 0 a INT32_MAX.

hdthr

Define o parâmetro de limiarização para a limiarização rígida no domínio transformado em 3D. Valores maiores resultam em filtragem de limiarização rígida mais forte no domínio da frequência.

estim

Define o modo de estimativa de filtragem. Pode ser basic ou final. O padrão é basic.

ref

Se ativado, o filtro usará o segundo fluxo para a correspondência de blocos. O padrão é desativado para o valor basic da opção estim, e sempre ativado se o valor de estim for final.

planes

Define os planos a filtrar. O padrão é todos os disponíveis, exceto o alfa.

11.17.1 Exemplos

  • Filtragem básica com bm3d:

    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
    
  • O mesmo que acima, mas filtrando somente o luma:

    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
    
  • O mesmo que acima, mas com os dois modos de estimativa:

    split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
    
  • O mesmo que acima, mas pré-filtrando com o filtro nlmeans em vez disso:

    split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
    

11.18 boxblur

Aplica um algoritmo de desfoque em caixa (boxblur) ao vídeo de entrada.

Aceita os seguintes parâmetros:

luma_radius, lr luma_power, lp chroma_radius, cr chroma_power, cp alpha_radius, ar alpha_power, ap

A seguir, uma descrição das opções aceitas.

luma_radius, lr chroma_radius, cr alpha_radius, ar

Define uma expressão para o raio da caixa em pixels, usada para desfocar o plano de entrada correspondente.

O valor do raio deve ser um número não negativo e não pode ser maior que o valor da expressão min(w,h)/2 para os planos de luma e alfa, nem que min(cw,ch)/2 para os planos de croma.

O padrão de luma_radius é "2". Se não especificados, chroma_radius e alpha_radius assumem o valor correspondente definido para luma_radius.

As expressões podem conter as seguintes constantes:

w h

A largura e a altura da entrada, em pixels.

cw ch

A largura e a altura da imagem de croma da entrada, em pixels.

hsub vsub

Os valores de subamostragem de croma horizontal e vertical. Por exemplo, para o pixel format "yuv422p", hsub é 2 e vsub é 1.

luma_power, lp chroma_power, cp alpha_power, ap

Especifica quantas vezes o filtro boxblur é aplicado ao plano correspondente.

O padrão de luma_power é 2. Se não especificados, chroma_power e alpha_power assumem o valor correspondente definido para luma_power.

Um valor de 0 desativa o efeito.

11.18.1 Exemplos

  • Aplicar um filtro boxblur com os raios de luma, croma e alfa definidos como 2:

    boxblur=luma_radius=2:luma_power=1
    boxblur=2:1
    
  • Definir o raio de luma como 2, e o raio de alfa e croma como 0:

    boxblur=2:1:cr=0:ar=0
    
  • Definir os raios de luma e croma como uma fração da dimensão do vídeo:

    boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
    

11.19 bwdif

Desentrelaça o vídeo de entrada ("bwdif" significa "Bob Weaver Deinterlacing Filter").

Desentrelaçamento adaptativo ao movimento baseado no yadif, com o uso dos algoritmos w3fdif e interpolação cúbica. Aceita os seguintes parâmetros:

mode

O modo de entrelaçamento a adotar. Aceita um dos seguintes valores:

0, send_frame

Gera um quadro de saída para cada quadro.

1, send_field

Gera um quadro de saída para cada campo.

O padrão é send_field.

parity

A paridade de campo da imagem presumida para o vídeo entrelaçado de entrada. Aceita um dos seguintes valores:

0, tff

Presume que o campo superior vem primeiro.

1, bff

Presume que o campo inferior vem primeiro.

-1, auto

Ativa a detecção automática da paridade de campo.

O padrão é auto. Se o entrelaçamento for desconhecido ou o decoder não exportar essa informação, presume-se que o campo superior vem primeiro.

deint

Especifica quais quadros desentrelaçar. Aceita um dos seguintes valores:

0, all

Desentrelaça todos os quadros.

1, interlaced

Desentrelaça somente os quadros marcados como entrelaçados.

O padrão é all.

11.20 ccrepack

Reempacota os side data de closed captioning CEA-708

Este filtro corrige diversos problemas observados em encoders comerciais relacionados a payloads CEA-708 malformados na origem, especificamente número incorreto de tuplas (cc_count errado para o FPS de destino) e ordenação incorreta das tuplas (ou seja, as tuplas CEA-608 não estão nas primeiras entradas do payload).

11.21 cas

Aplica o filtro de nitidez adaptativa por contraste (Contrast Adaptive Sharpen) ao fluxo de vídeo.

O filtro aceita as seguintes opções:

strength

Define a intensidade da nitidez. O padrão é 0.

planes

Define os planos a filtrar. O padrão é filtrar todos os planos, exceto o plano alfa.

11.21.1 Comandos

Este filtro aceita os mesmos comandos que as opções.

11.22 chromahold

Remove todas as informações de cor de todas as cores, exceto de uma determinada.

O filtro aceita as seguintes opções:

color

A cor que não será substituída por croma neutro.

similarity

Porcentagem de similaridade com a cor acima. 0.01 corresponde apenas à cor-chave exata, enquanto 1.0 corresponde a tudo.

blend

Porcentagem de mescla. 0.0 faz os pixels ficarem totalmente cinza ou nada cinza. Valores mais altos preservam mais a cor.

yuv

Sinaliza que a cor passada já está em YUV em vez de RGB.

Cores literais como "green" ou "red" deixam de fazer sentido com isso ativado. Isso pode ser usado para passar valores YUV exatos como números hexadecimais.

11.22.1 Comandos

Este filtro aceita os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.23 chromakey

Seleção de cor/croma (chroma keying) no espaço de cor YUV.

O filtro aceita as seguintes opções:

color

A cor que será substituída por transparência.

similarity

Porcentagem de similaridade com a cor-chave.

0.01 corresponde apenas à cor-chave exata, enquanto 1.0 corresponde a tudo.

blend

Porcentagem de mescla.

0.0 faz os pixels ficarem totalmente transparentes ou nada transparentes.

Valores mais altos produzem pixels semitransparentes, com maior transparência quanto mais a cor do pixel se aproximar da cor-chave.

yuv

Sinaliza que a cor passada já está em YUV em vez de RGB.

Cores literais como "green" ou "red" deixam de fazer sentido com isso ativado. Isso pode ser usado para passar valores YUV exatos como números hexadecimais.

11.23.1 Comandos

Este filtro aceita os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.23.2 Exemplos

  • Tornar transparente cada pixel verde da imagem de entrada:

    ffmpeg -i input.png -vf chromakey=green out.png
    
  • Sobrepor um vídeo com tela verde (greenscreen) sobre um fundo preto estático.

    ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
    

11.24 chromanr

Reduz o ruído de crominância.

O filtro aceita as seguintes opções:

thres

Define o limiar para a média dos valores de crominância. A soma da diferença absoluta dos componentes Y, U e V do pixel atual e dos pixels vizinhos, quando menor que este limiar, será usada na média. O componente luma permanece inalterado e é copiado para a saída. O padrão é 30. O intervalo permitido é de 1 a 200.

sizew

Define o raio horizontal do retângulo usado na média. O intervalo permitido é de 1 a 100. O padrão é 5.

sizeh

Define o raio vertical do retângulo usado na média. O intervalo permitido é de 1 a 100. O padrão é 5.

stepw

Define o passo horizontal ao calcular a média. O padrão é 1. O intervalo permitido é de 1 a 50. Útil principalmente para acelerar a filtragem.

steph

Define o passo vertical ao calcular a média. O padrão é 1. O intervalo permitido é de 1 a 50. Útil principalmente para acelerar a filtragem.

threy

Define o limiar Y para a média dos valores de crominância. Oferece um controle mais fino sobre a diferença máxima permitida entre os componentes Y do pixel atual e dos pixels vizinhos. O padrão é 200. O intervalo permitido é de 1 a 200.

threu

Define o limiar U para a média dos valores de crominância. Oferece um controle mais fino sobre a diferença máxima permitida entre os componentes U do pixel atual e dos pixels vizinhos. O padrão é 200. O intervalo permitido é de 1 a 200.

threv

Define o limiar V para a média dos valores de crominância. Oferece um controle mais fino sobre a diferença máxima permitida entre os componentes V do pixel atual e dos pixels vizinhos. O padrão é 200. O intervalo permitido é de 1 a 200.

distance

Define o tipo de distância usado nos cálculos.

‘manhattan’

Diferença absoluta.

‘euclidean’

Diferença ao quadrado.

O tipo de distância padrão é manhattan.

11.24.1 Comandos

Este filtro é compatível com os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

11.25 chromashift

Desloca os pixels de crominância horizontal e/ou verticalmente.

O filtro aceita as seguintes opções:

cbh

Define a quantidade de deslocamento horizontal da crominância azul.

cbv

Define a quantidade de deslocamento vertical da crominância azul.

crh

Define a quantidade de deslocamento horizontal da crominância vermelha.

crv

Define a quantidade de deslocamento vertical da crominância vermelha.

edge

Define o modo de borda. Pode ser smear, default ou warp.

11.25.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.26 ciescope

Exibe o diagrama de cores CIE com os pixels sobrepostos a ele.

O filtro aceita as seguintes opções:

system

Define o sistema de cores.

‘ntsc, 470m’ ‘ebu, 470bg’ ‘smpte’ ‘240m’ ‘apple’ ‘widergb’ ‘cie1931’ ‘rec709, hdtv’ ‘uhdtv, rec2020’ ‘dcip3’ cie

Define o sistema CIE.

‘xyy’ ‘ucs’ ‘luv’ gamuts

Define quais gamuts serão desenhados.

Consulte a opção system para ver os valores disponíveis.

size, s

Define o tamanho do ciescope. O padrão é 512.

intensity, i

Define a intensidade usada para mapear os valores de pixel de entrada no diagrama CIE.

contrast

Define o contraste usado para desenhar as cores da língua que ficam fora do gamut do sistema de cores ativo.

corrgamma

Corrige a gama exibida no scope. Habilitado por padrão.

showwhite

Exibe o ponto branco no diagrama CIE. Desabilitado por padrão.

gamma

Define a gama de entrada. Usado apenas com o espaço de cor de entrada XYZ.

fill

Preenche com as cores CIE. Habilitado por padrão.

11.27 codecview

Visualiza informações exportadas por alguns codecs.

Alguns codecs podem exportar informações através dos quadros usando side data ou outros meios. Por exemplo, alguns codecs baseados em MPEG exportam vetores de movimento através da flag export_mvs na opção flags2 do codec.

O filtro aceita a seguinte opção:

block

Exibe a estrutura de partição de blocos usando o plano de luma.

mv

Define os vetores de movimento a serem visualizados.

As flags disponíveis para mv são:

‘pf’

MVs de predição direta dos quadros P

‘bf’

MVs de predição direta dos quadros B

‘bb’

MVs de predição reversa dos quadros B

qp

Exibe os parâmetros de quantização usando os planos de crominância.

mv_type, mvt

Define o tipo de vetores de movimento a serem visualizados. Inclui os MVs de todos os quadros, a menos que especificado pela opção frame_type.

As flags disponíveis para mv_type são:

‘fp’

MVs de predição direta

‘bp’

MVs de predição reversa

frame_type, ft

Define o tipo de quadro cujos vetores de movimento serão visualizados.

As flags disponíveis para frame_type são:

‘if’

quadros codificados intra (quadros I)

‘pf’

quadros preditos (quadros P)

‘bf’

quadros preditos bidirecionalmente (quadros B)

11.27.1 Exemplos

  • Visualize os MVs de predição direta de todos os quadros usando ffplay:

    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
    
  • Visualize os MVs multidirecionais dos quadros P e B usando ffplay:

    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
    

11.28 colorbalance

Modifica a intensidade das cores primárias (vermelho, verde e azul) dos quadros de entrada.

O filtro permite ajustar um quadro de entrada nas regiões de sombras, tons médios ou realces para o equilíbrio vermelho-ciano, verde-magenta ou azul-amarelo.

Um valor de ajuste positivo desloca o equilíbrio em direção à cor primária; um valor negativo, em direção à cor complementar.

O filtro aceita as seguintes opções:

rs gs bs

Ajusta as sombras (pixels mais escuros) de vermelho, verde e azul.

rm gm bm

Ajusta os tons médios (pixels intermediários) de vermelho, verde e azul.

rh gh bh

Ajusta os realces (pixels mais claros) de vermelho, verde e azul.

O intervalo permitido para as opções é [-1.0, 1.0]. O padrão é 0.

pl

Preserva a luminosidade ao alterar o equilíbrio de cores. Desabilitado por padrão.

11.28.1 Exemplos

  • Adicionar uma dominante vermelha às sombras:
    colorbalance=rs=.3
    

11.28.2 Comandos

Este filtro aceita todas as opções acima como comandos.

11.29 colorcontrast

Ajusta o contraste de cores entre os componentes RGB.

O filtro aceita as seguintes opções:

rc

Define o contraste vermelho-ciano. O padrão é 0.0. O intervalo permitido vai de -1.0 a 1.0.

gm

Define o contraste verde-magenta. O padrão é 0.0. O intervalo permitido vai de -1.0 a 1.0.

by

Define o contraste azul-amarelo. O padrão é 0.0. O intervalo permitido vai de -1.0 a 1.0.

rcw gmw byw

Define o peso de cada valor das opções rc, gm e by. O valor padrão é 0.0. O intervalo permitido vai de 0.0 a 1.0. Se todos os pesos forem 0.0, a filtragem é desabilitada.

pl

Define o grau de preservação da luminosidade. O valor padrão é 0.0. O intervalo permitido vai de 0.0 a 1.0.

11.29.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.30 colorcorrect

Ajusta o balanço de branco seletivamente para pretos e brancos. Este filtro opera no espaço de cor YUV.

O filtro aceita as seguintes opções:

rl

Define o ponto de sombra vermelho. O intervalo permitido vai de -1.0 a 1.0. O valor padrão é 0.

bl

Define o ponto de sombra azul. O intervalo permitido vai de -1.0 a 1.0. O valor padrão é 0.

rh

Define o ponto de realce vermelho. O intervalo permitido vai de -1.0 a 1.0. O valor padrão é 0.

bh

Define o ponto de realce azul. O intervalo permitido vai de -1.0 a 1.0. O valor padrão é 0.

saturation

Define a quantidade de saturação. O intervalo permitido vai de -3.0 a 3.0. O valor padrão é 1.

analyze

Se definido como qualquer valor diferente de manual, o filtro analisará cada quadro e usará os parâmetros derivados para filtrar o quadro de saída.

Os valores possíveis são:

‘manual’ ‘average’ ‘minmax’ ‘median’

O valor padrão é manual.

11.30.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.31 colorchannelmixer

Ajusta os quadros de entrada de vídeo remixando os canais de cor.

Este filtro modifica um canal de cor somando os valores associados aos demais canais dos mesmos pixels. Por exemplo, se o valor a ser modificado for o vermelho, o valor de saída será:

red=red*rr + blue*rb + green*rg + alpha*ra

O filtro aceita as seguintes opções:

rr rg rb ra

Ajusta a contribuição dos canais de entrada vermelho, verde, azul e alfa para o canal de saída vermelho. O padrão é 1 para rr e 0 para rg, rb e ra.

gr gg gb ga

Ajusta a contribuição dos canais de entrada vermelho, verde, azul e alfa para o canal de saída verde. O padrão é 1 para gg e 0 para gr, gb e ga.

br bg bb ba

Ajusta a contribuição dos canais de entrada vermelho, verde, azul e alfa para o canal de saída azul. O padrão é 1 para bb e 0 para br, bg e ba.

ar ag ab aa

Ajusta a contribuição dos canais de entrada vermelho, verde, azul e alfa para o canal de saída alfa. O padrão é 1 para aa e 0 para ar, ag e ab.

O intervalo permitido para as opções é [-2.0, 2.0].

pc

Define o modo de preservação de cor. Os valores aceitos são:

‘none’

Desabilita a preservação de cor; este é o padrão.

‘lum’

Preserva a luminância.

‘max’

Preserva o valor máximo do trio RGB.

‘avg’

Preserva o valor médio do trio RGB.

‘sum’

Preserva a soma dos valores do trio RGB.

‘nrm’

Preserva o valor normalizado do trio RGB.

‘pwr’

Preserva o valor de potência do trio RGB.

pa

Define a quantidade de preservação de cor ao alterar as cores. O intervalo permitido é [0.0, 1.0]. O padrão é 0.0, ou seja, desabilitado.

11.31.1 Exemplos

  • Converte a fonte para tons de cinza:

    colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
    
  • Simula tons sépia:

    colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
    

11.31.2 Comandos

Este filtro aceita todas as opções acima como comandos.

11.32 colordetect

Analisa os quadros de vídeo para determinar o intervalo de valores efetivo e o modo alfa.

O filtro aceita as seguintes opções:

mode

Conjunto de propriedades a serem detectadas. Propriedades indisponíveis, como o modo alfa para uma imagem de entrada sem canal alfa, serão ignoradas automaticamente.

Aceita uma combinação das seguintes flags:

‘color_range’

Detecta se a fonte contém pixels de luma fora da faixa limitada (MPEG), o que indica que se trata de uma fonte YUV de faixa completa.

‘alpha_mode’

Detecta se a fonte contém valores de cor acima do canal alfa, o que indica que o canal alfa é independente (straight), e não premultiplicado. Também detecta se o plano alfa é totalmente opaco ou não.

‘all’

Ativa a detecção de todas as propriedades acima. Este é o padrão.

11.33 colorize

Sobrepõe uma cor sólida ao fluxo de vídeo.

O filtro aceita as seguintes opções:

hue

Define o matiz da cor. O intervalo permitido vai de 0 a 360. O valor padrão é 0.

saturation

Define a saturação da cor. O intervalo permitido vai de 0 a 1. O valor padrão é 0.5.

lightness

Define a luminosidade da cor. O intervalo permitido vai de 0 a 1. O valor padrão é 0.5.

mix

Define a mistura com a luminosidade da fonte. O padrão é definido como 1.0. O intervalo permitido vai de 0.0 a 1.0.

11.33.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.34 colorkey

Seleção por cor-chave (color keying) no espaço de cor RGB. Este filtro opera em quadros no formato RGB de 8 bits, definindo como 0 o componente alfa de cada pixel que fique dentro do raio de similaridade da cor-chave. O valor alfa dos pixels fora do raio de similaridade depende do valor da opção blend.

O filtro aceita as seguintes opções:

color

Define a cor para a qual o alfa será definido como 0 (transparência total). Consulte a seção "Cor" do manual ffmpeg-utils. O padrão é black.

similarity

Define o raio a partir da cor-chave dentro do qual outras cores também têm transparência total. A distância calculada está relacionada à distância fracionária unitária no espaço 3D entre os valores RGB da cor-chave e a cor do pixel. O intervalo vai de 0.01 a 1.0. 0.01 corresponde a um raio muito pequeno ao redor da cor-chave exata, enquanto 1.0 corresponde a tudo. O padrão é 0.01.

blend

Define como é calculado o valor alfa dos pixels que ficam fora do raio de similaridade. 0.0 torna os pixels totalmente transparentes ou totalmente opacos. Valores mais altos resultam em pixels semitransparentes, com maior transparência quanto mais similar a cor do pixel for à cor-chave. O intervalo vai de 0.0 a 1.0. O padrão é 0.0.

11.34.1 Exemplos

  • Tornar transparente cada pixel verde da imagem de entrada:

    ffmpeg -i input.png -vf colorkey=green out.png
    
  • Sobrepõe um vídeo com fundo verde (greenscreen) a uma imagem de fundo estática.

    ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv
    

11.34.2 Comandos

Este filtro é compatível com os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.35 colorhold

Remove todas as informações de cor de todas as cores RGB, exceto de uma determinada.

O filtro aceita as seguintes opções:

color

A cor que não será substituída por um cinza neutro.

similarity

Porcentagem de similaridade com a cor acima. 0.01 corresponde apenas à cor-chave exata, enquanto 1.0 corresponde a tudo.

blend

Porcentagem de mescla. 0.0 torna os pixels totalmente cinza. Valores mais altos preservam mais cor.

11.35.1 Comandos

Este filtro é compatível com os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.36 colorlevels

Ajusta os quadros de entrada de vídeo usando níveis.

O filtro aceita as seguintes opções:

rimin gimin bimin aimin

Ajusta o ponto preto de entrada de vermelho, verde, azul e alfa. O intervalo permitido para as opções é [-1.0, 1.0]. O padrão é 0.

rimax gimax bimax aimax

Ajusta o ponto branco de entrada de vermelho, verde, azul e alfa. O intervalo permitido para as opções é [-1.0, 1.0]. O padrão é 1.

Os níveis de entrada são usados para clarear os realces (tons claros), escurecer as sombras (tons escuros) e alterar o equilíbrio entre tons claros e escuros.

romin gomin bomin aomin

Ajusta o ponto preto de saída de vermelho, verde, azul e alfa. O intervalo permitido para as opções é [0, 1.0]. O padrão é 0.

romax gomax bomax aomax

Ajusta o ponto branco de saída de vermelho, verde, azul e alfa. O intervalo permitido para as opções é [0, 1.0]. O padrão é 1.

Os níveis de saída permitem a seleção manual de um intervalo de nível de saída restrito.

preserve

Define o modo de preservação de cor. Os valores aceitos são:

‘none’

Desabilita a preservação de cor; este é o padrão.

‘lum’

Preserva a luminância.

‘max’

Preserva o valor máximo do trio RGB.

‘avg’

Preserva o valor médio do trio RGB.

‘sum’

Preserva a soma dos valores do trio RGB.

‘nrm’

Preserva o valor normalizado do trio RGB.

‘pwr’

Preserva o valor de potência do trio RGB.

11.36.1 Exemplos

  • Deixa a saída de vídeo mais escura:

    colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
    
  • Aumenta o contraste:

    colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
    
  • Deixa a saída de vídeo mais clara:

    colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
    
  • Aumenta o brilho:

    colorlevels=romin=0.5:gomin=0.5:bomin=0.5
    

11.36.2 Comandos

Este filtro aceita todas as opções acima como comandos.

11.37 colormap

Aplica mapas de cores personalizados ao fluxo de vídeo.

Este filtro precisa de três fluxos de vídeo de entrada. O primeiro fluxo é o fluxo de vídeo que será filtrado. O segundo e o terceiro fluxos de vídeo especificam os patches de cor para o mapeamento da cor de origem para a cor de destino.

O filtro aceita as seguintes opções:

patch_size

Define o tamanho, em pixels, do patch dos fluxos de vídeo de origem e destino.

nb_patches

Define o número máximo de patches usados dos fluxos de vídeo de origem e destino. O valor padrão é o número de patches disponíveis nos fluxos de vídeo adicionais. O número máximo de patches permitido é 64.

type

Define os ajustes usados para as cores de destino. Pode ser relative ou absolute. O padrão é absolute.

kernel

Define o kernel usado para medir as diferenças de cor entre as cores mapeadas.

Os valores aceitos são:

‘euclidean’ ‘weuclidean’

O padrão é euclidean.

11.38 colormatrix

Converte a matriz de cores.

O filtro aceita as seguintes opções:

src dst

Especifica a matriz de cores de origem e de destino. Ambos os valores devem ser especificados.

Os valores aceitos são:

‘bt709’

BT.709

‘fcc’

FCC

‘bt601’

BT.601

‘bt470’

BT.470

‘bt470bg’

BT.470BG

‘smpte170m’

SMPTE-170M

‘smpte240m’

SMPTE-240M

‘bt2020’

BT.2020

Por exemplo, para converter de BT.601 para SMPTE-240M, use o seguinte comando:

colormatrix=bt601:smpte240m

11.39 colorspace

Converte o espaço de cor, as características de transferência ou os primários de cor. O vídeo de entrada precisa ter um tamanho par.

O filtro aceita as seguintes opções:

all

Especifica todas as propriedades de cor de uma vez.

Os valores aceitos são:

‘bt470m’

BT.470M

‘bt470bg’

BT.470BG

‘bt601-6-525’

BT.601-6 525

‘bt601-6-625’

BT.601-6 625

‘bt709’

BT.709

‘smpte170m’

SMPTE-170M

‘smpte240m’

SMPTE-240M

‘bt2020’

BT.2020

space

Especifica o espaço de cor de saída.

Os valores aceitos são:

‘bt709’

BT.709

‘fcc’

FCC

‘bt470bg’

BT.470BG ou BT.601-6 625

‘smpte170m’

SMPTE-170M ou BT.601-6 525

‘smpte240m’

SMPTE-240M

‘ycgco’

YCgCo

‘bt2020ncl’

BT.2020 com luminância não constante

trc

Especifica as características de transferência de saída.

Os valores aceitos são:

‘bt709’

BT.709

‘bt470m’

BT.470M

‘bt470bg’

BT.470BG

‘gamma22’

Gama constante de 2.2

‘gamma28’

Gama constante de 2.8

‘smpte170m’

SMPTE-170M, BT.601-6 625 ou BT.601-6 525

‘smpte240m’

SMPTE-240M

‘srgb’

SRGB

‘iec61966-2-1’

iec61966-2-1

‘iec61966-2-4’

iec61966-2-4

‘xvycc’

xvycc

‘bt2020-10’

BT.2020 para conteúdo de 10 bits

‘bt2020-12’

BT.2020 para conteúdo de 12 bits

primaries

Especifica os primários de cor de saída.

Os valores aceitos são:

‘bt709’

BT.709

‘bt470m’

BT.470M

‘bt470bg’

BT.470BG ou BT.601-6 625

‘smpte170m’

SMPTE-170M ou BT.601-6 525

‘smpte240m’

SMPTE-240M

‘film’

film

‘smpte431’

SMPTE-431

‘smpte432’

SMPTE-432

‘bt2020’

BT.2020

‘jedec-p22’

Fósforos JEDEC P22

range

Especifica o intervalo de cores de saída.

Os valores aceitos são:

‘tv’

Intervalo TV (restrito)

‘mpeg’

Intervalo MPEG (restrito)

‘pc’

Intervalo PC (completo)

‘jpeg’

Intervalo JPEG (completo)

format

Especifica o formato de cor de saída.

Os valores aceitos são:

‘yuv420p’

YUV 4:2:0 planar de 8 bits

‘yuv420p10’

YUV 4:2:0 planar de 10 bits

‘yuv420p12’

YUV 4:2:0 planar de 12 bits

‘yuv422p’

YUV 4:2:2 planar de 8 bits

‘yuv422p10’

YUV 4:2:2 planar de 10 bits

‘yuv422p12’

YUV 4:2:2 planar de 12 bits

‘yuv444p’

YUV 4:4:4 planar de 8 bits

‘yuv444p10’

YUV 4:4:4 planar de 10 bits

‘yuv444p12’

YUV 4:4:4 planar de 12 bits

fast

Faz uma conversão rápida, que ignora a correção de gama/primários. Isso consome significativamente menos CPU, mas é matematicamente incorreto. Para obter uma saída compatível com a produzida pelo filtro colormatrix, use fast=1.

dither

Especifica o modo de dithering.

Os valores aceitos são:

‘none’

Sem dithering

‘fsb’

Dithering Floyd-Steinberg

wpadapt

Modo de adaptação do ponto branco.

Os valores aceitos são:

‘bradford’

Adaptação do ponto branco de Bradford

‘vonkries’

Adaptação do ponto branco de von Kries

‘identity’

adaptação do ponto branco de identidade (ou seja, sem adaptação do ponto branco)

clipgamut

Controla como recortar as cores fora do gamut resultantes da conversão de espaço de cor.

Os valores aceitos são:

‘none’

Sem recorte de cores fora do gamut.

‘rgb’

Recorta os valores RGB no intervalo [0, 1] ao construir as LUTs de transferência de gama.

iall

Sobrescreve todas as propriedades de entrada de uma vez. Aceita os mesmos valores que all.

ispace

Sobrescreve o espaço de cor de entrada. Aceita os mesmos valores que space.

iprimaries

Sobrescreve os primários de cor de entrada. Aceita os mesmos valores que primaries.

itrc

Sobrescreve as características de transferência de entrada. Aceita os mesmos valores que trc.

irange

Sobrescreve o intervalo de cor de entrada. Aceita os mesmos valores que range.

O filtro converte as características de transferência, o espaço de cor e os primários de cor para os valores especificados pelo usuário. O valor de saída, se não especificado, é definido com um valor padrão baseado na propriedade "all". Se essa propriedade também não for especificada, o filtro registrará um erro. O intervalo de cor e o formato de saída assumem por padrão o mesmo valor do intervalo de cor e do formato de entrada. As características de transferência, o espaço de cor, os primários de cor e o intervalo de cor de entrada devem estar definidos nos dados de entrada. Se algum deles estiver ausente, o filtro registrará um erro e nenhuma conversão será realizada.

Por exemplo, para converter a entrada para SMPTE-240M, use o comando:

colorspace=smpte240m

11.40 colortemperature

Ajusta a temperatura de cor no vídeo para simular variações na temperatura de cor ambiente.

O filtro aceita as seguintes opções:

temperature

Define a temperatura em Kelvin. O intervalo permitido é de 1000 a 40000. O valor padrão é 6500 K.

mix

Define a mistura com a saída filtrada. O intervalo permitido é de 0 a 1. O valor padrão é 1.

pl

Define a quantidade de preservação de luminosidade. O intervalo permitido é de 0 a 1. O valor padrão é 0.

11.40.1 Comandos

Este filtro aceita os mesmos comandos que as opções.

11.41 convolution

Aplica convolução de 3x3, 5x5, 7x7 ou horizontal/vertical de até 49 elementos.

O filtro aceita as seguintes opções:

0m 1m 2m 3m

Define a matriz para cada plano. A matriz é uma sequência de 9, 25 ou 49 inteiros com sinal no modo quadrado, e de 1 a 49 inteiros com sinal, em número ímpar, no modo linha.

0rdiv 1rdiv 2rdiv 3rdiv

Define o multiplicador do valor calculado para cada plano. Se não definido ou igual a 0, será 1/soma de todos os elementos da matriz.

0bias 1bias 2bias 3bias

Define o viés para cada plano. Esse valor é somado ao resultado da multiplicação. Útil para tornar a imagem geral mais clara ou mais escura. O padrão é 0.0.

0mode 1mode 2mode 3mode

Define o modo de matriz para cada plano. Pode ser square, row ou column. O padrão é square.

11.41.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.41.2 Exemplos

  • Aplicar nitidez:

    convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0"
    
  • Aplicar desfoque:

    convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9"
    
  • Aplicar realce de bordas:

    convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128"
    
  • Aplicar detecção de bordas:

    convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128"
    
  • Aplicar detector de bordas laplaciano que inclui diagonais:

    convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0"
    
  • Aplicar relevo:

    convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
    

11.42 convolve

Aplica convolução 2D do fluxo de vídeo no domínio da frequência usando o segundo fluxo como impulso.

O filtro aceita as seguintes opções:

planes

Define quais planos processar.

impulse

Define quais quadros de vídeo de impulso serão processados; pode ser first ou all. O padrão é all.

O filtro convolve também aceita as opções de framesync.

11.43 copy

Copia a fonte de vídeo de entrada sem alterações para a saída. Isso é útil principalmente para fins de teste.

11.44 coreimage

Filtragem de vídeo na GPU usando a API CoreImage da Apple no OSX.

A aceleração por hardware se baseia em um contexto OpenGL. Normalmente, isso significa que o processamento é feito pelo hardware de vídeo. No entanto, existem implementações de OpenGL baseadas em software, o que significa que não há garantia de processamento por hardware. Isso depende da versão do OSX utilizada.

A Apple disponibiliza diversos filtros e geradores de imagem, cada um com uma grande variedade de opções. O filtro precisa ser referenciado pelo seu nome, junto com suas opções.

O filtro coreimage aceita as seguintes opções:

list_filters

Lista todos os filtros e geradores disponíveis, junto com todas as suas respectivas opções, bem como os possíveis valores mínimo e máximo e os valores padrão.

list_filters=true

filter

Especifica todos os filtros pelo respectivo nome e opções. Use list_filters para determinar todos os nomes de filtro e opções válidos. As opções numéricas são especificadas por um valor float e são automaticamente limitadas ao seu respectivo intervalo de valores. As opções de vetor e cor precisam ser especificadas por uma lista de valores float separados por espaço. O escape de caracteres precisa ser feito. Um nome de opção especial, default, está disponível para usar as opções padrão de um filtro.

É necessário especificar default ou pelo menos uma das opções do filtro. Todas as opções omitidas são usadas com seus valores padrão. A sintaxe da string do filtro é a seguinte:

filter=<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...][#<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...]][#...]

output_rect

Especifica um retângulo para onde a saída da cadeia de filtros é copiada na imagem de entrada. É dado por uma lista de valores float separados por espaço:

output_rect=x\ y\ width\ height

Se não for informado, o retângulo de saída é igual às dimensões da imagem de entrada. O retângulo de saída é automaticamente recortado nas bordas da imagem de entrada. Valores negativos são válidos para cada componente.

output_rect=25\ 25\ 100\ 100

Vários filtros podem ser encadeados para processamento sucessivo sem transferências GPU-HOST, permitindo processar rapidamente cadeias de filtros complexas. Atualmente, há suporte apenas para filtros com zero (geradores) ou exatamente uma (filtros) imagem de entrada e uma imagem de saída. Além disso, os filtros de transição ainda não podem ser usados como pretendido.

Alguns filtros geram imagens de saída com preenchimento adicional dependendo do respectivo kernel do filtro. O preenchimento é removido automaticamente para garantir que a saída do filtro tenha o mesmo tamanho da imagem de entrada.

Para geradores de imagem, o tamanho da imagem de saída é determinado pela imagem de saída anterior da cadeia de filtros ou pela imagem de entrada de toda a cadeia de filtros, conforme o caso. Os geradores não usam as informações de pixel dessa imagem para gerar sua saída. No entanto, a saída gerada é mesclada sobre essa imagem, resultando em cobertura parcial ou completa da imagem de saída.

A fonte de vídeo coreimagesrc pode ser usada para gerar imagens de entrada que são alimentadas diretamente na cadeia de filtros. Ao usá-la, não é necessário fornecer imagens de entrada por meio de outra fonte de vídeo ou de um vídeo de entrada.

11.44.1 Exemplos

  • Listar todos os filtros disponíveis:

    coreimage=list_filters=true
    
  • Usar o filtro CIBoxBlur com as opções padrão para desfocar uma imagem:

    coreimage=filter=CIBoxBlur@default
    
  • Usar uma cadeia de filtros com CISepiaTone nos valores padrão e CIVignetteEffect com o centro em 100x100 e um raio de 50 pixels:

    coreimage=filter=CIBoxBlur@default#CIVignetteEffect@inputCenter=100\ 100@inputRadius=50
    
  • Usar nullsrc e CIQRCodeGenerator para criar um QR code para a página inicial do FFmpeg, apresentado como uma linha de comando completa e com escape para o shell bash padrão da Apple:

    ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
    

11.45 corr

Obtém a correlação entre dois vídeos de entrada.

Este filtro recebe dois vídeos de entrada.

Para que este filtro funcione corretamente, os dois vídeos de entrada precisam ter a mesma resolução e o mesmo pixel format. Também presume que ambas as entradas têm o mesmo número de quadros, que são comparados um a um.

A correlação obtida por componente, média, mínima e máxima é impressa pelo sistema de log.

O filtro armazena a correlação calculada de cada quadro nos metadados do quadro.

Este filtro também aceita as opções de framesync.

No exemplo abaixo, o arquivo de entrada main.mpg processado é comparado com o arquivo de referência ref.mpg.

ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -

11.46 cover_rect

Cobre um objeto retangular

Aceita as seguintes opções:

cover

Caminho do arquivo da imagem de cobertura opcional; precisa estar em yuv420.

mode

Define o modo de cobertura.

Aceita os seguintes valores:

‘cover’

cobre com a imagem fornecida

‘blur’

cobre interpolando os pixels ao redor

O valor padrão é blur.

11.46.1 Exemplos

  • Cobrir um objeto retangular com a imagem fornecida em um determinado vídeo usando o ffmpeg:
    ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
    

11.47 crop

Recorta o vídeo de entrada nas dimensões dadas.

Aceita os seguintes parâmetros:

w, out_w

A largura do vídeo de saída. O padrão é iw. Esta expressão é avaliada apenas uma vez durante a configuração do filtro, ou quando o comando ‘w’ ou ‘out_w’ é enviado.

h, out_h

A altura do vídeo de saída. O padrão é ih. Esta expressão é avaliada apenas uma vez durante a configuração do filtro, ou quando o comando ‘h’ ou ‘out_h’ é enviado.

x

A posição horizontal, no vídeo de entrada, da borda esquerda do vídeo de saída. O padrão é (in_w-out_w)/2. Esta expressão é avaliada por quadro.

y

A posição vertical, no vídeo de entrada, da borda superior do vídeo de saída. O padrão é (in_h-out_h)/2. Esta expressão é avaliada por quadro.

keep_aspect

Se definido como 1, força a proporção de aspecto de exibição de saída a ser igual à de entrada, alterando a proporção de aspecto de amostra de saída. O padrão é 0.

exact

Ativa o recorte exato. Se ativado, os vídeos subamostrados serão recortados exatamente na largura/altura/x/y especificadas e não serão arredondados para o valor menor mais próximo. O padrão é 0.

Os parâmetros out_w, out_h, x, y são expressões que contêm as seguintes constantes:

x y

Os valores calculados para x e y. São avaliados a cada novo quadro.

in_w in_h

A largura e a altura de entrada.

iw ih

São os mesmos que in_w e in_h.

out_w out_h

A largura e a altura de saída (recortada).

ow oh

São os mesmos que out_w e out_h.

a

o mesmo que iw / ih

sar

proporção de aspecto de amostra de entrada

dar

proporção de aspecto de exibição de entrada; é a mesma que (iw / ih) * sar

hsub vsub

valores de subamostragem de croma horizontal e vertical. Por exemplo, para o pixel format "yuv422p", hsub é 2 e vsub é 1.

n

O número do quadro de entrada, começando em 0.

pos

a posição do quadro de entrada no arquivo; NAN se desconhecida; obsoleto, não use

t

A marca de tempo expressa em segundos. É NAN se a marca de tempo de entrada for desconhecida.

A expressão de out_w pode depender do valor de out_h, e a expressão de out_h pode depender de out_w, mas ambas não podem depender de x e y, já que x e y são avaliados depois de out_w e out_h.

Os parâmetros x e y especificam as expressões para a posição do canto superior esquerdo da área de saída (não recortada). Eles são avaliados a cada quadro. Se o valor avaliado não for válido, ele é aproximado para o valor válido mais próximo.

A expressão de x pode depender de y, e a expressão de y pode depender de x.

11.47.1 Exemplos

  • Recortar uma área de tamanho 100x100 na posição (12,34).
    crop=100:100:12:34
    

Usando opções nomeadas, o exemplo acima fica:

    crop=w=100:h=100:x=12:y=34
  • Recortar a área central de entrada com tamanho 100x100:

    crop=100:100
    
  • Recortar a área central de entrada com 2/3 do tamanho do vídeo de entrada:

    crop=2/3*in_w:2/3*in_h
    
  • Recortar o quadrado central do vídeo de entrada:

    crop=out_w=in_h
    crop=in_h
    
  • Delimitar o retângulo com o canto superior esquerdo na posição 100:100 e o canto inferior direito correspondendo ao canto inferior direito da imagem de entrada.

    crop=in_w-100:in_h-100:100:100
    
  • Recortar 10 pixels das bordas esquerda e direita, e 20 pixels das bordas superior e inferior

    crop=in_w-2*10:in_h-2*20
    
  • Manter apenas o quarto inferior direito da imagem de entrada:

    crop=in_w/2:in_h/2:in_w/2:in_h/2
    
  • Recortar a altura para obter a harmonia grega:

    crop=in_w:1/PHI*in_w
    
  • Aplicar efeito de tremor:

    crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
    
  • Aplicar efeito de câmera errática dependendo da marca de tempo:

    crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)
    
  • Definir x dependendo do valor de y:

    crop=in_w/2:in_h/2:y:10+10*sin(n/10)
    

11.47.2 Comandos

Este filtro aceita os seguintes comandos:

w, out_w h, out_h x y

Define a largura/altura do vídeo de saída e a posição horizontal/vertical no vídeo de entrada. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.48 cropdetect

Detecta automaticamente o tamanho de recorte.

Calcula os parâmetros de recorte necessários e imprime os parâmetros recomendados pelo sistema de log. As dimensões detectadas correspondem à área não preta ou à área de vídeo da entrada, de acordo com mode.

Aceita os seguintes parâmetros:

mode

Dependendo de mode, a detecção de recorte se baseia apenas no valor de preto dos pixels ao redor, ou em uma combinação de vetores de movimento e pixels de borda.

‘black’

Detecta os pixels pretos que cercam o vídeo em reprodução. Para um controle mais preciso, use a opção limit.

‘mvedges’

Detecta o vídeo em reprodução por meio dos vetores de movimento dentro do vídeo e da varredura de pixels de borda que normalmente formam a borda de um vídeo em reprodução.

limit

Define o limiar de valor de preto mais alto, que pode ser especificado opcionalmente de nada (0) a tudo (255 para formatos baseados em 8 bits). Um valor de intensidade maior que o valor definido é considerado não preto. O padrão é 24. Também é possível especificar um valor entre 0.0 e 1.0, que será escalonado de acordo com a profundidade de bits do pixel format.

round

O valor pelo qual a largura/altura deve ser divisível. O padrão é 16. O deslocamento é ajustado automaticamente para centralizar o vídeo. Use 2 para obter apenas dimensões pares (necessário para vídeo 4:2:2). 16 é o melhor valor ao codificar para a maioria dos codecs de vídeo.

skip

Define o número de quadros iniciais para os quais a avaliação é ignorada. O padrão é 2. O intervalo é de 0 a INT_MAX.

reset_count, reset

Define o contador que determina após quantos quadros o cropdetect vai redefinir a maior área de vídeo detectada anteriormente e recomeçar a detectar a área de recorte ideal atual. O valor padrão é 0.

Isso pode ser útil quando logotipos de canal distorcem a área de vídeo. 0 indica ’nunca redefinir’ e retorna a maior área encontrada durante a reprodução.

mv_threshold

Define o movimento em unidades de pixel usado como limiar para a detecção de movimento. O padrão é 8.

low high

Define os valores de limiar baixo e alto usados pelo algoritmo de limiarização de Canny.

O limiar alto seleciona os pixels de borda "fortes", que são então conectados por 8-conectividade aos pixels de borda "fracos" selecionados pelo limiar baixo.

Os valores de limiar low e high devem ser escolhidos no intervalo [0,1], e low deve ser menor ou igual a high.

O valor padrão de low é 5/255, e o valor padrão de high é 15/255.

11.48.1 Exemplos

  • Encontrar a área de vídeo cercada por bordas pretas:

    ffmpeg -i file.mp4 -vf cropdetect,metadata=mode=print -f null -
    
  • Encontrar uma área de vídeo incorporada, gerando vetores de movimento previamente:

    ffmpeg -i file.mp4 -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -f null -
    
  • Encontrar uma área de vídeo incorporada, usando vetores de movimento do decoder:

    ffmpeg -flags2 +export_mvs -i file.mp4 -vf cropdetect=mode=mvedges,metadata=mode=print -f null -
    

11.48.2 Comandos

Este filtro aceita os seguintes comandos:

limit

O comando aceita a mesma sintaxe da opção correspondente. Se a expressão especificada não for válida, o valor atual é mantido.

11.49 cue

Atrasa a filtragem de vídeo até uma determinada marca de tempo de relógio de parede (wallclock). O filtro primeiro deixa passar a quantidade de quadros definida em preroll, depois armazena em buffer no máximo a quantidade de quadros definida em buffer e aguarda o cue. Ao atingir o cue, ele encaminha os quadros armazenados em buffer, bem como todos os quadros subsequentes que chegam em sua entrada.

O filtro pode ser usado para sincronizar a saída de vários processos ffmpeg para dispositivos de saída em tempo real, como o decklink. Ao colocar o atraso na cadeia de filtragem e pré-armazenar os quadros em buffer, o processo pode repassar os dados para a saída quase imediatamente após a marca de tempo de relógio de parede alvo ser atingida.

Não é possível garantir uma precisão de quadro perfeita, mas o resultado é bom o suficiente para alguns casos de uso.

cue

A marca de tempo do cue, expressa como uma marca de tempo UNIX em microssegundos. O padrão é 0.

preroll

A duração do conteúdo a ser repassado como preroll, expressa em segundos. O padrão é 0.

buffer

A duração máxima do conteúdo a ser armazenado em buffer antes de aguardar o cue, expressa em segundos. O padrão é 0.

11.50 curves

Aplica ajustes de cor usando curvas.

Este filtro é semelhante às ferramentas de curvas do Adobe Photoshop e do GIMP. Cada componente (vermelho, verde e azul) tem seus valores definidos por N pontos-chave ligados entre si por meio de uma curva suave. O eixo x representa os valores de pixel do quadro de entrada, e o eixo y os novos valores de pixel a serem definidos para o quadro de saída.

Por padrão, uma curva de componente é definida pelos dois pontos (0;0) e (1;1). Isso cria uma linha reta em que cada valor de pixel original é "ajustado" para seu próprio valor, o que significa nenhuma alteração na imagem.

O filtro permite redefinir esses dois pontos e adicionar mais alguns. Uma nova curva será definida para passar suavemente por todas essas novas coordenadas. Os novos pontos definidos precisam ser estritamente crescentes ao longo do eixo x, e seus valores x e y devem estar no intervalo [0;1]. A curva é formada usando interpolação spline cúbica natural ou monotônica, dependendo da opção interp (padrão: natural). A spline natural produz uma curva geralmente mais suave, enquanto a spline monotônica (pchip) garante que as transições entre os pontos especificados sejam monotônicas. Se as curvas calculadas saírem dos espaços vetoriais, os valores serão recortados de acordo.

O filtro aceita as seguintes opções:

preset

Seleciona uma das predefinições de cor disponíveis. Esta opção pode ser usada em conjunto com os parâmetros r, g, b; nesse caso, as opções posteriores têm prioridade sobre os valores da predefinição. As predefinições disponíveis são:

‘none’ ‘color_negative’ ‘cross_process’ ‘darker’ ‘increase_contrast’ ‘lighter’ ‘linear_contrast’ ‘medium_contrast’ ‘negative’ ‘strong_contrast’ ‘vintage’

O padrão é none.

master, m

Define os pontos-chave master. Esses pontos definem um mapeamento de segunda passada. Às vezes é chamado de mapeamento de "luminância" ou de "valor". Pode ser usado com r, g, b ou all, já que age como uma LUT de pós-processamento.

red, r

Define os pontos-chave do componente vermelho.

green, g

Define os pontos-chave do componente verde.

blue, b

Define os pontos-chave do componente azul.

all

Define os pontos-chave de todos os componentes (não incluindo master). Pode ser usado em conjunto com as demais opções de componente de pontos-chave. Nesse caso, o(s) componente(s) não definido(s) recorrerá(ão) a esta configuração all.

psfile

Especifica um arquivo de curvas do Photoshop (.acv) do qual importar as configurações.

plot

Salva o script Gnuplot das curvas no arquivo especificado.

interp

Especifica o tipo de interpolação. Os algoritmos disponíveis são:

‘natural’

Spline cúbica natural, usando um polinômio cúbico por partes duas vezes continuamente diferenciável.

‘pchip’

Spline cúbica monotônica, usando um polinômio de interpolação cúbica de Hermite por partes (PCHIP).

Para evitar alguns conflitos de sintaxe do filtergraph, cada lista de pontos-chave precisa ser definida usando a seguinte sintaxe: x0/y0 x1/y1 x2/y2 ....

11.50.1 Comandos

Este filtro aceita os mesmos comandos que as opções.

11.50.2 Exemplos

  • Aumentar levemente o nível médio de azul:

    curves=blue='0/0 0.5/0.58 1/1'
    
  • Efeito vintage:

    curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
    

Aqui obtemos as seguintes coordenadas para cada componente:

red

(0;0.11) (0.42;0.51) (1;0.95)

green

(0;0) (0.50;0.48) (1;1)

blue

(0;0.22) (0.49;0.44) (1;0.80)

  • O exemplo anterior também pode ser obtido com a predefinição integrada associada:

    curves=preset=vintage
    
  • Ou simplesmente:

    curves=vintage
    
  • Usar uma predefinição do Photoshop e redefinir os pontos do componente verde:

    curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
    
  • Verificar as curvas do perfil cross_process usando ffmpeg e gnuplot:

    ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
    gnuplot -p /tmp/curves.plt
    

11.51 datascope

Filtro de análise de dados de vídeo.

Este filtro mostra os valores de pixel em hexadecimal de parte do vídeo.

O filtro aceita as seguintes opções:

size, s

Define o tamanho do vídeo de saída.

x

Define o deslocamento x de onde os pixels são obtidos.

y

Define o deslocamento y de onde os pixels são obtidos.

mode

Define o modo do scope. Pode ser um dos seguintes:

‘mono’

Desenha os valores de pixel em hexadecimal em branco sobre fundo preto.

‘color’

Desenha os valores de pixel em hexadecimal na cor do pixel do vídeo de entrada sobre fundo preto.

‘color2’

Desenha os valores de pixel em hexadecimal sobre um fundo com a cor obtida do vídeo de entrada; a cor do texto é escolhida de forma a ficar sempre visível.

axis

Desenha os números das linhas e colunas à esquerda e no topo do vídeo.

opacity

Define a opacidade do fundo.

format

Define o formato de exibição dos números. Pode ser hex ou dec. O padrão é hex.

components

Define os componentes de pixel a exibir. Por padrão, todos os componentes de pixel são exibidos.

11.51.1 Comandos

Este filtro aceita os mesmos comandos que as opções, exceto a opção size.

11.52 dblur

Aplica o filtro de desfoque direcional (Directional blur).

O filtro aceita as seguintes opções:

angle

Define o ângulo do desfoque direcional. O padrão é 45.

radius

Define o raio do desfoque direcional. O padrão é 5.

planes

Define quais planos filtrar. Por padrão, todos os planos são filtrados.

11.52.1 Comandos

Este filtro aceita os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.53 dctdnoiz

Remove ruído dos quadros usando DCT 2D (filtragem no domínio da frequência).

Este filtro não foi projetado para uso em tempo real.

O filtro aceita as seguintes opções:

sigma, s

Define a constante sigma do ruído.

Esse sigma define um limiar rígido de 3 * sigma; todo coeficiente DCT (valor absoluto) abaixo desse limiar será descartado.

Se você precisar de uma filtragem mais avançada, veja expr.

O padrão é 0.

overlap

Define o número de pixels sobrepostos de cada bloco. Como este filtro pode ser lento, talvez você queira reduzir esse valor, ao custo de um filtro menos eficaz e do risco de vários artefatos.

Se o valor de sobreposição não permitir processar toda a largura ou altura de entrada, será exibido um aviso e as bordas correspondentes não terão o ruído removido.

O valor padrão é blocksize-1, que é a melhor configuração possível.

expr, e

Define a expressão do fator de coeficiente.

Para cada coeficiente de um bloco DCT, esta expressão será avaliada como um valor multiplicador para o coeficiente.

Se esta opção estiver definida, a opção sigma será ignorada.

O valor absoluto do coeficiente pode ser acessado por meio da variável c.

n

Define o tamanho do bloco usando o número de bits. 1<<n define o tamanho do bloco, que corresponde à largura e à altura dos blocos processados.

O valor padrão é 3 (8x8) e pode ser aumentado para 4 para um tamanho de bloco de 16x16. Observe que alterar essa configuração tem grandes consequências na velocidade de processamento. Além disso, um tamanho de bloco maior não significa necessariamente uma melhor remoção de ruído.

11.53.1 Exemplos

Aplica uma redução de ruído com sigma de 4.5:

dctdnoiz=4.5

A mesma operação pode ser obtida usando o sistema de expressões:

dctdnoiz=e='gte(c, 4.5*3)'

Redução de ruído intensa usando um tamanho de bloco de 16x16:

dctdnoiz=15:n=4

11.54 deband

Remove artefatos de banding do vídeo de entrada. Funciona substituindo os pixels com banding pela média dos valores dos pixels de referência.

O filtro aceita as seguintes opções:

1thr 2thr 3thr 4thr

Define o limiar de detecção de banding para cada plano. O padrão é 0.02. O intervalo válido é de 0.00003 a 0.5. Se a diferença entre o pixel atual e o pixel de referência for menor que o limiar, ele será considerado como tendo banding.

range, r

Intervalo de detecção de banding em pixels. O padrão é 16. Se positivo, será usado um número aleatório no intervalo de 0 até o valor definido. Se negativo, será usado o valor absoluto exato. O intervalo define um quadrado de quatro pixels ao redor do pixel atual.

direction, d

Define a direção em radianos a partir da qual os quatro pixels serão comparados. Se positiva, será escolhida uma direção aleatória entre 0 e a direção definida. Se negativa, será usado o valor absoluto exato. Por exemplo, direção 0, -PI ou -2*PI radianos selecionará apenas pixels na mesma linha, e -PI/2 selecionará apenas pixels na mesma coluna.

blur, b

Se ativado, o pixel atual é comparado com a média dos quatro pixels ao redor. O padrão é ativado. Se desativado, o pixel atual é comparado com cada um dos quatro pixels ao redor. O pixel é considerado como tendo banding somente se todas as quatro diferenças com os pixels ao redor forem menores que o limiar.

coupling, c

Se ativado, o pixel atual só é alterado se todos os seus componentes tiverem banding, ou seja, se o limiar de detecção de banding for atingido em todos os componentes de cor. O padrão é desativado.

11.54.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.55 deblock

Remove artefatos de blocagem do vídeo de entrada.

O filtro aceita as seguintes opções:

filter

Define o tipo de filtro: pode ser weak ou strong. O padrão é strong. Isso controla qual tipo de remoção de blocagem é aplicada.

block

Define o tamanho do bloco; o intervalo permitido é de 4 a 512. O padrão é 8.

alpha beta gamma delta

Define os limiares de detecção de blocagem. O intervalo permitido é de 0 a 1. Os padrões são: 0.098 para alpha e 0.05 para os demais. Usar um limiar mais alto aumenta a intensidade da remoção de blocagem. Definir alpha controla a detecção do limiar exatamente na borda do bloco. As demais opções controlam a detecção do limiar próximo à borda, cada uma para baixo/cima ou esquerda/direita. Definir qualquer uma delas como 0 desativa a remoção de blocagem.

planes

Define os planos a filtrar. O padrão é filtrar todos os planos disponíveis.

11.55.1 Exemplos

  • Remove blocagem usando o filtro weak e tamanho de bloco de 4 pixels.

    deblock=filter=weak:block=4
    
  • Remove blocagem usando o filtro strong, tamanho de bloco de 4 pixels e limiares personalizados para remover blocagem em mais bordas.

    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
    
  • Semelhante ao anterior, mas filtra apenas o primeiro plano.

    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
    
  • Semelhante ao anterior, mas filtra apenas o segundo e o terceiro plano.

    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
    

11.55.2 Comandos

Este filtro aceita todas as opções acima como comandos.

11.56 decimate

Descarta quadros duplicados em intervalos regulares.

O filtro aceita as seguintes opções:

cycle

Define o número de quadros a partir do qual um será descartado. Definir isso como N significa que um quadro em cada lote de N quadros será descartado. O padrão é 5.

dupthresh

Define o limiar de detecção de duplicatas. Se a métrica de diferença de um quadro for menor ou igual a esse valor, ele será considerado duplicado. O padrão é 1.1

scthresh

Define o limiar de mudança de cena. O padrão é 15.

blockx blocky

Define o tamanho dos blocos dos eixos x e y usados no cálculo das métricas. Blocos maiores melhoram a supressão de ruído, mas pioram a detecção de pequenos movimentos. Deve ser uma potência de dois. O padrão é 32.

ppsrc

Marca a entrada principal como uma entrada pré-processada e ativa o fluxo de entrada de origem limpa. Isso permite que a entrada seja pré-processada com vários filtros para ajudar no cálculo das métricas, mantendo a seleção de quadros sem perdas. Quando definido como 1, o primeiro fluxo é a entrada pré-processada, e o segundo fluxo é a origem limpa a partir da qual os quadros mantidos são escolhidos. O padrão é 0.

chroma

Define se o croma é considerado no cálculo das métricas. O padrão é 1.

mixed

Define se a entrada contém apenas parcialmente conteúdo a ser decimado. O padrão é false. Se ativado, o fluxo de vídeo de saída terá taxa de quadros variável.

11.57 deconvolve

Aplica deconvolução 2D do fluxo de vídeo no domínio da frequência, usando o segundo fluxo como impulso.

O filtro aceita as seguintes opções:

planes

Define quais planos processar.

impulse

Define quais quadros de vídeo de impulso serão processados; pode ser first ou all. O padrão é all.

noise

Define o ruído usado nas divisões. O padrão é 0.0000001. Útil quando a largura e a altura não são iguais nem potência de 2, ou quando o fluxo já continha ruído antes da convolução.

O filtro deconvolve também é compatível com as opções framesync.

11.58 dedot

Reduz o cross-luminance (dot-crawl) e o cross-color (rainbows) do vídeo.

Aceita as seguintes opções:

m

Define o modo de operação. Pode ser uma combinação de dotcrawl para redução de cross-luminance e/ou rainbows para redução de cross-color.

lt

Define o limiar espacial de luma. Valores menores aumentam a redução de cross-luminance.

tl

Define a tolerância temporal de luma. Valores maiores aumentam a redução de cross-luminance.

tc

Define a tolerância para a variação temporal de croma. Valores maiores aumentam a redução de cross-color.

ct

Define o limiar temporal de croma. Valores menores aumentam a redução de cross-color.

11.59 deflate

Aplica o efeito deflate (contração) ao vídeo.

Este filtro substitui o pixel pela média local (3x3), considerando apenas os valores menores que o pixel.

Aceita as seguintes opções:

threshold0 threshold1 threshold2 threshold3

Limita a alteração máxima para cada plano; o padrão é 65535. Se 0, o plano permanece inalterado.

11.59.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.60 deflicker

Remove variações temporais de luminância entre quadros.

Aceita as seguintes opções:

size, s

Define o tamanho do filtro de média móvel em quadros. O padrão é 5. O intervalo permitido é de 2 a 129.

mode, m

Define o modo de média usado para suavizar as variações temporais de luminância.

Os valores disponíveis são:

‘am’

Média aritmética

‘gm’

Média geométrica

‘hm’

Média harmônica

‘qm’

Média quadrática

‘cm’

Média cúbica

‘pm’

Média de potência

‘median’

Mediana

bypass

Na prática, não modifica o quadro. Útil quando se deseja apenas os metadados.

11.61 deinterlace_d3d12

Desentrelaça o vídeo de entrada usando o processamento de vídeo acelerado por hardware D3D12.

Este filtro usa o DirectX 12 Video Processor para realizar o desentrelaçamento na GPU, sendo compatível com o algoritmo simples bob e com algoritmos avançados (adaptativos ao movimento) definidos pelo driver. Requer que a entrada esteja no pixel format de hardware d3d12.

O filtro consulta automaticamente o hardware quanto ao número necessário de quadros de referência temporal (se necessário) e gerencia uma fila de quadros para fornecê-los.

Aceita as seguintes opções:

method

O método de desentrelaçamento. Aceita um dos seguintes valores:

‘default’

Seleciona o melhor método de desentrelaçamento disponível no hardware. Se o driver for compatível com custom, esse método é usado; caso contrário, recorre a bob. Este é o padrão.

‘bob’

Desentrelaçamento bob. Cada campo é escalado de forma independente para a altura total do quadro. Simples e rápido, mas pode produzir artefatos bob visíveis em conteúdo em movimento.

‘custom’

Desentrelaçamento avançado definido pelo driver. O algoritmo exato é específico do hardware e normalmente emprega técnicas adaptativas ao movimento com quadros de referência temporal para maior qualidade.

O valor padrão é default.

mode

Especifica o modo de entrelaçamento. Aceita um dos seguintes valores:

‘frame’

Envia um quadro para cada quadro. A taxa de quadros de saída é igual à taxa de quadros de entrada. Este é o padrão.

‘field’

Envia um quadro para cada campo. A taxa de quadros de saída é o dobro da taxa de quadros de entrada.

O valor padrão é frame.

deint

Especifica quais quadros desentrelaçar. Aceita um dos seguintes valores:

‘all’

Desentrelaça todos os quadros. Este é o padrão.

‘interlaced’

Desentrelaça apenas os quadros marcados como entrelaçados; os quadros progressivos passam inalterados.

O valor padrão é all.

11.61.1 Exemplos

  • Desentrelaça um vídeo entrelaçado usando decodificação por software e o melhor método de desentrelaçamento por hardware disponível:

    ffmpeg -init_hw_device d3d12va=d3d12 -filter_hw_device d3d12 -i input.ts \
           -vf "format=nv12,hwupload,deinterlace_d3d12=method=default,hwdownload,format=nv12" \
           -c:v libx264 -crf 18 output.mp4
    
  • Desentrelaça na taxa de campos (o dobro da taxa de quadros) usando o método bob com decodificação por hardware (pipeline d3d12 completo):

    ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.ts \
           -vf "deinterlace_d3d12=method=bob:mode=field" \
           -c:v h264_d3d12va output.mp4
    
  • Desentrelaça apenas os quadros entrelaçados, deixando os quadros progressivos passarem sem alteração:

    ffmpeg -init_hw_device d3d12va=d3d12 -filter_hw_device d3d12 -i input.ts \
           -vf "format=nv12,hwupload,deinterlace_d3d12=deint=interlaced,hwdownload,format=nv12" \
           -c:v libx264 -crf 18 output.mp4
    

11.62 dejudder

Remove o judder produzido por conteúdo telecinado parcialmente entrelaçado.

O judder pode ser introduzido, por exemplo, pelo filtro pullup. Se a fonte original era conteúdo parcialmente telecinado, a saída de pullup,dejudder terá taxa de quadros variável. Isso pode alterar a taxa de quadros registrada no container. Fora essa alteração, este filtro não afeta vídeo com taxa de quadros constante.

A opção disponível neste filtro é:

cycle

Especifica o tamanho da janela na qual o judder se repete.

Aceita qualquer número inteiro maior que 1. Os valores úteis são:

‘4’

Se o original foi telecinado de 24 para 30 fps (Film para NTSC).

‘5’

Se o original foi telecinado de 25 para 30 fps (PAL para NTSC).

‘20’

Se for uma mistura dos dois.

O padrão é ‘4’.

Suprime o logotipo de uma emissora de TV por meio de uma interpolação simples dos pixels ao redor. Basta definir um retângulo cobrindo o logotipo e observá-lo desaparecer (e, às vezes, algo ainda mais feio aparecer - os resultados podem variar).

Aceita os seguintes parâmetros:

x y

Especifica as coordenadas do canto superior esquerdo do logotipo. Devem ser especificadas obrigatoriamente.

w h

Especifica a largura e a altura do logotipo a ser removido. Devem ser especificadas obrigatoriamente.

show

Quando definido como 1, um retângulo verde é desenhado na tela para facilitar a localização dos parâmetros x, y, w e h corretos. O valor padrão é 0.

O retângulo é desenhado sobre os pixels mais externos, que serão (parcialmente) substituídos por valores interpolados. Os valores dos pixels imediatamente adjacentes fora desse retângulo, em cada direção, serão usados para calcular os valores de pixel interpolados dentro do retângulo.

11.63.1 Exemplos

  • Define um retângulo cobrindo a área com coordenadas do canto superior esquerdo 0,0 e tamanho 100x77:
    delogo=x=0:y=0:w=100:h=77
    

11.64 derain

Remove a chuva da imagem/vídeo de entrada aplicando métodos de derain baseados em redes neurais convolucionais. Modelos compatíveis:

Scripts de treinamento e de geração de modelos são fornecidos no repositório em https://github.com/XueweiMeng/derain_filter.git.

O filtro aceita as seguintes opções:

filter_type

Especifica qual filtro usar. Esta opção aceita os seguintes valores:

‘derain’

Filtro derain. Para executar o filtro derain, é necessário usar um modelo derain.

‘dehaze’

Filtro dehaze. Para executar o filtro dehaze, é necessário usar um modelo dehaze.

O valor padrão é ‘derain’.

dnn_backend

Especifica qual backend de DNN usar para carregar e executar o modelo. Esta opção aceita os seguintes valores:

‘tensorflow’

TensorFlow backend. Para ativar esse backend, é necessário instalar a biblioteca TensorFlow for C (consulte https://www.tensorflow.org/install/lang_c) e configurar o FFmpeg com --enable-libtensorflow

model

Define o caminho para o arquivo de modelo que especifica a arquitetura da rede e seus parâmetros. Observe que backends diferentes usam formatos de arquivo diferentes. O TensorFlow só consegue carregar arquivos no seu próprio formato.

Para obter a funcionalidade completa (como execução assíncrona), use o filtro dnn_processing.

11.65 deshake

Tenta corrigir pequenas variações de deslocamento horizontal e/ou vertical. Este filtro ajuda a remover o tremor de câmera causado por segurá-la na mão, esbarrar em um tripé, movimento em um veículo, etc.

O filtro aceita as seguintes opções:

x y w h

Especifica uma área retangular na qual limitar a busca por vetores de movimento. Se desejado, a busca por vetores de movimento pode ser limitada a uma área retangular do quadro definida pelo seu canto superior esquerdo, largura e altura. Esses parâmetros têm o mesmo significado do filtro drawbox, que pode ser usado para visualizar a posição da caixa delimitadora.

Isso é útil quando o movimento simultâneo de sujeitos dentro do quadro pode ser confundido com movimento de câmera pela busca de vetores de movimento.

Se algum ou todos os valores de x, y, w e h forem definidos como -1, o quadro completo é usado. Isso permite definir as opções seguintes sem especificar a caixa delimitadora para a busca de vetores de movimento.

Padrão - busca em todo o quadro.

rx ry

Especifica a extensão máxima do movimento nas direções x e y, no intervalo de 0 a 64 pixels. O padrão é 16.

edge

Especifica como gerar pixels para preencher os vazios na borda do quadro. Os valores disponíveis são:

‘blank, 0’

Preenche os locais vazios com zeros

‘original, 1’

Usa a imagem original nos locais vazios

‘clamp, 2’

Usa o valor de borda estendido nos locais vazios

‘mirror, 3’

Usa a borda espelhada nos locais vazios

O valor padrão é ‘mirror’.

blocksize

Especifica o tamanho de bloco a ser usado na busca de movimento. Intervalo de 4 a 128 pixels, padrão 8.

contrast

Especifica o limiar de contraste para os blocos. Somente os blocos com contraste superior ao especificado (diferença entre o pixel mais escuro e o mais claro) serão considerados. Intervalo de 1 a 255, padrão 125.

search

Especifica a estratégia de busca. Os valores disponíveis são:

‘exhaustive, 0’

Define busca exaustiva

‘less, 1’

Define busca menos exaustiva.

O valor padrão é ‘exhaustive’.

filename

Se definido, um log detalhado da busca de movimento é gravado no arquivo especificado.

11.66 despill

Remove a contaminação indesejada das cores do primeiro plano, causada pela cor refletida de um greenscreen ou bluescreen.

Este filtro aceita as seguintes opções:

type

Define o tipo de despill a usar.

mix

Define como o spillmap será gerado.

expand

Define o quanto remover do spill ainda remanescente.

red

Controla a quantidade de vermelho na área de spill.

green

Controla a quantidade de verde na área de spill. Deve ser -1 para greenscreen.

blue

Controla a quantidade de azul na área de spill. Deve ser -1 para bluescreen.

brightness

Controla o brilho da área de spill, preservando as cores.

alpha

Modifica o alfa a partir do spillmap gerado.

11.66.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.67 detelecine

Aplica o inverso exato da operação de telecine. Requer um padrão predefinido especificado pela opção pattern, que deve ser o mesmo passado ao filtro telecine.

Este filtro aceita as seguintes opções:

first_field

‘top, t’

campo superior primeiro

‘bottom, b’

campo inferior primeiro. O valor padrão é top.

pattern

Uma string de números representando o padrão de pulldown que se deseja aplicar. O valor padrão é 23.

start_frame

Um número representando a posição do primeiro quadro em relação ao padrão de telecine. Deve ser usado quando o fluxo estiver cortado. O valor padrão é 0.

11.68 dilation

Aplica o efeito dilation (dilatação) ao vídeo.

Este filtro substitui o pixel pelo máximo local (3x3).

Aceita as seguintes opções:

threshold0 threshold1 threshold2 threshold3

Limita a alteração máxima para cada plano; o padrão é 65535. Se 0, o plano permanece inalterado.

coordinates

Flag que especifica o pixel a ser referenciado. O padrão é 255, ou seja, os oito pixels são usados.

As flags são mapeadas para as coordenadas locais 3x3 da seguinte forma:

1 2 3 4 5 6 7 8

11.68.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.69 displace

Desloca pixels conforme indicado pelo segundo e terceiro fluxo de entrada.

Recebe três fluxos de entrada e produz um fluxo de saída; a primeira entrada é a fonte, e a segunda e a terceira entradas são mapas de deslocamento.

A segunda entrada especifica o quanto deslocar os pixels ao longo do eixo x, enquanto a terceira entrada especifica o quanto deslocá-los ao longo do eixo y. Se um dos fluxos de mapa de deslocamento terminar, o último quadro desse mapa de deslocamento será usado.

Observe que, uma vez gerados, os mapas de deslocamento podem ser reutilizados repetidamente.

Segue uma descrição das opções aceitas.

edge

Define o comportamento de displace para pixels fora do intervalo.

Os valores disponíveis são:

‘blank’

Os pixels ausentes são substituídos por pixels pretos.

‘smear’

Os pixels adjacentes se espalham para substituir os pixels ausentes.

‘wrap’

Os pixels fora do intervalo são envolvidos de modo que apontem para pixels do lado oposto.

‘mirror’

Os pixels fora do intervalo são substituídos por pixels espelhados.

O padrão é ‘smear’.

11.69.1 Exemplos

  • Adiciona um efeito de ondulação a uma entrada rgb de vídeo com tamanho hd720:

    ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT
    
  • Adiciona um efeito de onda a uma entrada rgb de vídeo com tamanho hd720:

    ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
    

11.70 dnn_classify

Realiza classificação com redes neurais profundas com base em caixas delimitadoras.

O filtro aceita as seguintes opções:

dnn_backend

Especifica qual backend de DNN usar para carregar e executar o modelo. No momento, esta opção só aceita openvino; o backend tensorflow será adicionado futuramente.

model

Define o caminho para o arquivo de modelo que especifica a arquitetura da rede e seus parâmetros. Observe que backends diferentes usam formatos de arquivo diferentes.

input

Define o nome de entrada da rede dnn.

output

Define o nome de saída da rede dnn.

confidence

Define o limiar de confiança (padrão: 0.5).

labels

Define o caminho para o arquivo de rótulos que especifica o mapeamento entre o id do rótulo e o nome. Cada nome de rótulo é escrito em uma linha; espaços no final e linhas vazias são ignorados. A primeira linha é o nome do rótulo de id 0, a segunda linha é o nome do rótulo de id 1, e assim por diante. Se o arquivo de rótulos não for fornecido, o próprio id do rótulo é usado como nome.

backend_configs

Define as configurações a serem passadas ao backend

Para o backend tensorflow, é possível definir suas configurações com as opções sess_config; use tools/python/tf_sess_config.py para obter as configurações do seu sistema.

11.71 dnn_detect

Realiza detecção de objetos com redes neurais profundas.

O filtro aceita as seguintes opções:

dnn_backend

Especifica qual backend de DNN usar para carregar e executar o modelo. No momento, esta opção só aceita openvino; o backend tensorflow será adicionado futuramente.

model

Define o caminho para o arquivo de modelo que especifica a arquitetura da rede e seus parâmetros. Observe que backends diferentes usam formatos de arquivo diferentes.

input

Define o nome de entrada da rede dnn.

output

Define o nome de saída da rede dnn.

confidence

Define o limiar de confiança (padrão: 0.5).

labels

Define o caminho para o arquivo de rótulos que especifica o mapeamento entre o id do rótulo e o nome. Cada nome de rótulo é escrito em uma linha; espaços no final e linhas vazias são ignorados. A primeira linha é o nome do rótulo de id 0 (geralmente ’background’), a segunda linha é o nome do rótulo de id 1, e assim por diante. Se o arquivo de rótulos não for fornecido, o próprio id do rótulo é usado como nome.

backend_configs

Define as configurações a serem passadas ao backend. Para usar execução assíncrona, defina async (padrão: set). Caso o backend não seja compatível com execução assíncrona, ele recorre à execução síncrona.

11.72 dnn_processing

Realiza processamento de imagem com redes neurais profundas. Funciona em conjunto com outro filtro que converte o pixel format do Frame para o que a rede dnn requer.

O filtro aceita as seguintes opções:

dnn_backend

Especifica qual backend de DNN usar para carregar e executar o modelo. Esta opção aceita os seguintes valores:

‘tensorflow’

TensorFlow backend. Para ativar esse backend, é necessário instalar a biblioteca TensorFlow for C (consulte https://www.tensorflow.org/install/lang_c) e configurar o FFmpeg com --enable-libtensorflow

‘openvino’

OpenVINO backend. Para ativar esse backend, é necessário compilar e instalar a biblioteca OpenVINO for C (consulte https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md) e configurar o FFmpeg com --enable-libopenvino (pode ser necessário usar –extra-cflags=-I... –extra-ldflags=-L... se os arquivos de cabeçalho e as bibliotecas não estiverem instalados no caminho do sistema)

‘torch’

Libtorch backend. Para ativar esse backend, é necessário compilar e instalar a biblioteca Libtroch for C++. Baixe a versão cxx11 ABI (consulte https://pytorch.org/get-started/locally) e configure o FFmpeg com --enable-libtorch --extra-cflags=-I/libtorch_root/libtorch/include --extra-cflags=-I/libtorch_root/libtorch/include/torch/csrc/api/include --extra-ldflags=-L/libtorch_root/libtorch/lib/

‘onnx’

ONNX Runtime backend. Para ativar esse backend, é necessário instalar a biblioteca ONNX Runtime (consulte https://onnxruntime.ai/) e configurar o FFmpeg com --enable-libonnxruntime.

O backend ONNX Runtime atual espera tensores de entrada e saída 4-D com layout NCHW e tipo de elemento de ponto flutuante de 32 bits (ONNX FLOAT); modelos com tipos de elemento inteiros ou de outro tipo (por exemplo, UINT8) não são compatíveis e serão rejeitados no carregamento. Modelos que usam layout NHWC ou outras dimensões ainda não são compatíveis. Somente modelos de entrada única são compatíveis; o backend vincula exatamente um tensor de entrada ao executar o modelo.

As opções input e output são opcionais para o backend ONNX Runtime; quando omitidas, o backend resolve os nomes dos tensores a partir da sessão.

O backend ONNX Runtime executa a inferência de forma síncrona, usando uma única solicitação de inferência. Portanto, as opções compartilhadas async e nireq não têm efeito para dnn_backend=onnx; a inferência sempre é executada de forma síncrona, independentemente dos valores dessas opções.

model

Define o caminho para o arquivo de modelo que especifica a arquitetura da rede e seus parâmetros. Observe que backends diferentes usam formatos de arquivo diferentes. Os backends TensorFlow, OpenVINO, Libtorch e ONNX Runtime só conseguem carregar arquivos em seus respectivos formatos.

input

Define o nome de entrada da rede dnn. Obrigatório para o backend TensorFlow; opcional para o backend ONNX Runtime.

output

Define o nome de saída da rede dnn. Obrigatório para o backend TensorFlow; opcional para o backend ONNX Runtime.

backend_configs

Define as configurações a serem passadas ao backend. Para usar execução assíncrona, defina async (padrão: set). Caso o backend não seja compatível com execução assíncrona, ele recorre à execução síncrona.

Para o backend tensorflow, é possível definir suas configurações com as opções sess_config; use tools/python/tf_sess_config.py para obter as configurações do backend TensorFlow para o seu sistema.

device

Define o dispositivo em que o modelo será executado. Para o backend ONNX Runtime, isso seleciona o provedor de execução: cpu (padrão), cuda (GPU NVIDIA), dml (DirectML, somente Windows) ou vitisai (NPU AMD Ryzen AI).

device_id

Define o índice do dispositivo usado pelos provedores de execução de GPU (por exemplo, cuda ou dml) para o backend ONNX Runtime. O padrão é 0.

threads_per_operation

Somente para o backend ONNX Runtime. Define o número de threads de CPU usadas por operador do ONNX Runtime ao executar com device=cpu. O padrão é 0 (permite que o ONNX Runtime escolha automaticamente). Não tem efeito para provedores de GPU/NPU.

11.72.1 Exemplos

  • Remove a chuva de um quadro rgb24 com can.pb (veja o filtro derain):

    ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
    
  • Processa o canal Y com srcnn.pb (veja o filtro sr) para quadros yuv420p (com suporte a formatos YUV planares):

    ./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
    
  • Processa o canal Y com espcn.pb (veja o filtro sr), que altera o tamanho do quadro, para o formato yuv420p (com suporte a formatos YUV planares); use tools/python/tf_sess_config.py para obter as configurações do backend do TensorFlow para o seu sistema.

    ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y:backend_configs=sess_config=0x10022805320e09cdccccccccccec3f20012a01303801 -y tmp.espcn.jpg
    

11.73 drawbox

Desenha uma caixa colorida sobre a imagem de entrada.

Aceita os seguintes parâmetros:

x y

As expressões que especificam as coordenadas do canto superior esquerdo da caixa. O padrão é 0.

width, w height, h

As expressões que especificam a largura e a altura da caixa; se forem 0, são interpretadas como a largura e a altura da entrada. O padrão é 0.

color, c

Especifica a cor da caixa a ser desenhada. Para a sintaxe geral desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils. Se o valor especial invert for usado, a cor da borda da caixa é a mesma do vídeo com a luma invertida.

thickness, t

A expressão que define a espessura da borda da caixa. Um valor fill cria uma caixa preenchida. O valor padrão é 3.

Veja abaixo a lista de constantes aceitas.

replace

Aplicável se a entrada tiver alfa. Com o valor 1, os pixels da caixa desenhada sobrescrevem os pixels de cor e alfa do vídeo. O padrão é 0, caso em que a caixa é composta sobre a entrada, deixando o alfa do vídeo intacto.

Os parâmetros x, y, w, h e t são expressões que contêm as seguintes constantes:

dar

A proporção de aspecto de exibição da entrada; é igual a (w / h) * sar.

hsub vsub

os valores de subamostragem de croma horizontal e vertical. Por exemplo, para o pixel format "yuv422p", hsub vale 2 e vsub vale 1.

in_h, ih in_w, iw

A largura e a altura da entrada.

sar

A proporção de aspecto de amostra da entrada.

x y

As coordenadas de deslocamento x e y onde a caixa é desenhada.

w h

A largura e a altura da caixa desenhada.

box_source

box_source pode ser definido como side_data_detection_bboxes se você quiser usar os dados de caixa nas caixas delimitadoras de detecção (bboxes) dos dados secundários (side data).

Se box_source estiver definido, x, y, width e height serão ignorados, e os dados de caixa nas caixas delimitadoras de detecção (bboxes) dos dados secundários (side data) continuarão sendo usados. Portanto, não use este parâmetro se não tiver certeza sobre a origem da caixa.

t

A espessura da caixa desenhada.

Essas constantes permitem que as expressões x, y, w, h e t se refiram umas às outras, de modo que você pode, por exemplo, especificar y=x/dar ou h=w/dar.

11.73.1 Exemplos

  • Desenha uma caixa preta ao redor da borda da imagem de entrada:

    drawbox
    
  • Desenha uma caixa vermelha com opacidade de 50%:

    drawbox=10:20:200:60:red@0.5
    

O exemplo anterior pode ser especificado como:

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
  • Preenche a caixa com a cor rosa:

    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • Desenha uma máscara vermelha de 2 pixels em 2.40:1:

    drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
    

11.73.2 Comandos

Este filtro é compatível com os mesmos comandos das opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.74 drawgraph

Desenha um gráfico usando os metadados do vídeo de entrada.

Aceita os seguintes parâmetros:

m1

Define a primeira chave de metadados do quadro cujos valores de metadados serão usados para desenhar um gráfico.

fg1

Define a primeira expressão de cor de primeiro plano.

m2

Define a segunda chave de metadados do quadro cujos valores de metadados serão usados para desenhar um gráfico.

fg2

Define a segunda expressão de cor de primeiro plano.

m3

Define a terceira chave de metadados do quadro cujos valores de metadados serão usados para desenhar um gráfico.

fg3

Define a terceira expressão de cor de primeiro plano.

m4

Define a quarta chave de metadados do quadro cujos valores de metadados serão usados para desenhar um gráfico.

fg4

Define a quarta expressão de cor de primeiro plano.

min

Define o valor mínimo do valor de metadados.

max

Define o valor máximo do valor de metadados.

bg

Define a cor de fundo do gráfico. O padrão é branco.

mode

Define o modo do gráfico.

Os valores disponíveis para mode são:

‘bar’ ‘dot’ ‘line’

O padrão é line.

slide

Define o modo de deslizamento.

Os valores disponíveis para slide são:

‘frame’

Desenha um novo quadro quando a borda direita é atingida.

‘replace’

Substitui as colunas antigas por novas.

‘scroll’

Rola da direita para a esquerda.

‘rscroll’

Rola da esquerda para a direita.

‘picture’

Desenha uma única imagem.

O padrão é frame.

size

Define o tamanho do vídeo do gráfico. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils. O valor padrão é 900x256.

rate, r

Define a taxa de quadros de saída. O valor padrão é 25.

As expressões de cor de primeiro plano podem usar as seguintes variáveis:

MIN

Valor mínimo do valor de metadados.

MAX

Valor máximo do valor de metadados.

VAL

Valor atual da chave de metadados.

A cor é definida como 0xAABBGGRR.

Exemplo usando metadados do filtro signalstats:

signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255

Exemplo usando metadados do filtro ebur128:

ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5

11.75 drawgrid

Desenha uma grade sobre a imagem de entrada.

Aceita os seguintes parâmetros:

x y

As expressões que especificam as coordenadas de algum ponto de interseção da grade (destinadas a configurar o deslocamento). Ambas têm padrão 0.

width, w height, h

As expressões que especificam a largura e a altura da célula da grade; se forem 0, são interpretadas, respectivamente, como a largura e a altura da entrada menos thickness, de modo que a imagem fica emoldurada. O padrão é 0.

color, c

Especifica a cor da grade. Para a sintaxe geral desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils. Se o valor especial invert for usado, a cor da grade é a mesma do vídeo com a luma invertida.

thickness, t

A expressão que define a espessura da linha da grade. O valor padrão é 1.

Veja abaixo a lista de constantes aceitas.

replace

Aplicável se a entrada tiver alfa. Com 1, os pixels da grade desenhada sobrescrevem os pixels de cor e alfa do vídeo. O padrão é 0, caso em que a grade é composta sobre a entrada, deixando o alfa do vídeo intacto.

Os parâmetros x, y, w, h e t são expressões que contêm as seguintes constantes:

dar

A proporção de aspecto de exibição da entrada; é igual a (w / h) * sar.

hsub vsub

os valores de subamostragem de croma horizontal e vertical. Por exemplo, para o pixel format "yuv422p", hsub vale 2 e vsub vale 1.

in_h, ih in_w, iw

A largura e a altura da célula da grade de entrada.

sar

A proporção de aspecto de amostra da entrada.

x y

As coordenadas x e y de algum ponto de interseção da grade (destinadas a configurar o deslocamento).

w h

A largura e a altura da célula desenhada.

t

A espessura da célula desenhada.

Essas constantes permitem que as expressões x, y, w, h e t se refiram umas às outras, de modo que você pode, por exemplo, especificar y=x/dar ou h=w/dar.

11.75.1 Exemplos

  • Desenha uma grade com células de 100x100 pixels, espessura de 2 pixels, cor vermelha e opacidade de 50%:

    drawgrid=width=100:height=100:thickness=2:color=red@0.5
    
  • Desenha uma grade branca 3x3 com opacidade de 50%:

    drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
    

11.75.2 Comandos

Este filtro é compatível com os mesmos comandos das opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.76 drawtext

Desenha uma string de texto, ou o texto de um arquivo especificado, sobre um vídeo, usando a biblioteca libfreetype.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libfreetype e --enable-libharfbuzz. Para habilitar o fallback de fonte padrão e a opção font, é necessário configurar o FFmpeg com --enable-libfontconfig. Para habilitar a opção text_shaping, é necessário configurar o FFmpeg com --enable-libfribidi.

11.76.1 Sintaxe

Aceita os seguintes parâmetros:

box

Usado para desenhar uma caixa ao redor do texto usando a cor de fundo. O valor deve ser 1 (ativado) ou 0 (desativado). O valor padrão de box é 0.

boxborderw

Define a largura da borda a ser desenhada ao redor da caixa usando boxcolor. O valor deve ser especificado usando um dos seguintes formatos:

  • boxborderw=10 define a largura de todas as bordas como 10
  • boxborderw=10|20 define a largura das bordas superior e inferior como 10 e a largura das bordas esquerda e direita como 20
  • boxborderw=10|20|30 define a largura da borda superior como 10, a largura da borda inferior como 30 e a largura das bordas esquerda e direita como 20
  • boxborderw=10|20|30|40 define a largura das bordas como 10 (superior), 20 (direita), 30 (inferior), 40 (esquerda)

O valor padrão de boxborderw é "0".

boxcolor

A cor usada para desenhar a caixa ao redor do texto. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils.

O valor padrão de boxcolor é "white".

line_spacing

Define o espaçamento entre linhas em pixels. O valor padrão de line_spacing é 0.

text_align

Define o alinhamento vertical e horizontal do texto em relação aos limites da caixa. O valor é uma combinação de flags, uma para o alinhamento vertical (T=topo, M=meio, B=base) e outra para o alinhamento horizontal (L=esquerda, C=centro, R=direita). Observe que caracteres de tabulação só têm suporte com o alinhamento horizontal à esquerda.

y_align

Especifica a que o valor de y se refere. Os valores possíveis são:

  • text o topo do glifo mais alto da primeira linha de texto é posicionado em y
  • baseline a linha de base da primeira linha de texto é posicionada em y
  • font a linha de base da primeira linha de texto é posicionada em y mais o ascendente (em pixels) definido nas métricas da fonte

O valor padrão de y_align é "text" por motivos de compatibilidade com versões anteriores.

borderw

Define a largura da borda a ser desenhada ao redor do texto usando bordercolor. O valor padrão de borderw é 0.

bordercolor

Define a cor usada para desenhar a borda ao redor do texto. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils.

O valor padrão de bordercolor é "black".

expansion

Seleciona como o texto é expandido. Pode ser none, strftime (obsoleto) ou normal (padrão). Consulte a seção Expansão de texto abaixo para mais detalhes.

basetime

Define um horário de início para a contagem. O valor está em microssegundos. Aplica-se apenas no modo de expansão strftime, que é obsoleto. Para emular isso no modo de expansão normal, use a função pts, informando o horário de início (em segundos) como segundo argumento.

fix_bounds

Se verdadeiro, verifica e corrige as coordenadas do texto para evitar recortes.

fontcolor

A cor usada para desenhar as fontes. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils.

O valor padrão de fontcolor é "black".

fontcolor_expr

String que é expandida da mesma forma que text para obter um valor dinâmico de fontcolor. Por padrão, esta opção tem valor vazio e não é processada. Quando esta opção é definida, ela substitui a opção fontcolor.

font

A família de fontes usada para desenhar o texto. Por padrão, Sans.

fontfile

O arquivo de fonte usado para desenhar o texto. O caminho deve ser incluído. Este parâmetro é obrigatório se o suporte a fontconfig estiver desativado.

alpha

Desenha o texto aplicando mesclagem alfa. O valor pode ser um número entre 0.0 e 1.0. A expressão também aceita as mesmas variáveis x, y. O valor padrão é 1. Veja fontcolor_expr.

fontsize

O tamanho de fonte usado para desenhar o texto. O valor padrão de fontsize é 16.

text_shaping

Se definido como 1, tenta moldar o texto (por exemplo, inverter a ordem de textos da direita para a esquerda e unir caracteres árabes) antes de desenhá-lo. Caso contrário, o texto é desenhado exatamente como fornecido. Por padrão, 1 (se houver suporte).

ft_load_flags

As flags usadas para carregar as fontes.

As flags correspondem às flags equivalentes com suporte na libfreetype e são uma combinação dos seguintes valores:

default no_scale no_hinting render no_bitmap vertical_layout force_autohint crop_bitmap pedantic ignore_global_advance_width no_recurse ignore_transform monochrome linear_design no_autohint

O valor padrão é "default".

Para mais informações, consulte a documentação das flags FT_LOAD_* da libfreetype.

shadowcolor

A cor usada para desenhar uma sombra atrás do texto desenhado. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils.

O valor padrão de shadowcolor é "black".

boxw

Define a largura da caixa a ser desenhada ao redor do texto. O valor padrão de boxw é calculado automaticamente para corresponder à largura do texto

boxh

Define a altura da caixa a ser desenhada ao redor do texto. O valor padrão de boxh é calculado automaticamente para corresponder à altura do texto

shadowx shadowy

Os deslocamentos x e y para a posição da sombra do texto em relação à posição do texto. Podem ser valores positivos ou negativos. O valor padrão para ambos é "0".

start_number

O número do quadro inicial para a variável n/frame_num. O valor padrão é "0".

tabsize

O tamanho, em número de espaços, usado para renderizar a tabulação. O valor padrão é 4.

timecode

Define a representação inicial do timecode no formato "hh:mm:ss[:;.]ff". Pode ser usado com ou sem o parâmetro text. A opção timecode_rate deve ser especificada.

timecode_rate, rate, r

Define a taxa de quadros do timecode (somente timecode). O valor será arredondado para o inteiro mais próximo. O valor mínimo é "1". Há suporte ao timecode com quadros descartados (drop-frame) para taxas de quadros de 30 e 60.

tc24hmax

Se definido como 1, a saída da opção timecode reinicia ao atingir 24 horas. O padrão é 0 (desativado).

text

A string de texto a ser desenhada. O texto deve ser uma sequência de caracteres codificados em UTF-8. Este parâmetro é obrigatório se nenhum arquivo for especificado com o parâmetro textfile.

textfile

Um arquivo de texto contendo o texto a ser desenhado. O texto deve ser uma sequência de caracteres codificados em UTF-8.

Este parâmetro é obrigatório se nenhuma string de texto for especificada com o parâmetro text.

Se text e textfile forem especificados ao mesmo tempo, ocorre um erro.

text_source

text_source deve ser definido como side_data_detection_bboxes se você quiser usar os dados de texto nas caixas delimitadoras de detecção (bboxes) dos dados secundários (side data).

Se text_source estiver definido, text e textfile serão ignorados, e os dados de texto nas caixas delimitadoras de detecção (bboxes) dos dados secundários (side data) continuarão sendo usados. Portanto, não use este parâmetro se não tiver certeza sobre a origem do texto.

reload

O textfile será recarregado no intervalo de quadros especificado. Certifique-se de atualizar o textfile de forma atômica, ou ele pode ser lido parcialmente, ou até falhar. O intervalo vai de 0 a INT_MAX. O padrão é 0.

x y

As expressões que especificam os deslocamentos onde o texto será desenhado dentro do quadro de vídeo. São relativas à borda superior/esquerda da imagem de saída.

O valor padrão de x e y é "0".

Veja abaixo a lista de constantes e funções aceitas.

Os parâmetros x e y são expressões que contêm as seguintes constantes e funções:

dar

proporção de aspecto de exibição da entrada; é igual a (w / h) * sar

hsub vsub

valores de subamostragem de croma horizontal e vertical. Por exemplo, para o pixel format "yuv422p", hsub vale 2 e vsub vale 1.

line_h, lh

a altura de cada linha de texto

main_h, h, H

a altura da entrada

main_w, w, W

a largura da entrada

max_glyph_a, ascent

a distância máxima da linha de base até a coordenada de grade mais alta/superior usada para posicionar um ponto do contorno de um glifo, para todos os glifos renderizados. É um valor positivo, devido à orientação da grade com o eixo Y voltado para cima.

max_glyph_d, descent

a distância máxima da linha de base até a coordenada de grade mais baixa usada para posicionar um ponto do contorno de um glifo, para todos os glifos renderizados. É um valor negativo, devido à orientação da grade, com o eixo Y voltado para cima.

max_glyph_h

altura máxima de glifo, ou seja, a altura máxima de todos os glifos contidos no texto renderizado; equivale a ascent - descent.

max_glyph_w

largura máxima de glifo, ou seja, a largura máxima de todos os glifos contidos no texto renderizado

font_a

o tamanho do ascendente definido nas métricas da fonte

font_d

o tamanho do descendente definido nas métricas da fonte

top_a

o ascendente máximo dos glifos da primeira linha de texto

bottom_d

o descendente máximo dos glifos da última linha de texto

n

o número do quadro de entrada, começando em 0

rand(min, max)

retorna um número aleatório compreendido entre min e max

sar

A proporção de aspecto de amostra da entrada.

t

marca de tempo expressa em segundos, NAN se a marca de tempo de entrada for desconhecida

text_h, th

a altura do texto renderizado

text_w, tw

a largura do texto renderizado

x y

as coordenadas de deslocamento x e y onde o texto é desenhado.

Esses parâmetros permitem que as expressões x e y se refiram uma à outra, de modo que você pode, por exemplo, especificar y=x/dar.

pict_type

Uma descrição de um caractere do tipo de imagem do quadro atual.

pkt_pos

A posição do pacote atual no arquivo ou fluxo de entrada (em bytes, a partir do início da entrada). Um valor de -1 indica que essa informação não está disponível.

duration

A duração do pacote atual, em segundos.

pkt_size

O tamanho do pacote atual (em bytes).

11.76.2 Expansão de texto

Se expansion for definido como strftime, o filtro reconhece no texto fornecido as sequências aceitas pela função C strftime e as expande de acordo. Consulte a documentação de strftime. Este recurso é obsoleto em favor da expansão normal com as funções de expansão gmtime ou localtime.

Se expansion for definido como none, o texto é impresso literalmente.

Se expansion for definido como normal (que é o padrão), o seguinte mecanismo de expansão é usado.

O caractere de barra invertida ‘\’, seguido de qualquer caractere, sempre se expande para o segundo caractere.

Sequências no formato %{...} são expandidas. O texto entre as chaves é um nome de função, possivelmente seguido de argumentos separados por ’:’. Se os argumentos contiverem caracteres especiais ou delimitadores (’:’ ou ’}’), eles devem ser escapados.

Observe que provavelmente eles também precisam ser escapados como valor da opção text na cadeia de argumentos do filtro e como argumento do filtro na descrição do filtergraph, e possivelmente também para o shell, o que totaliza até quatro níveis de escape; usar um arquivo de texto com a opção textfile evita esses problemas.

As seguintes funções estão disponíveis:

expr, e

O resultado da avaliação da expressão.

Deve receber um argumento especificando a expressão a ser avaliada, que aceita as mesmas constantes e funções que os valores x e y. Observe que nem todas as constantes devem ser usadas; por exemplo, o tamanho do texto não é conhecido no momento da avaliação da expressão, portanto as constantes text_w e text_h terão um valor indefinido.

expr_int_format, eif

Avalia o valor da expressão e a produz como um inteiro formatado.

O primeiro argumento é a expressão a ser avaliada, assim como na função expr. O segundo argumento especifica o formato de saída. Os valores permitidos são ‘x’, ‘X’, ‘d’ e ‘u’. Eles são tratados exatamente como na função printf. O terceiro parâmetro é opcional e define o número de posições ocupadas pela saída. Pode ser usado para preencher com zeros à esquerda.

gmtime

A hora em que o filtro está em execução, expressa em UTC. Pode aceitar um argumento: uma string de formato da função C strftime. A string de formato é estendida para incluir suporte à variável %[1-6]N, que imprime frações de segundo com um número de dígitos opcionalmente especificado.

localtime

A hora em que o filtro está em execução, expressa no fuso horário local. Pode aceitar um argumento: uma string de formato da função C strftime. A string de formato é estendida para incluir suporte à variável %[1-6]N, que imprime frações de segundo com um número de dígitos opcionalmente especificado.

metadata

Metadados do quadro. Recebe um ou dois argumentos.

O primeiro argumento é obrigatório e especifica a chave de metadados.

O segundo argumento é opcional e especifica um valor padrão, usado quando a chave de metadados não é encontrada ou está vazia.

Os metadados disponíveis podem ser identificados inspecionando as entradas que começam com TAG incluídas em cada seção de quadro impressa ao executar ffprobe -show_frames.

Metadados do tipo string gerados em filtros que precedem o filtro drawtext também estão disponíveis.

n, frame_num

O número do quadro, começando em 0.

pict_type

Uma descrição de um caractere do tipo de imagem atual.

pts

A marca de tempo do quadro atual. Pode receber até três argumentos.

O primeiro argumento é o formato da marca de tempo; o padrão é flt, para segundos como número decimal com precisão de microssegundos; hms representa uma marca de tempo formatada como [-]HH:MM:SS.mmm com precisão de milissegundos. gmtime representa a marca de tempo do quadro formatada como hora UTC; localtime representa a marca de tempo do quadro formatada como hora do fuso horário local.

O segundo argumento é um deslocamento somado à marca de tempo.

Se o formato for definido como hms, um terceiro argumento 24HH pode ser fornecido para apresentar a parte da hora da marca de tempo formatada no formato de 24 horas (00-23).

Se o formato for definido como localtime ou gmtime, um terceiro argumento pode ser fornecido: uma string de formato da função C strftime. Por padrão, será usado o formato YYYY-MM-DD HH:MM:SS.

11.76.3 Comandos

Este filtro é compatível com a alteração de parâmetros por meio de comandos:

reinit

Altera os parâmetros existentes do filtro.

A sintaxe do argumento é a mesma da invocação do filtro, por exemplo

fontsize=56:fontcolor=green:text='Hello World'

Uma invocação completa do filtro com sendcmd ficaria assim:

sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'

Se o argumento completo não puder ser analisado ou aplicado como valores válidos, o filtro continuará com seus parâmetros existentes.

As seguintes opções também têm suporte como comandos:

  • x
  • y
  • alpha
  • fontsize
  • fontcolor
  • boxcolor
  • bordercolor
  • shadowcolor
  • box
  • boxw
  • boxh
  • boxborderw
  • line_spacing
  • text_align
  • shadowx
  • shadowy
  • borderw

11.76.4 Exemplos

  • Desenha "Test Text" com a fonte FreeSerif, usando os valores padrão para os parâmetros opcionais.

    drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
    
  • Desenha ’Test Text’ com a fonte FreeSerif de tamanho 24 na posição x=100 e y=50 (contando a partir do canto superior esquerdo da tela); o texto é amarelo com uma caixa vermelha ao redor. Tanto o texto quanto a caixa têm opacidade de 20%.

    drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
              x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2"
    

Observe que as aspas duplas não são necessárias se não houver espaços na lista de parâmetros.

  • Mostra o texto no centro do quadro de vídeo:

    drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
    
  • Mostra o texto em uma posição aleatória, alternando para uma nova posição a cada 30 segundos:

    drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
    
  • Mostra uma linha de texto deslizando da direita para a esquerda na última linha do quadro de vídeo. Presume-se que o arquivo LONG_LINE contenha uma única linha sem quebras de linha.

    drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
    
  • Mostra o conteúdo do arquivo CREDITS a partir de fora da parte inferior do quadro e rola para cima.

    drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
    
  • Desenha uma única letra verde "g" no centro do vídeo de entrada. A linha de base do glifo é posicionada na metade da altura da tela.

    drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
    
  • Mostra o texto por 1 segundo a cada 3 segundos:

    drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
    
  • Usa o fontconfig para definir a fonte. Observe que os dois-pontos precisam ser escapados.

    drawtext='fontfile=Linux Libertine O-40\\:style=Semibold:text=FFmpeg'
    
  • Desenha "Test Text" com o tamanho de fonte dependente da altura do vídeo.

    drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
    
  • Imprime a data de uma codificação em tempo real (consulte a documentação da função C strftime):

    drawtext='fontfile=FreeSans.ttf:text=%{localtime\:%a %b %d %Y}'
    
  • Mostra um texto com fade de entrada e saída (aparecendo/desaparecendo):

    #!/bin/sh
    DS=1.0 # display start
    DE=10.0 # display end
    FID=1.5 # fade in duration
    FOD=5 # fade out duration
    ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 }"
    
  • Alinha horizontalmente vários textos separados. Observe que max_glyph_a e o valor de fontsize são incluídos no deslocamento y.

    drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
    drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
    
  • Plota os metadados especiais lavf.image2dec.source_basename em cada quadro, se esses metadados existirem. Caso contrário, plota a string "NA". Observe que o demuxer image2 precisa ter a opção -export_path_metadata 1 para que os campos de metadados especiais fiquem disponíveis para os filtros.

    drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%{metadata\:lavf.image2dec.source_basename\:NA}':x=10:y=10"
    

Para mais informações sobre libfreetype, consulte: http://www.freetype.org/.

Para mais informações sobre fontconfig, consulte: http://freedesktop.org/software/fontconfig/fontconfig-user.html.

Para mais informações sobre libfribidi, consulte: http://fribidi.org/.

Para mais informações sobre libharfbuzz, consulte: https://github.com/harfbuzz/harfbuzz.

11.77 drawvg

Desenha gráficos vetoriais sobre os quadros de vídeo, executando um script escrito em uma linguagem personalizada chamada VGS (Vector Graphics Script).

A documentação da linguagem está disponível em (drawvg-reference)drawvg - Language Reference. Uma versão desta referência com exemplos renderizados está disponível no site do autor.

Os gráficos são renderizados usando a biblioteca gráfica 2D cario.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-cairo.

11.77.1 Parâmetros

É necessário definir script ou file.

s, script

Código-fonte do script para desenhar os gráficos.

file

Caminho do arquivo do qual carregar o código-fonte do script.

11.77.2 Pixel Formats

Como o Cairo só é compatível com imagens RGB, se o vídeo de entrada estiver em outro formato (como YUV 4:2:0), antes de executar o script o vídeo é convertido para um formato compatível com o Cairo. Depois, é necessário usar o filtro format, ou a opção -pix_fmt, para convertê-lo para o formato desejado na saída.

11.77.3 Exemplos

  • Desenha o contorno de uma elipse.

    ffmpeg -i input.webm \
        -vf 'drawvg=ellipse (w/2) (h/2) (w/3) (h/3) stroke' \
        -pix_fmt yuv420p \
        output.webm
    
  • Desenha um quadrado girando no centro do quadro.

O script do drawvg está em um arquivo draw.vgs:

    translate (w/2) (h/2)
    rotate t
    rect -100 -100 200 200
    setcolor red@0.5
    fill

Em seguida:

    ffmpeg -i input.webm -vf 'drawvg=file=draw.vgs,format=yuv420p' output.webm

11.78 edgedetect

Detecta e desenha bordas. O filtro usa o algoritmo de detecção de bordas de Canny.

O filtro aceita as seguintes opções:

low high

Define os valores de limiar baixo e alto usados pelo algoritmo de limiarização de Canny.

O limiar alto seleciona os pixels de borda "fortes", que em seguida são conectados por conectividade 8 aos pixels de borda "fracos" selecionados pelo limiar baixo.

Os valores de limiar low e high devem ser escolhidos no intervalo [0,1], e low deve ser menor ou igual a high.

O valor padrão de low é 20/255, e o valor padrão de high é 50/255.

mode

Define o modo de desenho.

‘wires’

Desenha fios brancos/cinza sobre fundo preto.

‘colormix’

Mescla as cores para criar um efeito de pintura/desenho animado.

‘canny’

Aplica o detector de bordas de Canny a todos os planos selecionados.

O valor padrão é wires.

planes

Seleciona os planos a serem filtrados. Por padrão, todos os planos disponíveis são filtrados.

11.78.1 Exemplos

  • Detecção de bordas padrão com valores personalizados para a limiarização por histerese:

    edgedetect=low=0.1:high=0.4
    
  • Efeito de pintura sem limiarização:

    edgedetect=mode=colormix:high=0
    

11.79 elbg

Aplica um efeito de posterização usando o algoritmo ELBG (Enhanced LBG).

Para cada imagem de entrada, o filtro calcula o mapeamento ótimo da entrada para a saída, dado o comprimento do codebook, ou seja, o número de cores de saída distintas.

Este filtro aceita as seguintes opções.

codebook_length, l

Define o comprimento do codebook. O valor deve ser um inteiro positivo e representa o número de cores de saída distintas. O valor padrão é 256.

nb_steps, n

Define o número máximo de iterações a aplicar no cálculo do mapeamento ótimo. Quanto maior o valor, melhor o resultado, mas também maior o tempo de cálculo. O valor padrão é 1.

seed, s

Define uma semente aleatória; deve ser um inteiro entre 0 e UINT32_MAX. Se não for especificada, ou se for definida explicitamente como -1, o filtro tentará usar uma boa semente aleatória em regime de melhor esforço.

pal8

Define o pixel format de saída pal8. Esta opção não funciona com comprimento de codebook maior que 256. Desativado por padrão.

use_alpha

Inclui os valores de alfa no cálculo da quantização. Permite criar imagens de saída paletizadas (por exemplo, PNG8) com múltiplas mesclagens suaves de alfa.

11.80 entropy

Mede a entropia de nível de cinza no histograma dos canais de cor dos quadros de vídeo.

Aceita os seguintes parâmetros:

mode

Pode ser normal ou diff. O padrão é normal.

O modo diff mede a entropia dos valores delta do histograma, isto é, as diferenças absolutas entre valores vizinhos do histograma.

11.81 epx

Aplica o filtro de ampliação EPX, projetado para pixel art.

Aceita a seguinte opção:

n

Define a dimensão de escala: 2 para 2xEPX, 3 para 3xEPX. O padrão é 3.

11.82 eq

Define brilho, contraste, saturação e um ajuste aproximado de gama.

O filtro aceita as seguintes opções:

contrast

Define a expressão de contraste. O valor deve ser um valor de ponto flutuante no intervalo de -1000.0 a 1000.0. O valor padrão é "1".

brightness

Define a expressão de brilho. O valor deve ser um valor de ponto flutuante no intervalo de -1.0 a 1.0. O valor padrão é "0".

saturation

Define a expressão de saturação. O valor deve ser um ponto flutuante no intervalo de 0.0 a 3.0. O valor padrão é "1".

gamma

Define a expressão de gama. O valor deve ser um ponto flutuante no intervalo de 0.1 a 10.0. O valor padrão é "1".

gamma_r

Define a expressão de gama para o vermelho. O valor deve ser um ponto flutuante no intervalo de 0.1 a 10.0. O valor padrão é "1".

gamma_g

Define a expressão de gama para o verde. O valor deve ser um ponto flutuante no intervalo de 0.1 a 10.0. O valor padrão é "1".

gamma_b

Define a expressão de gama para o azul. O valor deve ser um ponto flutuante no intervalo de 0.1 a 10.0. O valor padrão é "1".

gamma_weight

Define a expressão de peso de gama. Pode ser usada para reduzir o efeito de um valor de gama alto nas áreas claras da imagem, evitando, por exemplo, que fiquem superamplificadas e se tornem simplesmente branco puro. O valor deve ser um ponto flutuante no intervalo de 0.0 a 1.0. Um valor de 0.0 reduz a correção de gama ao mínimo, enquanto 1.0 a mantém em toda a sua intensidade. O padrão é "1".

eval

Define quando as expressões de brilho, contraste, saturação e gama são avaliadas.

Aceita os seguintes valores:

‘init’

avalia as expressões apenas uma vez, durante a inicialização do filtro ou quando um comando é processado

‘frame’

avalia as expressões para cada quadro recebido

O valor padrão é ‘init’.

As expressões aceitam os seguintes parâmetros:

n

número do quadro de entrada, começando em 0

pos

posição em bytes do pacote correspondente no arquivo de entrada; NAN se não especificado; obsoleto, não use

r

taxa de quadros do vídeo de entrada; NAN se a taxa de quadros de entrada for desconhecida

t

marca de tempo expressa em segundos; NAN se a marca de tempo de entrada for desconhecida

11.82.1 Comandos

O filtro é compatível com os seguintes comandos:

contrast

Define a expressão de contraste.

brightness

Define a expressão de brilho.

saturation

Define a expressão de saturação.

gamma

Define a expressão de gama.

gamma_r

Define a expressão de gamma_r.

gamma_g

Define a expressão de gamma_g.

gamma_b

Define a expressão de gamma_b.

gamma_weight

Define a expressão de gamma_weight.

O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.83 erosion

Aplica um efeito de erosão ao vídeo.

Este filtro substitui o pixel pelo mínimo local (3x3).

Aceita as seguintes opções:

threshold0 threshold1 threshold2 threshold3

Limita a mudança máxima de cada plano; o padrão é 65535. Se for 0, o plano permanecerá inalterado.

coordinates

Flag que especifica a qual pixel se referir. O padrão é 255, ou seja, todos os oito pixels são usados.

O mapeamento das flags para as coordenadas locais 3x3 é o seguinte:

1 2 3 4 5 6 7 8

11.83.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.84 estdif

Desentrelaça o vídeo de entrada ("estdif" significa "Edge Slope Tracing Deinterlacing Filter").

Filtro puramente espacial que usa um algoritmo de rastreamento de inclinação de borda para interpolar as linhas ausentes. Aceita os seguintes parâmetros:

mode

O modo de entrelaçamento a adotar. Aceita um dos seguintes valores:

frame

Gera um quadro de saída para cada quadro.

field

Gera um quadro de saída para cada campo.

O valor padrão é field.

parity

A paridade de campo de imagem assumida para o vídeo entrelaçado de entrada. Aceita um dos seguintes valores:

tff

Presume que o campo superior vem primeiro.

bff

Assume que o campo inferior vem primeiro.

auto

Ativa a detecção automática da paridade de campo.

O valor padrão é auto. Se o entrelaçamento for desconhecido ou o decoder não exportar essa informação, será assumido que o campo superior vem primeiro.

deint

Especifica quais quadros desentrelaçar. Aceita um dos seguintes valores:

all

Desentrelaça todos os quadros.

interlaced

Desentrelaça somente os quadros marcados como entrelaçados.

O valor padrão é all.

rslope

Especifica o raio de busca para o rastreamento de inclinação de borda. O valor padrão é 1. O intervalo permitido é de 1 a 15.

redge

Especifica o raio de busca para a melhor correspondência de bordas. O valor padrão é 2. O intervalo permitido é de 0 a 15.

ecost

Especifica o custo de borda para a correspondência de bordas. O valor padrão é 2. O intervalo permitido é de 0 a 50.

mcost

Especifica o custo médio para a correspondência de bordas. O valor padrão é 1. O intervalo permitido é de 0 a 50.

dcost

Especifica o custo de distância para a correspondência de bordas. O valor padrão é 1. O intervalo permitido é de 0 a 50.

interp

Especifica a interpolação usada. O padrão é a interpolação de 4 pontos. Aceita um dos seguintes valores:

2p

Interpolação de dois pontos.

4p

Interpolação de quatro pontos.

6p

Interpolação de seis pontos.

11.84.1 Comandos

Este filtro é compatível com os mesmos comandos que as opções.

11.85 exposure

Ajusta a exposição do fluxo de vídeo.

O filtro aceita as seguintes opções:

exposure

Define a correção de exposição em EV. O intervalo permitido é de -3.0 a 3.0 EV. O valor padrão é 0 EV.

black

Define a correção de nível de preto. O intervalo permitido é de -1.0 a 1.0. O valor padrão é 0.

11.85.1 Comandos

Este filtro é compatível com os mesmos comandos que as opções.

11.86 extractplanes

Extrai os componentes de canal de cor do fluxo de vídeo de entrada em fluxos de vídeo em escala de cinza separados.

O filtro aceita a seguinte opção:

planes

Define o(s) plano(s) a extrair.

Os valores disponíveis para planes são:

‘y’ ‘u’ ‘v’ ‘a’ ‘r’ ‘g’ ‘b’

Escolher planos que não estão disponíveis na entrada resultará em erro. Ou seja, não é possível selecionar os planos r, g, b junto com os planos y, u, v ao mesmo tempo.

11.86.1 Exemplos

  • Extrai os componentes de canal de cor de luma, u e v do quadro de vídeo de entrada em 3 saídas em escala de cinza:
    ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
    

11.87 fade

Aplica um efeito de fade-in/fade-out ao vídeo de entrada.

Aceita os seguintes parâmetros:

type, t

O tipo de efeito pode ser "in" para um fade-in, ou "out" para um efeito de fade-out. O padrão é in.

start_frame, s

Especifica o número do quadro em que começar a aplicar o efeito de fade. O padrão é 0.

nb_frames, n

O número de quadros que o efeito de fade dura. Ao final do efeito de fade-in, o vídeo de saída terá a mesma intensidade do vídeo de entrada. Ao final da transição de fade-out, o vídeo de saída será preenchido com a cor selecionada. O padrão é 25.

alpha

Se definido como 1, aplica o fade somente ao canal alfa, caso exista um na entrada. O valor padrão é 0.

start_time, st

Especifica a marca de tempo (em segundos) do quadro em que começar a aplicar o efeito de fade. Se start_frame e start_time forem especificados, o fade começará no que vier depois. O padrão é 0.

duration, d

O número de segundos que o efeito de fade deve durar. Ao final do efeito de fade-in, o vídeo de saída terá a mesma intensidade do vídeo de entrada; ao final da transição de fade-out, o vídeo de saída será preenchido com a cor selecionada. Se duration e nb_frames forem especificados, duration é usado. O padrão é 0 (por padrão, nb_frames é usado).

color, c

Especifica a cor do fade. O padrão é "black".

11.87.1 Exemplos

  • Fade-in nos primeiros 30 quadros do vídeo:
    fade=in:0:30
    

O comando acima é equivalente a:

    fade=t=in:s=0:n=30
  • Fade-out nos últimos 45 quadros de um vídeo de 200 quadros:

    fade=out:155:45
    fade=type=out:start_frame=155:nb_frames=45
    
  • Fade-in nos primeiros 25 quadros e fade-out nos últimos 25 quadros de um vídeo de 1000 quadros:

    fade=in:0:25, fade=out:975:25
    
  • Deixa os primeiros 5 quadros em amarelo e, depois, aplica fade-in dos quadros 5 a 24:

    fade=in:5:20:color=yellow
    
  • Fade-in do alfa nos primeiros 25 quadros do vídeo:

    fade=in:0:25:alpha=1
    
  • Deixa os primeiros 5.5 segundos em preto e, depois, aplica fade-in durante 0.5 segundos:

    fade=t=in:st=5.5:d=0.5
    

11.88 feedback

Aplica o filtro de vídeo feedback.

Este filtro passa os quadros de entrada recortados para a 2ª saída. A partir daí, eles podem ser filtrados com outros filtros de vídeo. Quando o filtro recebe um quadro da 2ª entrada, esse quadro é combinado sobre o quadro original da 1ª entrada e passado para a 1ª saída.

O uso típico é filtrar apenas parte do quadro.

O filtro aceita as seguintes opções:

x y

Define a posição superior esquerda do recorte.

w h

Define o tamanho do recorte.

11.88.1 Exemplos

  • Desfoca apenas a parte retangular superior esquerda do quadro de vídeo, de tamanho 100x100, com o filtro gblur.

    [in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]gblur=8[blurin]
    
  • Desenha uma caixa preta na parte superior esquerda do quadro de vídeo, de tamanho 100x100, com o filtro drawbox.

    [in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]drawbox=x=0:y=0:w=100:h=100:t=100[blurin]
    
  • Pixeliza a parte retangular do quadro de vídeo, de tamanho 100x100, com o filtro pixelize.

    [in][blurin]feedback=x=320:y=240:w=100:h=100[out][blurout];[blurout]pixelize[blurin]
    

11.89 fftdnoiz

Remove o ruído dos quadros usando FFT 3D (filtragem no domínio da frequência).

O filtro aceita as seguintes opções:

sigma

Define a constante sigma do ruído. Isso determina a intensidade da redução de ruído. O valor padrão é 1. O intervalo permitido é de 0 a 30. Usar um sigma muito alto com uma sobreposição baixa pode gerar artefatos de blocagem.

amount

Define a quantidade de redução de ruído. Por padrão, todo o ruído detectado é reduzido. O valor padrão é 1. O intervalo permitido é de 0 a 1.

block

Define o tamanho do bloco em pixels. O padrão é 32; pode variar de 8 a 256.

overlap

Define a sobreposição de blocos. O padrão é 0.5. O intervalo permitido é de 0.2 a 0.8.

method

Define o método de redução de ruído. O padrão é wiener; também pode ser hard.

prev

Define o número de quadros anteriores a usar na redução de ruído. Por padrão, é definido como 0.

next

Define o número de quadros seguintes a usar na redução de ruído. Por padrão, é definido como 0.

planes

Define os planos que serão filtrados; por padrão, todos os disponíveis são filtrados, exceto o alfa.

11.90 fftfilt

Aplica expressões arbitrárias às amostras no domínio da frequência

dc_Y

Ajusta o valor dc (ganho) do plano de luma da imagem. O filtro aceita um valor inteiro no intervalo de 0 a 1000. O valor padrão é 0.

dc_U

Ajusta o valor dc (ganho) do 1º plano de crominância da imagem. O filtro aceita um valor inteiro no intervalo de 0 a 1000. O valor padrão é 0.

dc_V

Ajusta o valor dc (ganho) do 2º plano de crominância da imagem. O filtro aceita um valor inteiro no intervalo de 0 a 1000. O valor padrão é 0.

weight_Y

Define a expressão de peso no domínio da frequência para o plano de luma.

weight_U

Define a expressão de peso no domínio da frequência para o 1º plano de crominância.

weight_V

Define a expressão de peso no domínio da frequência para o 2º plano de crominância.

eval

Define quando as expressões são avaliadas.

Aceita os seguintes valores:

‘init’

Avalia as expressões apenas uma vez, durante a inicialização do filtro.

‘frame’

Avalia as expressões para cada quadro recebido.

O valor padrão é ‘init’.

O filtro aceita as seguintes variáveis:

X Y

As coordenadas da amostra atual.

W H

A largura e a altura da imagem.

N

O número do quadro de entrada, começando em 0.

WS HS

O tamanho da matriz FFT para o processamento horizontal e vertical.

11.90.1 Exemplos

  • Passa-altas:

    fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
    
  • Passa-baixas:

    fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
    
  • Nitidez:

    fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
    
  • Desfoque:

    fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
    

11.91 field

Extrai um único campo de uma imagem entrelaçada usando aritmética de stride para evitar desperdiçar tempo de CPU. Os quadros de saída são marcados como não entrelaçados.

O filtro aceita as seguintes opções:

type

Especifica se deve extrair o campo superior (se o valor for 0 ou top) ou o campo inferior (se o valor for 1 ou bottom).

11.92 fieldhint

Cria novos quadros copiando os campos superior e inferior de quadros vizinhos fornecidos como números pelo arquivo hint.

hint

Define o arquivo que contém as dicas: números de quadro absolutos/relativos.

Deve haver uma linha para cada quadro do clipe. Cada linha deve conter dois números separados por vírgula, seguidos opcionalmente de - ou +. Os números fornecidos em cada linha do arquivo não podem estar fora de [N-1,N+1], em que N é o número do quadro atual, no modo absolute, nem fora do intervalo [-1, 1] no modo relative. O primeiro número indica de qual quadro pegar o campo superior, e o segundo número indica de qual quadro pegar o campo inferior.

Se opcionalmente seguido de +, o quadro de saída será marcado como entrelaçado; se seguido de -, será marcado como progressivo; caso contrário, será marcado igual ao quadro de entrada. Se opcionalmente seguido de t, o quadro de saída usará somente o campo superior, ou, no caso de b, usará somente o campo inferior. Se a linha começar com # ou ;, essa linha é ignorada.

mode

Pode ser absolute, relative ou pattern. O padrão é absolute. O modo pattern é igual ao modo relative, exceto que, na última entrada do arquivo, se ainda houver mais quadros a processar do que contém o arquivo hint, retorna-se ao início.

Exemplo das primeiras linhas de um arquivo hint para o modo relative:

0,0 - # first frame
1,0 - # second frame, use third's frame top field and second's frame bottom field
1,0 - # third frame, use fourth's frame top field and third's frame bottom field
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -

11.93 fieldmatch

Filtro de correspondência de campos para telecine inverso. Seu objetivo é reconstruir os quadros progressivos a partir de um fluxo com telecine. Este filtro não descarta quadros duplicados; portanto, para obter um telecine inverso completo, é preciso que fieldmatch seja seguido por um filtro de dizimação, como decimate, no filtergraph.

A separação entre a correspondência de campos e a dizimação é motivada, sobretudo, pela possibilidade de inserir entre as duas um filtro de desentrelaçamento como recurso alternativo. Se a fonte combinar conteúdo com telecine e conteúdo realmente entrelaçado, fieldmatch não conseguirá corresponder os campos das partes entrelaçadas. Mas os quadros com efeito de pente que restarem serão marcados como entrelaçados e, assim, poderão ser desentrelaçados por um filtro posterior, como yadif, antes da dizimação.

Além das diversas opções de configuração, fieldmatch pode receber um segundo fluxo opcional, ativado pela opção ppsrc. Se habilitado, a reconstrução dos quadros será baseada nos campos e quadros desse segundo fluxo. Isso permite pré-processar a primeira entrada para ajudar os diversos algoritmos do filtro, mantendo a saída sem perdas (supondo que os campos sejam correspondidos corretamente). Em geral, um removedor de ruído com reconhecimento de campo, ou ajustes de brilho/contraste, podem ajudar.

Observe que este filtro usa os mesmos algoritmos que o TIVTC/TFM (projeto AviSynth) e o VIVTC/VFM (projeto VapourSynth). Este último é um clone leve do TFM, no qual fieldmatch se baseia. Embora a semântica e o uso sejam muito próximos, alguns comportamentos e nomes de opções podem diferir.

Atualmente, o filtro decimate só funciona com entradas de taxa de quadros constante. Se sua entrada combinar conteúdo com telecine (30fps) e conteúdo progressivo com uma taxa de quadros menor, como 24fps, use a seguinte cadeia de filtros para gerar o fluxo cfr necessário: dejudder,fps=30000/1001,fieldmatch,decimate.

O filtro aceita as seguintes opções:

order

Especifica a ordem de campo assumida para o fluxo de entrada. Os valores disponíveis são:

‘auto’

Detecta a paridade automaticamente (usa o valor de paridade interno do FFmpeg).

‘bff’

Assume que o campo inferior vem primeiro.

‘tff’

Assume que o campo superior vem primeiro.

Observe que, às vezes, recomenda-se não confiar na paridade anunciada pelo fluxo.

O valor padrão é auto.

mode

Define o modo ou a estratégia de correspondência a usar. O modo pc é o mais seguro, no sentido de que, sempre que possível, não arrisca gerar trepidação por causa de quadros duplicados; mas, se houver edições ruins ou campos mesclados, pode acabar gerando quadros com efeito de pente mesmo quando exista de fato uma boa correspondência. Já o modo pcn_ub é o mais arriscado em termos de gerar trepidação, mas quase sempre encontra um bom quadro, se houver algum. Os demais valores ficam todos em algum ponto intermediário entre pc e pcn_ub quanto ao risco de gerar trepidação e quadros duplicados, em contraposição à capacidade de encontrar boas correspondências em trechos com edições ruins, campos órfãos, campos mesclados etc.

Mais detalhes sobre p/c/n/u/b estão disponíveis na seção p/c/n/u/b meaning.

Os valores disponíveis são:

‘pc’

Correspondência em 2 direções (p/c)

‘pc_n’

Correspondência em 2 direções, tentando uma 3ª correspondência se ainda houver efeito de pente (p/c + n)

‘pc_u’

Correspondência em 2 direções, tentando uma 3ª correspondência (na mesma ordem) se ainda houver efeito de pente (p/c + u)

‘pc_n_ub’

Correspondência em 2 direções, tentando uma 3ª correspondência se ainda houver efeito de pente, e tentando a 4ª/5ª correspondência se ainda houver efeito de pente (p/c + n + u/b)

‘pcn’

Correspondência em 3 direções (p/c/n)

‘pcn_ub’

Correspondência em 3 direções, tentando a 4ª/5ª correspondência se as 3 correspondências originais forem detectadas com efeito de pente (p/c/n + u/b)

Os parênteses no final indicam as correspondências que seriam usadas nesse modo, presumindo order=tff (e field como auto ou top).

Em termos de velocidade, o modo pc é, de longe, o mais rápido, e pcn_ub é o mais lento.

O valor padrão é pc_n.

ppsrc

Marca o fluxo de entrada principal como uma entrada pré-processada, e habilita o fluxo de entrada secundário como a fonte limpa da qual extrair os campos. Consulte a introdução do filtro para mais detalhes. É semelhante ao recurso clip2 do VFM/TFM.

O valor padrão é 0 (desativado).

field

Define o campo a partir do qual fazer a correspondência. Recomenda-se defini-lo com o mesmo valor de order, a menos que ocorram falhas de correspondência com essa configuração. Em certas circunstâncias, mudar o campo usado para a correspondência pode ter um grande impacto no desempenho da correspondência. Os valores disponíveis são:

‘auto’

Automático (mesmo valor que order).

‘bottom’

Faz a correspondência a partir do campo inferior.

‘top’

Faz a correspondência a partir do campo superior.

O valor padrão é auto.

mchroma

Define se a crominância é ou não incluída nas comparações de correspondência. Na maioria dos casos, recomenda-se deixar esta opção ativada. Você só deve defini-la como 0 se o seu clipe tiver problemas graves de crominância, como forte efeito arco-íris (rainbowing) ou outros artefatos. Defini-la como 0 também pode ser usado para acelerar o processo, ao custo de alguma precisão.

O valor padrão é 1.

y0 y1

Estas opções definem uma banda de exclusão que impede que as linhas entre y0 e y1 sejam incluídas na decisão de correspondência de campos. Uma banda de exclusão pode ser usada para ignorar legendas, um logotipo ou outros elementos que possam interferir na correspondência. y0 define a linha de varredura inicial e y1 define a linha final; todas as linhas entre y0 e y1 (incluindo y0 e y1) serão ignoradas. Definir y0 e y1 com o mesmo valor desativa esse recurso. O padrão de y0 e y1 é 0.

scthresh

Define o limiar de detecção de mudança de cena como uma porcentagem da mudança máxima no plano de luma. Bons valores estão no intervalo [8.0, 14.0]. A detecção de mudança de cena só é relevante quando combmatch=sc. O intervalo de scthresh é [0.0, 100.0].

O valor padrão é 12.0.

combmatch

Quando combmatch não é none, fieldmatch leva em conta as pontuações de efeito de pente das correspondências ao decidir qual correspondência usar como a correspondência final. Os valores disponíveis são:

‘none’

Nenhuma correspondência final baseada em pontuações de efeito de pente.

‘sc’

As pontuações de efeito de pente só são usadas quando uma mudança de cena é detectada.

‘full’

Usa as pontuações de efeito de pente o tempo todo.

O padrão é sc.

combdbg

Força fieldmatch a calcular as métricas de efeito de pente para certas correspondências e a exibi-las. Esta configuração é conhecida como micout no vocabulário do TFM/VFM. Os valores disponíveis são:

‘none’

Nenhum cálculo forçado.

‘pcn’

Força os cálculos p/c/n.

‘pcnub’

Força os cálculos p/c/n/u/b.

O valor padrão é none.

cthresh

Este é o limiar de área de efeito de pente usado para a detecção de quadros com efeito de pente. Basicamente, ele controla quão "forte" ou "visível" o efeito de pente precisa ser para ser detectado. Valores maiores significam que o efeito de pente precisa ser mais visível, e valores menores significam que o efeito de pente pode ser menos visível ou intenso e ainda assim ser detectado. As configurações válidas vão de -1 (todo pixel será detectado com efeito de pente) a 255 (nenhum pixel será detectado com efeito de pente). Este é basicamente um valor de diferença de pixel. Um bom intervalo é [8, 12].

O valor padrão é 9.

chroma

Define se a crominância é ou não considerada na decisão de quadro com efeito de pente. Desative esta opção somente se sua fonte tiver problemas de crominância (efeito arco-íris etc.) que estejam causando problemas na detecção de quadros com efeito de pente com a crominância ativada. Na prática, usar chroma=0 costuma ser mais confiável, exceto no caso de haver efeito de pente somente na crominância da fonte.

O valor padrão é 0.

blockx blocky

Definem, respectivamente, o tamanho no eixo x e no eixo y da janela usada durante a detecção de quadros com efeito de pente. Isso está relacionado ao tamanho da área em que é necessário detectar combpel pixels com efeito de pente para que um quadro seja declarado como tendo efeito de pente. Consulte a descrição do parâmetro combpel para mais informações. Os valores possíveis são qualquer número que seja potência de 2, de 4 até 512.

O valor padrão é 16.

combpel

O número de pixels com efeito de pente dentro de qualquer um dos blocos de tamanho blocky por blockx no quadro, para que o quadro seja detectado com efeito de pente. Enquanto cthresh controla quão "visível" o efeito de pente precisa ser, esta configuração controla "quanto" efeito de pente deve haver em qualquer área localizada (uma janela definida pelas configurações blockx e blocky) do quadro. O valor mínimo é 0 e o máximo é blocky x blockx (ponto em que nenhum quadro jamais será detectado com efeito de pente). Esta configuração é conhecida como MI no vocabulário do TFM/VFM.

O valor padrão é 80.

11.93.1 Significado de p/c/n/u/b

11.93.1.1 p/c/n

Considere o seguinte fluxo telecinado:

Top fields:     1 2 2 3 4
Bottom fields:  1 2 3 4 4

Os números correspondem ao quadro progressivo ao qual os campos pertencem. Aqui, os dois primeiros quadros são progressivos, o 3º e o 4º apresentam efeito de pente (combing), e assim por diante.

Quando o fieldmatch é configurado para realizar a correspondência a partir de baixo (field=bottom), é assim que este fluxo de entrada é transformado:

Input stream:
                T     1 2 2 3 4
                B     1 2 3 4 4   <-- matching reference

Matches:              c c n n c

Output stream:
                T     1 2 3 4 4
                B     1 2 3 4 4

Como resultado da correspondência de campos, podemos ver que alguns quadros são duplicados. Para realizar um telecine inverso completo, é necessário recorrer a um filtro de decimação após esta operação. Veja, por exemplo, o filtro decimate.

A mesma operação, agora correspondendo a partir dos campos superiores (field=top), fica assim:

Input stream:
                T     1 2 2 3 4   <-- matching reference
                B     1 2 3 4 4

Matches:              c c p p c

Output stream:
                T     1 2 2 3 4
                B     1 2 2 3 4

Nestes exemplos, podemos ver o que significam p, c e n; basicamente, eles se referem ao quadro e ao campo de paridade oposta:

  • p corresponde ao campo de paridade oposta no quadro anterior
  • c corresponde ao campo de paridade oposta no quadro atual
  • n corresponde ao campo de paridade oposta no próximo quadro

11.93.1.2 u/b

A correspondência u e b é um pouco especial no sentido de que parte da flag de paridade oposta. Nos exemplos a seguir, consideramos que estamos correspondendo no momento o 2º quadro (Top:2, bottom:2). De acordo com a correspondência, um ’x’ é colocado acima e abaixo de cada campo correspondido.

Com correspondência inferior (field=bottom):

Match:           c         p           n          b          u

                 x       x               x        x          x
  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
                 x         x           x        x              x

Output frames:
                 2          1          2          2          2
                 2          2          2          1          3

Com correspondência superior (field=top):

Match:           c         p           n          b          u

                 x         x           x        x              x
  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
                 x       x               x        x          x

Output frames:
                 2          2          2          1          2
                 2          1          3          2          2

11.93.2 Exemplos

IVTC simples de um fluxo telecinado com campo superior primeiro:

fieldmatch=order=tff:combmatch=none, decimate

IVTC avançado, recorrendo ao yadif como alternativa para quadros que ainda apresentam efeito de pente:

fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate

11.94 fieldorder

Transforma a ordem de campo do vídeo de entrada.

Aceita os seguintes parâmetros:

order

A ordem de campo de saída. Os valores válidos são tff para campo superior primeiro ou bff para campo inferior primeiro.

O valor padrão é ‘tff’.

A transformação é feita deslocando o conteúdo da imagem uma linha para cima ou para baixo, e preenchendo a linha restante com conteúdo de imagem apropriado. Este método é consistente com a maioria dos conversores de ordem de campo usados em transmissão.

Se o vídeo de entrada não estiver sinalizado como entrelaçado, ou já estiver sinalizado com a ordem de campo de saída exigida, este filtro não altera o vídeo de entrada.

É muito útil ao converter de ou para material PAL DV, que é de campo inferior primeiro.

Por exemplo:

ffmpeg -i in.vob -vf "fieldorder=bff" out.dv

11.95 fillborders

Preenche as bordas do vídeo de entrada sem alterar as dimensões do fluxo de vídeo. Às vezes o vídeo pode ter lixo nas quatro bordas, e talvez você não queira recortar o vídeo de entrada para manter o tamanho múltiplo de algum número.

Este filtro aceita as seguintes opções:

left

Número de pixels a preencher a partir da borda esquerda.

right

Número de pixels a preencher a partir da borda direita.

top

Número de pixels a preencher a partir da borda superior.

bottom

Número de pixels a preencher a partir da borda inferior.

mode

Define o modo de preenchimento.

Aceita os seguintes valores:

‘smear’

preenche os pixels usando os pixels mais externos

‘mirror’

preenche os pixels usando espelhamento (half sample symmetric)

‘fixed’

preenche os pixels com um valor constante

‘reflect’

preenche os pixels usando reflexão (whole sample symmetric)

‘wrap’

preenche os pixels usando wrap

‘fade’

aplica fade aos pixels até um valor constante

‘margins’

preenche os pixels superiores e inferiores com médias ponderadas dos pixels próximos às bordas

O padrão é smear.

color

Define a cor dos pixels no modo fixed ou fade. O padrão é black.

11.95.1 Comandos

Este filtro oferece suporte aos mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, ela é mantida no seu valor atual.

11.96 find_rect

Localiza um objeto retangular no vídeo de entrada.

O objeto a ser procurado deve ser especificado como uma imagem gray8, indicada pela opção object.

Para cada correspondência possível, uma pontuação é calculada. Se a pontuação atingir o limite especificado, o objeto é considerado encontrado.

Se o vídeo de entrada contiver várias instâncias do objeto, o filtro encontrará apenas uma delas.

Quando um objeto é encontrado, as seguintes entradas de metadados são definidas no quadro correspondente:

lavfi.rect.w

largura do objeto

lavfi.rect.h

altura do objeto

lavfi.rect.x

posição x do objeto

lavfi.rect.y

posição y do objeto

lavfi.rect.score

pontuação de correspondência do objeto encontrado

Aceita as seguintes opções:

object

Caminho do arquivo da imagem do objeto; precisa estar em gray8.

threshold

Limite de detecção, expresso como um número decimal no intervalo 0-1.

Um limite de 0.01 significa apenas correspondências exatas, um limite de 0.99 significa que quase tudo corresponde.

O valor padrão é 0.5.

mipmaps

Número de mipmaps; o padrão é 3.

xmin, ymin, xmax, ymax

Especifica o retângulo no qual realizar a busca.

discard

Descarta quadros em que o objeto não é detectado. O padrão é desativado.

11.96.1 Exemplos

  • Cobre um objeto retangular com a imagem fornecida em um determinado vídeo usando ffmpeg:

    ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
    
  • Encontra a posição de um objeto em cada quadro usando ffprobe e a grava em um arquivo de log:

    ffprobe -f lavfi movie=test.mp4,find_rect=object=object.pgm:threshold=0.3 \
      -show_entries frame=pkt_pts_time:frame_tags=lavfi.rect.x,lavfi.rect.y \
      -of csv -o find_rect.csv
    

11.97 floodfill

Preenche uma área com os valores dos mesmos componentes de pixel usando outros valores.

Aceita as seguintes opções:

x

Define a coordenada x do pixel.

y

Define a coordenada y do pixel.

s0

Define o valor do componente de origem #0.

s1

Define o valor do componente de origem #1.

s2

Define o valor do componente de origem #2.

s3

Define o valor do componente de origem #3.

d0

Define o valor do componente de destino #0.

d1

Define o valor do componente de destino #1.

d2

Define o valor do componente de destino #2.

d3

Define o valor do componente de destino #3.

11.98 format

Converte o vídeo de entrada para um dos pixel formats especificados. O Libavfilter tentará escolher um que seja adequado como entrada para o próximo filtro.

Aceita os seguintes parâmetros:

pix_fmts

Uma lista de nomes de pixel format separados por ’|’, como "pix_fmts=yuv420p|monow|rgb24".

color_spaces

Uma lista de nomes de espaço de cor separados por ’|’, como "color_spaces=bt709|bt470bg|bt2020nc".

color_ranges

Uma lista de nomes de faixa de cor separados por ’|’, como "color_ranges=tv|pc".

alpha_modes

Uma lista de nomes de faixa de cor separados por ’|’, como "alpha_modes=straight|premultiplied".

11.98.1 Exemplos

  • Converte o vídeo de entrada para o formato yuv420p
    format=pix_fmts=yuv420p
    

Converte o vídeo de entrada para qualquer um dos formatos da lista

    format=pix_fmts=yuv420p|yuv444p|yuv410p

11.99 fps

Converte o vídeo para a taxa de quadros constante especificada, duplicando ou descartando quadros conforme necessário.

Aceita os seguintes parâmetros:

fps

A taxa de quadros de saída desejada. Aceita expressões contendo as seguintes constantes:

‘source_fps’

A taxa de quadros da entrada

‘ntsc’

Taxa de quadros NTSC de 30000/1001

‘pal’

Taxa de quadros PAL de 25.0

‘film’

Taxa de quadros de filme de 24.0

‘ntsc_film’

Taxa de quadros NTSC-film de 24000/1001

O padrão é 25.

start_time

Presume que o primeiro PTS deve ser o valor informado, em segundos. Isso permite preenchimento/corte no início do fluxo. Por padrão, nenhuma suposição é feita sobre o PTS esperado do primeiro quadro, portanto nenhum preenchimento ou corte é realizado. Por exemplo, isso pode ser definido como 0 para preencher o início com duplicatas do primeiro quadro, caso um fluxo de vídeo comece depois do fluxo de áudio, ou para cortar quadros com PTS negativo.

round

Método de arredondamento da marca de tempo (PTS).

Os valores possíveis são:

zero

arredonda para 0

inf

arredonda para longe de 0

down

arredonda para -infinito

up

arredonda para +infinito

near

arredonda para o mais próximo

O padrão é near.

eof_action

Ação executada ao ler o último quadro.

Os valores possíveis são:

round

Usa o mesmo método de arredondamento de marca de tempo usado para os demais quadros.

pass

Repassa o último quadro caso a duração da entrada ainda não tenha sido atingida.

O padrão é round.

Como alternativa, as opções podem ser especificadas como uma string simples: fps[:start_time[:round]].

Veja também o filtro setpts.

11.99.1 Exemplos

  • Um uso típico para definir o fps como 25:

    fps=fps=25
    
  • Define o fps como 24, usando abreviação e método de arredondamento para o mais próximo:

    fps=fps=film:round=near
    

11.100 framepack

Empacota dois fluxos de vídeo diferentes em um vídeo estereoscópico, definindo os metadados adequados nos codecs compatíveis. As duas visualizações devem ter o mesmo tamanho e a mesma taxa de quadros, e o processamento é interrompido quando o vídeo mais curto termina. Observe que é possível ajustar as propriedades das visualizações com praticidade usando os filtros scale e fps.

Aceita os seguintes parâmetros:

format

O formato de empacotamento desejado. Os valores compatíveis são:

sbs

As visualizações ficam lado a lado (padrão).

tab

As visualizações ficam uma sobre a outra.

lines

As visualizações são empacotadas por linha.

columns

As visualizações são empacotadas por coluna.

frameseq

As visualizações são intercaladas temporalmente.

Alguns exemplos:

# Converte as visualizações esquerda e direita em um vídeo sequencial por quadro
ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT

# Converte as visualizações em um vídeo lado a lado com a mesma resolução de saída da entrada
ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT

11.101 framerate

Altera a taxa de quadros interpolando novos quadros de saída de vídeo a partir dos quadros de origem.

Este filtro não foi projetado para funcionar corretamente com mídia entrelaçada. Se você quiser alterar a taxa de quadros de mídia entrelaçada, será necessário desentrelaçar antes deste filtro e reentrelaçar depois dele.

Segue uma descrição das opções aceitas.

fps

Especifica os quadros por segundo de saída. Esta opção também pode ser especificada apenas como um valor. O padrão é 50.

interp_start

Especifica o início de um intervalo em que o quadro de saída será criado como uma interpolação linear de dois quadros. O intervalo é [0-255], o padrão é 15.

interp_end

Especifica o fim de um intervalo em que o quadro de saída será criado como uma interpolação linear de dois quadros. O intervalo é [0-255], o padrão é 240.

scene

Especifica o nível em que uma mudança de cena é detectada, como um valor entre 0 e 100 para indicar uma nova cena; um valor baixo reflete uma baixa probabilidade de o quadro atual introduzir uma nova cena, enquanto um valor mais alto significa que é mais provável que o quadro atual seja uma. O padrão é 8.2.

flags

Especifica flags que influenciam o processo do filtro.

O valor disponível para flags é:

scene_change_detect, scd

Ativa a detecção de mudança de cena usando o valor da opção scene. Esta flag é ativada por padrão.

11.102 frc_amf

Duplica a taxa de quadros usando o Frame Rate Converter (FRC) fornecido pela biblioteca AMD Advanced Media Framework para aceleração por hardware.

O filtro aceita as seguintes opções:

engine_type

Especifica o mecanismo usado para executar shaders.

‘dx11’

DirectX 11.

‘dx12’

DirectX 12 (valor padrão).

enable

Valor booleano: ativa/desativa o FRC. Valor dinâmico, pode ser alterado em tempo de execução sem reinicializar o filtro. (Valor padrão: ativado).

fallback_mode

Comportamento de fallback em caso de baixa confiança na interpolação.

‘duplicate’

Duplica o quadro.

‘blend’

Mescla dois quadros (valor padrão).

indicator

Valor booleano: exibe o quadrado indicador do FRC no canto superior esquerdo do vídeo (valor padrão: desativado).

profile

Nível de busca de movimento hierárquica.

‘low’

Menos níveis de busca de movimento hierárquica. Recomendado apenas para resoluções extremamente baixas.

‘high’

Recomendado para qualquer resolução até 1440p. (Valor padrão)

‘super’

Mais níveis de busca de movimento hierárquica. Recomendado para resoluções de 1440p ou superiores.

mv_search_mode

Modo de desempenho da busca de movimento.

‘native’

Realiza a busca de movimento na resolução completa das imagens de origem.

‘performance’

Realiza a busca de movimento nas imagens de origem em resolução reduzida. Recomendado para APU ou GPU de baixo desempenho para melhor desempenho.

use_future_frame

Valor booleano: ativa a dependência de quadro futuro, melhora a qualidade ao custo de latência (valor padrão: ativado).

11.103 framestep

Seleciona um quadro a cada N quadros.

Este filtro aceita a seguinte opção:

step

Seleciona um quadro a cada step quadros. Os valores permitidos são inteiros positivos maiores que 0. O valor padrão é 1.

11.104 freezedetect

Detecta vídeo congelado.

Este filtro registra uma mensagem e define os metadados do quadro quando detecta que o vídeo de entrada não apresenta alteração significativa de conteúdo durante uma duração especificada. A detecção de congelamento de vídeo calcula a diferença absoluta média de todos os componentes dos quadros de vídeo e a compara a um piso de ruído.

Os tempos e a duração exibidos são expressos em segundos. A chave de metadados lavfi.freezedetect.freeze_start é definida no primeiro quadro cuja marca de tempo é igual ou superior à duração de detecção, e contém a marca de tempo do primeiro quadro do congelamento. As chaves de metadados lavfi.freezedetect.freeze_duration e lavfi.freezedetect.freeze_end são definidas no primeiro quadro após o congelamento.

O filtro aceita as seguintes opções:

noise, n

Define a tolerância de ruído. Pode ser especificada em dB (caso "dB" seja anexado ao valor especificado) ou como uma taxa de diferença entre 0 e 1. O padrão é -60dB, ou 0.001.

duration, d

Define a duração do congelamento até a notificação (o padrão é 2 segundos).

11.105 freezeframes

Congela quadros de vídeo.

Este filtro congela quadros de vídeo usando o quadro da 2ª entrada.

O filtro aceita as seguintes opções:

first

Define o número do primeiro quadro a partir do qual iniciar o congelamento.

last

Define o número do último quadro em que terminar o congelamento.

replace

Define o número do quadro da 2ª entrada que será usado no lugar dos quadros substituídos.

11.106 frei0r

Aplica um efeito frei0r ao vídeo de entrada.

Para habilitar a compilação deste filtro, é necessário instalar o cabeçalho frei0r e configurar o FFmpeg com --enable-frei0r.

Aceita os seguintes parâmetros:

filter_name

O nome do efeito frei0r a carregar. Se a variável de ambiente FREI0R_PATH estiver definida, o efeito frei0r é procurado em cada um dos diretórios especificados na lista separada por dois-pontos em FREI0R_PATH. Caso contrário, os caminhos padrão do frei0r são pesquisados nesta ordem: HOME/.frei0r-1/lib/, /usr/local/lib/frei0r-1/, /usr/lib/frei0r-1/.

filter_params

Uma lista de parâmetros separados por ’|’ a passar para o efeito frei0r.

Um parâmetro de efeito frei0r pode ser um booleano (seu valor é "y" ou "n"), um double, uma cor (especificada como R/G/B, em que R, G e B são números de ponto flutuante entre 0.0 e 1.0, inclusive) ou uma descrição de cor conforme especificado na seção "Color" do manual ffmpeg-utils, uma posição (especificada como X/Y, em que X e Y são números de ponto flutuante) e/ou uma string.

O número e os tipos de parâmetros dependem do efeito carregado. Se um parâmetro do efeito não for especificado, o valor padrão é definido.

11.106.1 Exemplos

  • Aplica o efeito distort0r, definindo os dois primeiros parâmetros double:

    frei0r=filter_name=distort0r:filter_params=0.5|0.01
    
  • Aplica o efeito colordistance, recebendo uma cor como primeiro parâmetro:

    frei0r=colordistance:0.2/0.3/0.4
    frei0r=colordistance:violet
    frei0r=colordistance:0x112233
    
  • Aplica o efeito perspective, especificando as posições superior esquerda e superior direita da imagem:

    frei0r=perspective:0.2/0.2|0.8/0.2
    

Para mais informações, consulte http://frei0r.dyne.org

11.106.2 Comandos

Este filtro oferece suporte à opção filter_params como comandos.

11.107 fspp

Aplica pós-processamento rápido e simples. É uma versão mais rápida do spp.

Divide a (I)DCT em passadas horizontais/verticais. Diferentemente do filtro de pós-processamento simples, uma delas é executada uma vez por bloco, não por pixel. Isso permite uma velocidade muito maior.

O filtro aceita as seguintes opções:

quality

Define a qualidade. Esta opção define o número de níveis para a média. Aceita um inteiro no intervalo 4-5. O valor padrão é 4.

qp

Força um parâmetro de quantização constante. Aceita um inteiro no intervalo 0-63. Se não for definido, o filtro usará o QP do fluxo de vídeo (se disponível).

strength

Define a intensidade do filtro. Aceita um inteiro no intervalo de -15 a 32. Valores mais baixos preservam mais detalhes, mas também geram mais artefatos, enquanto valores mais altos tornam a imagem mais suave, porém mais desfocada. O valor padrão é 0 − ótimo para PSNR.

use_bframe_qp

Ativa o uso do QP dos quadros B se definido como 1. Usar esta opção pode causar cintilação, já que os quadros B costumam ter um QP maior. O padrão é 0 (não ativado).

11.108 fsync

Sincroniza os quadros de vídeo com um mapeamento externo a partir de um arquivo.

Para cada PTS de entrada indicado no arquivo de mapa, ele descarta ou cria quantos quadros forem necessários para recriar a sequência de quadros de saída indicada no arquivo de mapa.

Este filtro é útil para recriar os quadros de saída de uma conversão de taxa de quadros feita pelo filtro fps, registrados em um arquivo de mapa usando a opção do ffmpeg -stats_mux_pre, e para realizar processamento adicional nos quadros correspondentes, por exemplo, comparação de qualidade.

Cada linha do arquivo de mapa deve conter três itens por quadro de entrada: o PTS de entrada (decimal), o PTS de saída (decimal) e o TIMEBASE de saída (decimal/decimal), separados por um espaço. Este formato de arquivo corresponde à saída de -stats_mux_pre_fmt="{ptsi} {pts} {tb}".

O filtro presume que o arquivo de mapa está ordenado por PTS de entrada crescente.

O filtro aceita as seguintes opções:

file, f

O nome do arquivo de mapa a ser usado.

Exemplo:

# Converte um vídeo para 25 fps e registra um arquivo MAP_FILE com o formato padrão deste filtro
ffmpeg -i INPUT -vf fps=fps=25 -stats_mux_pre MAP_FILE -stats_mux_pre_fmt "{ptsi} {pts} {tb}" OUTPUT

# Ordena o MAP_FILE por PTS de entrada crescente
sort -n MAP_FILE

# Usa o INPUT, o OUTPUT e o MAP_FILE acima para comparar os quadros correspondentes em INPUT e OUTPUT via SSIM
ffmpeg -i INPUT -i OUTPUT -filter_complex '[0:v]fsync=file=MAP_FILE[ref];[1:v][ref]ssim' -f null -

11.109 gblur

Aplica o filtro de desfoque gaussiano.

O filtro aceita as seguintes opções:

sigma

Define o sigma horizontal, o desvio padrão do desfoque gaussiano. O padrão é 0.5.

steps

Define o número de etapas para a aproximação gaussiana. O padrão é 1.

planes

Define quais planos filtrar. Por padrão, todos os planos são filtrados.

sigmaV

Define o sigma vertical; se negativo, será igual a sigma. O padrão é -1.

11.109.1 Comandos

Este filtro oferece suporte aos mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, ela é mantida no seu valor atual.

11.110 geq

Aplica uma equação genérica a cada pixel.

O filtro aceita as seguintes opções:

lum_expr, lum

Define a expressão de luma.

cb_expr, cb

Define a expressão de crominância azul.

cr_expr, cr

Define a expressão de crominância vermelha.

alpha_expr, a

Define a expressão alfa.

red_expr, r

Define a expressão de vermelho.

green_expr, g

Define a expressão de verde.

blue_expr, b

Define a expressão de azul.

O espaço de cor é selecionado de acordo com as opções especificadas. Se uma das opções lum_expr, cb_expr ou cr_expr for especificada, o filtro selecionará automaticamente um espaço de cor YCbCr. Se uma das opções red_expr, green_expr ou blue_expr for especificada, ele selecionará um espaço de cor RGB.

Se uma das expressões de crominância não estiver definida, ela recorre à outra. Se nenhuma expressão alfa for especificada, o resultado será um valor opaco. Se nenhuma das expressões de crominância for especificada, elas resultarão na expressão de luma.

As expressões podem usar as seguintes variáveis e funções:

N

O número sequencial do quadro filtrado, começando em 0.

X Y

As coordenadas da amostra atual.

W H

A largura e a altura da imagem.

SW SH

Escala de largura e altura dependendo do plano filtrado atualmente. É a razão entre o número de pixels do plano de luma correspondente e os do plano atual. Por exemplo, para YUV4:2:0 os valores são 1,1 para o plano de luma e 0.5,0.5 para os planos de croma.

T

Hora do quadro atual, expressa em segundos.

p(x, y)

Retorna o valor do pixel na posição (x,y) do plano atual.

lum(x, y)

Retorna o valor do pixel na posição (x,y) do plano de luma.

cb(x, y)

Retorna o valor do pixel na posição (x,y) do plano de croma de diferença azul. Retorna 0 se esse plano não existir.

cr(x, y)

Retorna o valor do pixel na posição (x,y) do plano de croma de diferença vermelha. Retorna 0 se esse plano não existir.

r(x, y) g(x, y) b(x, y)

Retorna o valor do pixel na posição (x,y) do componente vermelho/verde/azul. Retorna 0 se esse componente não existir.

alpha(x, y)

Retorna o valor do pixel na posição (x,y) do plano alfa. Retorna 0 se esse plano não existir.

psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)

Soma dos valores das amostras no retângulo de (0,0) até (x,y); isso permite obter somas de amostras dentro de um retângulo. Veja as funções sem o sufixo sum.

interpolation

Define um dos métodos de interpolação:

nearest, n bilinear, b

O padrão é bilinear.

Nas funções, se x e y estiverem fora da área, o valor será automaticamente limitado à borda mais próxima.

Observe que este filtro pode usar múltiplas threads, e nesse caso cada slice terá seu próprio estado de expressão. Se você quiser usar apenas um único estado de expressão porque suas expressões dependem do estado anterior, deverá limitar o número de threads do filtro a 1.

11.110.1 Exemplos

  • Inverte a imagem horizontalmente:

    geq=p(W-X\,Y)
    
  • Gera uma onda senoidal bidimensional, com ângulo PI/3 e um comprimento de onda de 100 pixels:

    geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
    
  • Gera uma luz móvel enigmática e sofisticada:

    nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
    
  • Gera um efeito de relevo (emboss) rápido:

    format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
    
  • Modifica os componentes RGB de acordo com a posição do pixel:

    geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
    
  • Cria um gradiente radial do mesmo tamanho da entrada (veja também o filtro vignette):

    geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
    

11.111 gradfun

Corrige os artefatos de banding que, por vezes, surgem em regiões quase planas devido ao truncamento para uma profundidade de cor de 8 bits. Interpola os gradientes que deveriam estar onde ficam as faixas e aplica dithering a eles.

Foi projetado apenas para reprodução. Não o utilize antes de uma compressão com perdas, pois a compressão tende a perder o dithering e trazer de volta as faixas.

Aceita os seguintes parâmetros:

strength

A quantidade máxima pela qual o filtro altera um único pixel. Este também é o limiar para detectar regiões quase planas. Os valores aceitáveis vão de .51 a 64; o valor padrão é 1.2. Valores fora do intervalo são recortados para o intervalo válido.

radius

A vizinhança à qual o gradiente é ajustado. Um raio maior produz gradientes mais suaves, mas também impede que o filtro modifique os pixels próximos a regiões com detalhes. Os valores aceitáveis vão de 8 a 32; o valor padrão é 16. Valores fora do intervalo são recortados para o intervalo válido.

Alternativamente, as opções podem ser especificadas como uma string simples: strength[:radius]

11.111.1 Exemplos

  • Aplica o filtro com intensidade 3.5 e raio 8:

    gradfun=3.5:8
    
  • Especifica o raio, omitindo a intensidade (que usará o valor padrão):

    gradfun=radius=8
    

11.112 graphmonitor

Mostra várias estatísticas do filtergraph.

Com este filtro é possível depurar um filtergraph completo. É particularmente útil para problemas em que os links ficam cheios de quadros enfileirados.

O filtro aceita as seguintes opções:

size, s

Define o tamanho de saída do vídeo. O padrão é hd720.

opacity, o

Define a opacidade do vídeo. O padrão é 0.9. O intervalo permitido é de 0 a 1.

mode, m

Define as flags do modo de saída.

Os valores disponíveis para as flags são:

‘full’

Nenhuma filtragem. Padrão.

‘compact’

Mostra apenas os filtros com quadros enfileirados.

‘nozero’

Mostra apenas os filtros com estatísticas diferentes de zero.

‘noeof’

Mostra apenas os filtros com estatística diferente de eof.

‘nodisabled’

Mostra apenas os filtros habilitados na linha do tempo.

flags, f

Define as flags que habilitam quais estatísticas são exibidas no vídeo.

Os valores disponíveis para as flags são:

‘none’

Todas as flags desativadas.

‘all’

Todas as flags ativadas.

‘queue’

Exibe o número de quadros enfileirados em cada link.

‘frame_count_in’

Exibe o número de quadros retirados do filtro.

‘frame_count_out’

Exibe o número de quadros entregues pelo filtro.

‘frame_count_delta’

Exibe a diferença (delta) do número de quadros entre os dois valores acima.

‘pts’

Exibe o pts do quadro filtrado atual.

‘pts_delta’

Exibe a diferença (delta) de pts entre o quadro atual e o anterior.

‘time’

Exibe o tempo do quadro filtrado atual.

‘time_delta’

Exibe a diferença (delta) de tempo entre o quadro atual e o anterior.

‘timebase’

Exibe a base de tempo do link do filtro.

‘format’

Exibe o formato usado pelo link do filtro.

‘size’

Exibe o tamanho do vídeo ou, no caso de o link do filtro ser usado para áudio, o número de canais de áudio.

‘rate’

Exibe a taxa de quadros do vídeo ou, no caso de o link do filtro ser usado para áudio, a taxa de amostragem.

‘eof’

Exibe o status de saída do link.

‘sample_count_in’

Exibe o número de amostras retiradas do filtro.

‘sample_count_out’

Exibe o número de amostras entregues pelo filtro.

‘sample_count_delta’

Exibe a diferença (delta) do número de amostras entre os dois valores acima.

‘disabled’

Mostra o status do filtro na linha do tempo.

rate, r

Define o limite superior para a taxa de vídeo do fluxo de saída. O valor padrão é 25. Isso garante que a taxa de quadros do vídeo de saída não ultrapasse esse valor.

11.113 grayworld

Um filtro de constância de cor que aplica correção de cor com base na suposição de mundo cinza (grayworld)

Veja: https://www.researchgate.net/publication/275213614_A_New_Color_Correction_Method_for_Underwater_Imaging

O algoritmo usa luz linear; portanto, os dados de entrada devem ser linearizados previamente (e, se possível, com a tag correta).

ffmpeg -i INPUT -vf zscale=transfer=linear,grayworld,zscale=transfer=bt709,format=yuv420p OUTPUT

11.114 greyedge

Um filtro variante de constância de cor que estima a iluminação da cena por meio do algoritmo grey edge e corrige as cores da cena de acordo.

Veja: https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf

O filtro aceita as seguintes opções:

difford

A ordem de diferenciação a ser aplicada na cena. Deve ser escolhida no intervalo [0,2], e o valor padrão é 1.

minknorm

O parâmetro de Minkowski a ser usado para calcular a distância de Minkowski. Deve ser escolhido no intervalo [0,20], e o valor padrão é 1. Defina como 0 para obter o valor máximo em vez de calcular a distância de Minkowski.

sigma

O desvio padrão do desfoque gaussiano a ser aplicado na cena. Deve ser escolhido no intervalo [0,1024.0], e o valor padrão é 1. floor( sigma * break_off_sigma(3) ) não pode ser igual a 0 se difford for maior que 0.

11.114.1 Exemplos

  • Grey Edge:

    greyedge=difford=1:minknorm=5:sigma=2
    
  • Max Edge:

    greyedge=difford=1:minknorm=0:sigma=2
    

11.115 guided

Aplica o filtro guided para suavização com preservação de bordas, remoção de neblina e outras finalidades.

O filtro aceita as seguintes opções:

radius

Define o raio da caixa em pixels. O intervalo permitido é de 1 a 20. O padrão é 3.

eps

Define o parâmetro de regularização (elevado ao quadrado). O intervalo permitido é de 0 a 1. O padrão é 0.01.

mode

Define o modo do filtro. Pode ser basic ou fast. O padrão é basic.

sub

Define a taxa de subamostragem para o modo fast. O intervalo é de 2 a 64. O padrão é 4. No modo basic não ocorre subamostragem.

guidance

Define o modo de guia. Pode ser off ou on. O padrão é off. Se for off, é necessária uma única entrada. Se for on, são necessárias duas entradas com a mesma resolução e o mesmo pixel format, e a segunda entrada serve como guia.

planes

Define quais planos filtrar. Por padrão, filtra apenas o primeiro.

11.115.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.115.2 Exemplos

  • Suavização com preservação de bordas usando o filtro guided:

    ffmpeg -i in.png -vf guided out.png
    
  • Remoção de neblina, filtragem com transferência de estrutura e realce de detalhes usando o filtro guided. Para a geração da imagem-guia, consulte o artigo "Guided Image Filtering". Veja: http://kaiminghe.com/publications/pami12guidedfilter.pdf.

    ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
    

11.116 haldclut

Aplica um Hald CLUT a um fluxo de vídeo.

A primeira entrada é o fluxo de vídeo a ser processado, e a segunda é o Hald CLUT. A entrada do Hald CLUT pode ser uma imagem simples ou um fluxo de vídeo completo.

O filtro aceita as seguintes opções:

clut

Define quais quadros de vídeo do CLUT serão processados a partir do segundo fluxo de entrada; pode ser first ou all. O padrão é all.

shortest

Força o encerramento quando a entrada mais curta termina. O padrão é 0.

repeatlast

Continua aplicando o último CLUT após o fim do fluxo. Um valor 0 desativa o filtro depois que o último quadro do CLUT é alcançado. O padrão é 1.

haldclut também tem as mesmas opções de interpolação que lut3d (os dois filtros compartilham a mesma implementação interna).

Este filtro também aceita as opções de framesync.

Mais informações sobre o Hald CLUT podem ser encontradas no site de Eskil Steenberg (autor do Hald CLUT), em http://www.quelsolaar.com/technology/clut.html.

11.116.1 Comandos

Este filtro aceita a opção interp como comando.

11.116.2 Exemplos de fluxo de trabalho

11.116.2.1 Fluxo de vídeo Hald CLUT

Gera um fluxo Hald CLUT identidade alterado com vários efeitos:

ffmpeg -f lavfi -i haldclutsrc=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut

Observação: certifique-se de usar um codec sem perdas.

Em seguida, use-o com haldclut para aplicá-lo a algum fluxo qualquer:

ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv

O Hald CLUT será aplicado aos primeiros 10 segundos (duração de clut.nut); depois, a última imagem desse fluxo de CLUT será aplicada aos quadros restantes do fluxo mandelbrot.

11.116.2.2 Hald CLUT com pré-visualização

Um Hald CLUT deve ser uma imagem quadrada de Level*Level*Level por Level*Level*Level pixels. Para um determinado Hald CLUT, o FFmpeg seleciona o maior quadrado possível a partir do canto superior esquerdo da imagem. Os pixels de preenchimento restantes (na parte inferior ou à direita) são ignorados. Essa área pode ser usada para adicionar uma pré-visualização do Hald CLUT.

Normalmente, o seguinte Hald CLUT gerado será compatível com o filtro haldclut:

ffmpeg -f lavfi -i haldclutsrc=8 -vf "
   pad=iw+320 [padded_clut];
   smptebars=s=320x256, split [a][b];
   [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
   [main][b] overlay=W-320" -frames:v 1 clut.png

Ele contém o original e uma pré-visualização do efeito do CLUT: as barras de cores SMPTE são exibidas no canto superior direito e, abaixo delas, as mesmas barras de cores processadas pelas alterações de cor.

Em seguida, o efeito desse Hald CLUT pode ser visualizado com:

ffplay input.mkv -vf "movie=clut.png, [in] haldclut"

11.117 hflip

Inverte o vídeo de entrada horizontalmente.

Por exemplo, para inverter o vídeo de entrada horizontalmente com o ffmpeg:

ffmpeg -i in.avi -vf "hflip" out.avi

11.118 histeq

Este filtro aplica uma equalização global do histograma de cor quadro a quadro.

Pode ser usado para corrigir vídeos com um intervalo comprimido de intensidades de pixel. O filtro redistribui as intensidades dos pixels para uniformizar sua distribuição em todo o intervalo de intensidade. Pode ser visto como um "filtro de contraste com ajuste automático". Este filtro só é útil para corrigir vídeos de origem degradados ou mal capturados.

O filtro aceita as seguintes opções:

strength

Determina a quantidade de equalização a ser aplicada. Conforme esse valor diminui, a distribuição das intensidades de pixel se aproxima cada vez mais da distribuição do quadro de entrada. O valor deve ser um número de ponto flutuante no intervalo [0,1], e o padrão é 0.200.

intensity

Define a intensidade máxima que pode ser gerada e ajusta os valores de saída de acordo. O strength deve ser definido conforme desejado e, em seguida, a intensity pode ser limitada, se necessário, para evitar que a imagem fique estourada (washing-out). O valor deve ser um número de ponto flutuante no intervalo [0,1], e o padrão é 0.210.

antibanding

Define o nível de antibanding. Se habilitado, o filtro varia aleatoriamente a luminância dos pixels de saída em uma pequena quantidade para evitar banding no histograma. Os valores possíveis são none, weak ou strong. O padrão é none.

11.119 histogram

Calcula e desenha um histograma de distribuição de cor para o vídeo de entrada.

O histograma calculado é uma representação da distribuição dos componentes de cor em uma imagem.

O histograma padrão exibe a distribuição dos componentes de cor em uma imagem. Exibe um gráfico de cor para cada componente de cor. Mostra a distribuição dos componentes Y, U, V, A ou R, G, B, dependendo do formato de entrada, no quadro atual. Abaixo de cada gráfico é exibido um medidor de escala do componente de cor.

O filtro aceita as seguintes opções:

level_height

Define a altura do nível. O valor padrão é 200. O intervalo permitido é [50, 2048].

scale_height

Define a altura da escala de cores. O valor padrão é 12. O intervalo permitido é [0, 40].

display_mode

Define o modo de exibição. Aceita os seguintes valores:

‘stack’

Os gráficos de cada componente de cor são colocados um abaixo do outro.

‘parade’

Os gráficos de cada componente de cor são colocados lado a lado.

‘overlay’

Apresenta informações idênticas às do parade, exceto que os gráficos que representam os componentes de cor são sobrepostos diretamente uns sobre os outros.

O padrão é stack.

levels_mode

Define o modo. Pode ser linear ou logarithmic. O padrão é linear.

components

Define quais componentes de cor exibir. O padrão é 7.

fgopacity

Define a opacidade do primeiro plano. O padrão é 0.7.

bgopacity

Define a opacidade do plano de fundo. O padrão é 0.5.

colors_mode

Define o modo de cores. Aceita os seguintes valores:

‘whiteonblack’ ‘blackonwhite’ ‘whiteongray’ ‘blackongray’ ‘coloronblack’ ‘coloronwhite’ ‘colorongray’ ‘blackoncolor’ ‘whiteoncolor’ ‘grayoncolor’

O padrão é whiteonblack.

11.119.1 Exemplos

  • Calcula e desenha o histograma:
    ffplay -i input -vf histogram
    

11.120 hqdn3d

Este é um filtro de redução de ruído 3D de alta precisão e qualidade. Seu objetivo é reduzir o ruído da imagem, produzindo imagens suaves e deixando as imagens estáticas realmente estáticas. Deve melhorar a compressibilidade.

Aceita os seguintes parâmetros opcionais:

luma_spatial

Um número de ponto flutuante não negativo que especifica a intensidade espacial da luma. O padrão é 4.0.

chroma_spatial

Um número de ponto flutuante não negativo que especifica a intensidade espacial do croma. O padrão é 3.0*luma_spatial/4.0.

luma_tmp

Um número de ponto flutuante que especifica a intensidade temporal da luma. O padrão é 6.0*luma_spatial/4.0.

chroma_tmp

Um número de ponto flutuante que especifica a intensidade temporal do croma. O padrão é luma_tmp*chroma_spatial/luma_spatial.

11.120.1 Comandos

Este filtro aceita os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.121 hwdownload

Baixa quadros de hardware para a memória do sistema.

A entrada deve estar em quadros de hardware, e a saída, em um formato que não seja de hardware. Nem todos os formatos são compatíveis na saída — pode ser necessário inserir um filtro format adicional logo em seguida no grafo para obter a saída em um formato compatível.

11.122 hwmap

Mapeia quadros de hardware para a memória do sistema ou para outro dispositivo.

Este filtro tem vários modos de operação diferentes; qual deles é usado depende dos formatos de entrada e saída:

  • Entrada de quadro de hardware, saída de quadro normal

Mapeia os quadros de entrada para a memória do sistema e os repassa para a saída. Se o quadro de hardware original for necessário posteriormente (por exemplo, após sobrepor algo mais sobre parte dele), o filtro hwmap pode ser usado novamente no modo seguinte para recuperá-lo.

  • Entrada de quadro normal, saída de quadro de hardware

Se a entrada for, na verdade, um quadro de hardware mapeado por software, ele é desmapeado — ou seja, o quadro de hardware original é retornado.

Caso contrário, um dispositivo deve ser fornecido. Novas superfícies de hardware são criadas nesse dispositivo para a saída, depois remapeadas de volta para o formato de software na entrada, e esses quadros são entregues ao filtro anterior. Isso então age como o filtro hwupload, mas pode evitar uma cópia adicional quando a entrada já está em um formato compatível.

  • Entrada e saída de quadro de hardware

Um dispositivo deve ser fornecido para a saída, seja diretamente, seja com a opção derive_device. Os dispositivos de entrada e saída devem ser de tipos diferentes e compatíveis — o significado exato disso depende do sistema, mas normalmente significa que ambos devem se referir ao mesmo contexto de hardware subjacente (por exemplo, à mesma placa de vídeo).

Se os quadros de entrada tiverem sido originalmente criados no dispositivo de saída, eles são desmapeados para recuperar os quadros originais.

Caso contrário, os quadros são mapeados para o dispositivo de saída — novos quadros de hardware são criados na saída, correspondentes aos quadros da entrada.

Os seguintes parâmetros adicionais são aceitos:

mode

Define o modo de mapeamento de quadros. Alguma combinação de:

read

O quadro mapeado deve ser legível.

write

O quadro mapeado deve ser gravável.

overwrite

O mapeamento sempre sobrescreve o quadro inteiro.

Isso pode melhorar o desempenho em alguns casos, já que não é necessário carregar o conteúdo original do quadro.

direct

O mapeamento não deve envolver nenhuma cópia.

Mapeamentos indiretos para cópias de quadros são criados em alguns casos em que o mapeamento direto não é possível ou teria propriedades inesperadas. Definir essa flag garante que o mapeamento seja direto e falhará se isso não for possível.

O padrão é read+write, se não for especificado.

derive_device type

Em vez de usar o dispositivo fornecido na inicialização, deriva um novo dispositivo do tipo type a partir do dispositivo em que os quadros de entrada existem.

reverse

Em um mapeamento de hardware para hardware, o mapeamento é feito de forma inversa — os quadros são criados no sink e remapeados de volta para a fonte. Isso pode ser necessário em alguns casos em que um mapeamento em uma direção é exigido, mas os dispositivos usados só oferecem suporte à direção oposta.

Esta opção é perigosa — ela pode quebrar o filtro anterior de formas indefinidas se houver restrições adicionais sobre a saída desse filtro. Não a utilize sem compreender completamente as implicações do seu uso.

11.123 hwupload

Envia quadros da memória do sistema para superfícies de hardware.

O dispositivo de destino do envio deve ser fornecido quando o filtro é inicializado. Ao usar o ffmpeg, selecione o dispositivo apropriado com a opção -filter_hw_device ou com a opção derive_device. Os dispositivos de entrada e saída devem ser de tipos diferentes e compatíveis — o significado exato disso depende do sistema, mas normalmente significa que ambos devem se referir ao mesmo contexto de hardware subjacente (por exemplo, à mesma placa de vídeo).

Os seguintes parâmetros adicionais são aceitos:

derive_device type

Em vez de usar o dispositivo fornecido na inicialização, deriva um novo dispositivo do tipo type a partir do dispositivo em que os quadros de entrada existem.

11.124 hwupload_cuda

Envia quadros da memória do sistema para um dispositivo CUDA.

Aceita os seguintes parâmetros opcionais:

device

O número do dispositivo CUDA a ser usado

11.125 hqx

Aplica um filtro de ampliação de alta qualidade projetado para pixel art. Este filtro foi originalmente criado por Maxim Stepin.

Aceita a seguinte opção:

n

Define a dimensão de escala: 2 para hq2x, 3 para hq3x e 4 para hq4x. O padrão é 3.

11.126 hstack

Empilha vídeos de entrada horizontalmente.

Todos os fluxos devem ter o mesmo pixel format e a mesma altura.

Observe que este filtro é mais rápido do que usar os filtros overlay e pad para criar a mesma saída.

O filtro aceita a seguinte opção:

inputs

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

shortest

Se definido como 1, força o encerramento da saída quando a entrada mais curta terminar. O valor padrão é 0.

11.127 hsvhold

Converte um determinado intervalo HSV em valores de cinza.

Este filtro mede a diferença de cor entre a cor HSV definida nas opções e as cores medidas no fluxo de vídeo. Dependendo das opções, as cores de saída podem ou não ser alteradas para cinza.

O filtro aceita as seguintes opções:

hue

Define o valor de matiz usado no cálculo da diferença de cor. O intervalo permitido é de -360 a 360. O valor padrão é 0.

sat

Define o valor de saturação usado no cálculo da diferença de cor. O intervalo permitido é de -1 a 1. O valor padrão é 0.

val

Define o valor (value) usado no cálculo da diferença de cor. O intervalo permitido é de -1 a 1. O valor padrão é 0.

similarity

Define a porcentagem de similaridade com a cor-chave. O intervalo permitido é de 0 a 1. O valor padrão é 0.01.

0.00001 corresponde apenas à cor-chave exata, enquanto 1.0 corresponde a tudo.

blend

Porcentagem de mescla. O intervalo permitido é de 0 a 1. O valor padrão é 0.

0.0 faz com que os pixels fiquem totalmente cinza ou nada cinza.

Valores mais altos resultam em mais pixels cinza; quanto mais a cor do pixel se aproxima da cor-chave, maior o grau de cinza.

11.128 hsvkey

Converte um determinado intervalo HSV em transparência.

Este filtro mede a diferença de cor entre a cor HSV definida nas opções e as cores medidas no fluxo de vídeo. Dependendo das opções, as cores de saída podem se tornar transparentes pela adição do canal alfa.

O filtro aceita as seguintes opções:

hue

Define o valor de matiz usado no cálculo da diferença de cor. O intervalo permitido é de -360 a 360. O valor padrão é 0.

sat

Define o valor de saturação usado no cálculo da diferença de cor. O intervalo permitido é de -1 a 1. O valor padrão é 0.

val

Define o valor (value) usado no cálculo da diferença de cor. O intervalo permitido é de -1 a 1. O valor padrão é 0.

similarity

Define a porcentagem de similaridade com a cor-chave. O intervalo permitido é de 0 a 1. O valor padrão é 0.01.

0.00001 corresponde apenas à cor-chave exata, enquanto 1.0 corresponde a tudo.

blend

Porcentagem de mescla. O intervalo permitido é de 0 a 1. O valor padrão é 0.

0.0 faz com que os pixels fiquem totalmente transparentes ou nada transparentes.

Valores mais altos resultam em pixels semitransparentes; quanto mais a cor do pixel se aproxima da cor-chave, maior a transparência.

11.129 hue

Modifica o matiz e/ou a saturação da entrada.

Aceita os seguintes parâmetros:

h

Especifica o ângulo de matiz em graus. Aceita uma expressão, e o padrão é "0".

s

Especifica a saturação no intervalo [-10,10]. Aceita uma expressão, e o padrão é "1".

H

Especifica o ângulo de matiz em radianos. Aceita uma expressão, e o padrão é "0".

b

Especifica o brilho no intervalo [-10,10]. Aceita uma expressão, e o padrão é "0".

h e H são mutuamente exclusivos e não podem ser especificados ao mesmo tempo.

Os valores das opções b, h, H e s são expressões que contêm as seguintes constantes:

n

contagem de quadros do quadro de entrada, começando em 0

pts

presentation timestamp do quadro de entrada, expresso em unidades de time base

r

taxa de quadros do vídeo de entrada; NAN se a taxa de quadros de entrada for desconhecida

t

timestamp expresso em segundos; NAN se o timestamp de entrada for desconhecido

tb

time base do vídeo de entrada

11.129.1 Exemplos

  • Define o matiz em 90 graus e a saturação em 1.0:

    hue=h=90:s=1
    
  • O mesmo comando, mas expressando o matiz em radianos:

    hue=H=PI/2:s=1
    
  • Gira o matiz e faz a saturação oscilar entre 0 e 2 ao longo de um período de 1 segundo:

    hue="H=2*PI*t: s=sin(2*PI*t)+1"
    
  • Aplica um efeito de fade-in de saturação de 3 segundos, começando em 0:

    hue="s=min(t/3\,1)"
    

A expressão geral de fade-in pode ser escrita como:

    hue="s=min(0\, max((t-START)/DURATION\, 1))"
  • Aplica um efeito de fade-out de saturação de 3 segundos, começando aos 5 segundos:
    hue="s=max(0\, min(1\, (8-t)/3))"
    

A expressão geral de fade-out pode ser escrita como:

    hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"

11.129.2 Comandos

Este filtro aceita os seguintes comandos:

b s h H

Modifica o matiz e/ou a saturação e/ou o brilho do vídeo de entrada. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.130 huesaturation

Aplica ajustes de matiz, saturação e intensidade ao fluxo de vídeo de entrada.

Este filtro opera no espaço de cor RGB.

Este filtro aceita as seguintes opções:

hue

Define o deslocamento de matiz em graus a ser aplicado. O padrão é 0. O intervalo permitido é de -180 a 180.

saturation

Define o deslocamento de saturação. O padrão é 0. O intervalo permitido é de -1 a 1.

intensity

Define o deslocamento de intensidade. O padrão é 0. O intervalo permitido é de -1 a 1.

colors

Define quais cores primárias e complementares serão ajustadas. Esta opção é definida fornecendo um ou vários valores. É possível selecionar várias cores de uma vez. Por padrão, todas as cores são selecionadas.

‘r’

Ajusta os vermelhos.

‘y’

Ajusta os amarelos.

‘g’

Ajusta os verdes.

‘c’

Ajusta os cianos.

‘b’

Ajusta os azuis.

‘m’

Ajusta os magentas.

‘a’

Ajusta todas as cores.

strength

Define a força de aplicação do filtro. O intervalo permitido é de 0 a 100. O valor padrão é 1.

rw, gw, bw

Define o peso de cada componente RGB. O intervalo permitido é de 0 a 1. Por padrão, é definido como 0.333, 0.334, 0.333. Essas opções são usadas no processamento de saturação e luminosidade.

lightness

Define a preservação da luminosidade; por padrão, está desabilitada. Ajustar o matiz pode alterar a luminosidade em relação ao trio RGB original; com esta opção habilitada, a luminosidade é mantida no mesmo valor.

11.131 hysteresis

Expande o primeiro fluxo para dentro do segundo fluxo conectando componentes. Isso torna possível construir máscaras de borda mais robustas.

Este filtro aceita as seguintes opções:

planes

Define quais planos serão processados como bitmap; os planos não processados serão copiados do primeiro fluxo. Por padrão, com o valor 0xf, todos os planos são processados.

threshold

Define o limiar usado na filtragem. Se o valor do componente de pixel for maior que esse limiar, o algoritmo de conexão de componentes é ativado. O valor padrão é 0.

O filtro hysteresis também aceita as opções de framesync.

11.132 iccdetect

Detecta o espaço de cor a partir de um perfil ICC incorporado (se presente) e atualiza as tags do quadro de acordo.

Este filtro aceita as seguintes opções:

force

Se true, as tags de espaço de cor existentes do quadro sempre são substituídas pelos valores detectados a partir de um perfil ICC. Caso contrário, elas só são atribuídas se contiverem unknown. Habilitado por padrão.

11.133 iccgen

Gera perfis ICC e os anexa aos quadros.

Este filtro aceita as seguintes opções:

color_primaries color_trc

Configura o espaço de cor para o qual o perfil ICC será gerado. O valor padrão auto infere o valor a partir dos metadados do quadro de entrada, recorrendo a BT.709/sRGB conforme apropriado.

Consulte o filtro setparams para obter uma lista de valores possíveis, mas observe que unknown não é um valor válido para este filtro.

force

Se true, um perfil ICC é gerado mesmo que isso sobrescreva um perfil ICC já existente. Desabilitado por padrão.

11.134 identity

Obtém a pontuação de identidade entre dois vídeos de entrada.

Este filtro recebe dois vídeos de entrada.

Ambos os vídeos de entrada devem ter a mesma resolução e o mesmo pixel format para que este filtro funcione corretamente. Além disso, presume-se que ambas as entradas tenham o mesmo número de quadros, que são comparados um a um.

A pontuação de identidade obtida por componente, média, mínima e máxima é impressa pelo sistema de log.

O filtro armazena as pontuações de identidade calculadas de cada quadro nos metadados do quadro.

Este filtro também aceita as opções de framesync.

No exemplo abaixo, o arquivo de entrada main.mpg que está sendo processado é comparado com o arquivo de referência ref.mpg.

ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -

11.135 idet

Detecta o tipo de entrelaçamento do vídeo.

Este filtro tenta detectar se os quadros de entrada são entrelaçados, progressivos, ou se o campo superior ou o campo inferior vêm primeiro. Ele também tenta detectar campos repetidos entre quadros adjacentes (um sinal de telecine).

A detecção de quadro único considera apenas os quadros imediatamente adjacentes ao classificar cada quadro. A detecção de múltiplos quadros incorpora o histórico de classificação de quadros anteriores.

O filtro registrará estes valores de metadados:

single.current_frame

Tipo detectado do quadro atual usando detecção de quadro único. Um dos seguintes: “tff” (campo superior primeiro), “bff” (campo inferior primeiro), “progressive” ou “undetermined”

single.tff

Número cumulativo de quadros detectados como campo superior primeiro usando detecção de quadro único.

multiple.tff

Número cumulativo de quadros detectados como campo superior primeiro usando detecção de múltiplos quadros.

single.bff

Número cumulativo de quadros detectados como campo inferior primeiro usando detecção de quadro único.

multiple.current_frame

Tipo detectado do quadro atual usando detecção de múltiplos quadros. Um dos seguintes: “tff” (campo superior primeiro), “bff” (campo inferior primeiro), “progressive” ou “undetermined”

multiple.bff

Número cumulativo de quadros detectados como campo inferior primeiro usando detecção de múltiplos quadros.

single.progressive

Número cumulativo de quadros detectados como progressivos usando detecção de quadro único.

multiple.progressive

Número cumulativo de quadros detectados como progressivos usando detecção de múltiplos quadros.

single.undetermined

Número cumulativo de quadros que não puderam ser classificados usando detecção de quadro único.

multiple.undetermined

Número cumulativo de quadros que não puderam ser classificados usando detecção de múltiplos quadros.

repeated.current_frame

Qual campo do quadro atual é repetido em relação ao anterior. Um dos seguintes: “neither”, “top” ou “bottom”.

repeated.neither

Número cumulativo de quadros sem campo repetido.

repeated.top

Número cumulativo de quadros em que o campo superior é repetido em relação ao campo superior do quadro anterior.

repeated.bottom

Número cumulativo de quadros em que o campo inferior é repetido em relação ao campo inferior do quadro anterior.

O filtro aceita as seguintes opções:

intl_thres

Define o limiar de entrelaçamento.

prog_thres

Define o limiar de progressividade.

rep_thres

Limiar para a detecção de campos repetidos.

half_life

Número de quadros após o qual a contribuição de um determinado quadro para as estatísticas é reduzida à metade (ou seja, ele contribui apenas com 0.5 para sua classificação). O padrão de 0 significa que todos os quadros vistos recebem peso total de 1.0 para sempre.

analyze_interlaced_flag

Quando esse valor não é 0, o idet usa o número especificado de quadros para determinar se a flag de entrelaçamento é precisa; os quadros indeterminados não são contados. Se a flag for considerada precisa, ela é usada sem mais cálculos; se for considerada imprecisa, ela é zerada sem mais cálculos. Isso permite inserir o filtro idet como um método de baixo custo computacional para depurar a flag de entrelaçamento

11.135.1 Exemplos

Inspeciona a ordem de campos dos primeiros 360 quadros de um vídeo, em detalhes:

ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -

O filtro idet adiciona metadados de análise a cada quadro, que depois são descartados. Ao final, o filtro também imprime um relatório final com estatísticas.

11.136 il

Desintercala ou intercala campos.

Este filtro permite processar os campos de imagens entrelaçadas sem desentrelaçá-las. A desintercalação divide o quadro de entrada em 2 campos (as chamadas meias-imagens). As linhas ímpares são movidas para a metade superior da imagem de saída, e as linhas pares para a metade inferior. É possível processá-los (filtrá-los) de forma independente e depois intercalá-los novamente.

O filtro aceita as seguintes opções:

luma_mode, l chroma_mode, c alpha_mode, a

Os valores disponíveis para luma_mode, chroma_mode e alpha_mode são:

‘none’

Não faz nada.

‘deinterleave, d’

Desintercala os campos, colocando um acima do outro.

‘interleave, i’

Intercala os campos. Reverte o efeito da desintercalação.

O valor padrão é none.

luma_swap, ls chroma_swap, cs alpha_swap, as

Troca os campos de luma/chroma/alpha. Troca as linhas pares e ímpares. O valor padrão é 0.

11.136.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.137 inflate

Aplica o efeito inflate ao vídeo.

Este filtro substitui o pixel pela média local (3x3), levando em conta apenas os valores superiores ao do pixel.

Aceita as seguintes opções:

threshold0 threshold1 threshold2 threshold3

Limita a alteração máxima para cada plano; o padrão é 65535. Se for 0, o plano permanece inalterado.

11.137.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.138 interlace, interlace_vulkan

Filtro simples de entrelaçamento a partir de conteúdo progressivo. Ele intercala as linhas superiores (ou inferiores) de quadros ímpares com as linhas inferiores (ou superiores) de quadros pares, reduzindo a taxa de quadros pela metade e preservando a altura da imagem.

   Original        Original             New Frame
   Frame 'j'      Frame 'j+1'             (tff)
  ==========      ===========       ==================
    Line 0  -------------------->    Frame 'j' Line 0
    Line 1          Line 1  ---->   Frame 'j+1' Line 1
    Line 2 --------------------->    Frame 'j' Line 2
    Line 3          Line 3  ---->   Frame 'j+1' Line 3
     ...             ...                   ...
New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on

Aceita os seguintes parâmetros opcionais:

scan

Isso determina se o quadro entrelaçado é obtido a partir das linhas pares (tff - padrão) ou ímpares (bff) do quadro progressivo.

lowpass

Filtro passa-baixa vertical para evitar a cintilação do entrelaçamento e reduzir padrões de moiré.

‘0, off’

Desabilita o filtro passa-baixa vertical

‘1, linear’

Habilita o filtro linear (padrão)

‘2, complex’

Habilita o filtro complexo. Ele reduz um pouco menos a cintilação e o moiré, mas preserva melhor o detalhe e a impressão subjetiva de nitidez.

11.139 kerndeint

Desentrelaça o vídeo de entrada aplicando o desentrelaçamento adaptativo por kernel de Donald Graft. Atua sobre as partes entrelaçadas de um vídeo para produzir quadros progressivos.

A seguir, a descrição dos parâmetros aceitos.

thresh

Define o limiar que afeta a tolerância do filtro ao determinar se uma linha de pixels deve ser processada. Deve ser um inteiro no intervalo [0,255], e o padrão é 10. Um valor de 0 resulta na aplicação do processo em todos os pixels.

map

Pinta de branco os pixels que excedem o valor do limiar, se definido como 1. O padrão é 0.

order

Define a ordem dos campos. Troca os campos se definido como 1, ou os deixa como estão se 0. O padrão é 0.

sharp

Habilita nitidez adicional se definido como 1. O padrão é 0.

twoway

Habilita nitidez bidirecional se definido como 1. O padrão é 0.

11.139.1 Exemplos

  • Aplicar os valores padrão:

    kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
    
  • Habilitar nitidez adicional:

    kerndeint=sharp=1
    
  • Pintar de branco os pixels processados:

    kerndeint=map=1
    

11.140 kirsch

Aplica o operador kirsch ao fluxo de vídeo de entrada.

O filtro aceita a seguinte opção:

planes

Define quais planos serão processados; os planos não processados serão copiados. Por padrão, com o valor 0xf, todos os planos são processados.

scale

Define o valor que será multiplicado pelo resultado filtrado.

delta

Define o valor que será somado ao resultado filtrado.

11.140.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.141 lagfun

Atualiza lentamente os pixels mais escuros.

Este filtro faz com que flashes curtos de luz pareçam mais longos. Este filtro aceita as seguintes opções:

decay

Define o fator de decaimento. O padrão é .95. O intervalo permitido vai de 0 a 1.

planes

Define quais planos filtrar. O padrão é all. O intervalo permitido vai de 0 a 15.

11.141.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.142 lenscorrection

Corrige a distorção radial da lente

Este filtro pode ser usado para corrigir a distorção radial que pode resultar do uso de lentes grande angulares, retificando assim a imagem. Para encontrar os parâmetros corretos, é possível usar ferramentas disponíveis, por exemplo, como parte do opencv, ou simplesmente por tentativa e erro. Para usar o opencv, use a amostra de calibração (em samples/cpp) das fontes do opencv e extraia os coeficientes k1 e k2 da matriz resultante.

Observe que, na prática, o mesmo filtro está disponível nas ferramentas de código aberto Krita e Digikam, do projeto KDE.

Em contraste com o filtro vignette, que também pode ser usado para compensar erros de lente, este filtro corrige a distorção da imagem, enquanto vignette corrige a distribuição do brilho; por isso, em certos casos pode ser interessante usar os dois filtros juntos, embora seja preciso cuidar da ordem, ou seja, se o vinhetamento deve ser aplicado antes ou depois da correção de lente.

11.142.1 Opções

O filtro aceita as seguintes opções:

cx

Coordenada x relativa do ponto focal da imagem e, portanto, do centro da distorção. Este valor tem um intervalo [0,1] e é expresso como fração da largura da imagem. O padrão é 0.5.

cy

Coordenada y relativa do ponto focal da imagem e, portanto, do centro da distorção. Este valor tem um intervalo [0,1] e é expresso como fração da altura da imagem. O padrão é 0.5.

k1

Coeficiente do termo de correção quadrático. Este valor tem um intervalo [-1,1]. 0 significa nenhuma correção. O padrão é 0.

k2

Coeficiente do termo de correção biquadrático. Este valor tem um intervalo [-1,1]. 0 significa nenhuma correção. O padrão é 0.

i

Define o tipo de interpolação. Pode ser nearest ou bilinear. O padrão é nearest.

fc

Especifica a cor dos pixels não mapeados. Para a sintaxe desta opção, consulte a seção "Color" do manual do ffmpeg-utils. A cor padrão é black@0.

A fórmula que gera a correção é:

r_src = r_tgt * (1 + k1 * (r_tgt / r_0)^2 + k2 * (r_tgt / r_0)^4)

onde r_0 é a metade da diagonal da imagem, e r_src e r_tgt são as distâncias ao ponto focal nas imagens de origem e de destino, respectivamente.

11.142.2 Comandos

Este filtro aceita todas as opções acima como comandos.

11.143 lensfun

Aplica a correção de lente por meio da biblioteca lensfun (http://lensfun.sourceforge.net/).

O filtro lensfun exige a marca da câmera, o modelo da câmera e o modelo da lente para aplicar a correção de lente. O filtro carrega o banco de dados do lensfun e o consulta para encontrar as entradas correspondentes de câmera e lente no banco de dados. Desde que essas entradas possam ser encontradas com as opções fornecidas, o filtro consegue aplicar correções aos quadros. Observe que strings incompletas fazem com que o filtro escolha a melhor correspondência com as opções fornecidas, e o filtro produz como saída a câmera e a lente escolhidas (registradas com o nível "info"). É necessário fornecer a marca, o modelo da câmera e o modelo da lente, pois são obrigatórios.

Para obter uma lista das marcas e modelos disponíveis, omita uma ou ambas as opções make e model. O filtro envia a lista completa para o log com o nível INFO. A primeira coluna é a marca e a segunda coluna é o modelo. Para obter uma lista das lentes disponíveis, defina quaisquer valores para make e model e omita a opção lens_model. O filtro envia a lista completa de lentes para o log com o nível INFO. A ferramenta ffmpeg é encerrada depois que a lista é impressa.

O filtro aceita as seguintes opções:

make

A marca da câmera (por exemplo, "Canon"). Esta opção é obrigatória.

model

O modelo da câmera (por exemplo, "Canon EOS 100D"). Esta opção é obrigatória.

lens_model

O modelo da lente (por exemplo, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). Esta opção é obrigatória.

db_path

O caminho completo para a pasta do banco de dados de lentes. Se não for definido, o filtro tenta carregar o banco de dados a partir do caminho de instalação com o qual a biblioteca foi compilada. Por padrão, não é definido.

mode

O tipo de correção a aplicar. Os seguintes valores são opções válidas:

‘vignetting’

Habilita a correção do vinhetamento da lente.

‘geometry’

Habilita a correção da geometria da lente. Esta é a opção padrão.

‘subpixel’

Habilita a correção de aberrações cromáticas.

‘vig_geo’

Habilita a correção do vinhetamento e da geometria da lente.

‘vig_subpixel’

Habilita a correção do vinhetamento da lente e das aberrações cromáticas.

‘distortion’

Habilita a correção tanto da geometria da lente quanto das aberrações cromáticas.

‘all’

Habilita todas as correções possíveis.

focal_length

A distância focal da imagem/vídeo (zoom; espera-se que seja constante para vídeo). Por exemplo, uma lente de 18–55mm tem intervalo de distância focal [18–55], portanto deve-se escolher um valor dentro desse intervalo ao usar essa lente. O padrão é 18.

aperture

A abertura da imagem/vídeo (espera-se que seja constante para vídeo). Observe que a abertura é usada apenas para a correção do vinhetamento. O padrão é 3.5.

focus_distance

A distância de foco da imagem/vídeo (espera-se que seja constante para vídeo). Observe que a distância de foco é usada apenas para o vinhetamento e afeta apenas ligeiramente o processo de correção do vinhetamento. Se for desconhecida, deixe-a no valor padrão (que é 1000).

scale

O fator de escala aplicado após a transformação. Depois da correção, o vídeo deixa de ser necessariamente retangular. Este parâmetro controla quanto da imagem resultante fica visível. O valor 0 significa que um valor é escolhido automaticamente de forma que haja pouca ou nenhuma área não mapeada na imagem de saída. 1.0 significa que nenhum redimensionamento adicional é feito. Valores menores podem fazer com que mais da imagem corrigida fique visível, enquanto valores maiores podem evitar áreas não mapeadas na saída.

target_geometry

A geometria de destino da imagem/vídeo de saída. Os seguintes valores são opções válidas:

‘rectilinear (default)’ ‘fisheye’ ‘panoramic’ ‘equirectangular’ ‘fisheye_orthographic’ ‘fisheye_stereographic’ ‘fisheye_equisolid’ ‘fisheye_thoby’ reverse

Aplica o inverso da correção de imagem (em vez de corrigir a distorção, ele a aplica).

interpolation

O tipo de interpolação usado ao corrigir a distorção. Os seguintes valores são opções válidas:

‘nearest’ ‘linear (default)’ ‘lanczos’

11.143.1 Exemplos

  • Aplica a correção de lente com marca "Canon", modelo de câmera "Canon EOS 100D" e modelo de lente "Canon EF-S 18-55mm f/3.5-5.6 IS STM", com distância focal "18" e abertura "8.0".

    ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov
    
  • Aplica o mesmo que antes, mas apenas para os primeiros 5 segundos do vídeo.

    ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
    

11.144 lcevc

Filtro Low Complexity Enhancement Video Codec baseado em liblcevc_dec (https://github.com/v-novaltd/LCEVCdec).

11.145 libplacebo

Filtro de processamento flexível acelerado por GPU, baseado em libplacebo (https://code.videolan.org/videolan/libplacebo).

11.145.1 Opções

As opções deste filtro são divididas nas seguintes seções:

11.145.1.1 Modo de saída

Essas opções controlam o modo geral de saída. Por padrão, o libplacebo tenta preservar ao máximo a colorimetria e o tamanho da fonte, mas aplica qualquer film grain incorporado, metadados de Dolby Vision ou SAR anamórfico presentes nos quadros de origem.

inputs

Define o número de entradas. Pode ser usado, junto com a variável idx, para permitir posicionar/mesclar várias entradas dentro do quadro de saída. Isso, na prática, habilita uma funcionalidade semelhante a hstack, overlay etc.

w h

Define a expressão de dimensão do vídeo de saída. Os valores padrão são iw e ih.

Permite as mesmas expressões do filtro scale.

crop_x crop_y

Define as expressões x/y de recorte da entrada; os valores padrão são (iw-cw)/2 e (ih-ch)/2.

crop_w crop_h

Define as expressões de largura/altura de recorte da entrada; os valores padrão são iw e ih.

pos_x pos_y

Define as expressões x/y de posicionamento da saída; os valores padrão são (ow-pw)/2 e (oh-ph)/2.

pos_w pos_h

Define as expressões de largura/altura de posicionamento da saída; os valores padrão são ow e oh.

rotate

Gira o quadro de entrada no sentido horário pelo ângulo especificado.

‘0, 360’ ‘90’ ‘180’ ‘270’ fps

Define a taxa de quadros de saída. Pode ser um valor racional, por exemplo, 60000/1001. Se definida com a string especial none (o padrão), as marcas de tempo de entrada são repassadas para a saída sem modificação. Caso contrário, os quadros do vídeo de entrada são interpolados conforme necessário para reescalar o vídeo para a taxa de quadros de destino especificada, da forma determinada pela opção frame_mixer.

format

Define a substituição do formato de saída. Se não for definida (o padrão), os quadros são produzidos no mesmo formato dos respectivos quadros de entrada. Caso contrário, a conversão de formato é realizada.

force_original_aspect_ratio force_divisible_by

Funcionam da mesma forma que as opções homônimas do filtro scale. Observe que force_divisible_by também funciona com fit_sense=constraint.

reset_sar

Se habilitada, os quadros de saída sempre têm proporção de aspecto de pixel de 1:1. Se desabilitada (o padrão), quaisquer incompatibilidades de proporção de aspecto, incluindo as provenientes, por exemplo, de fontes de vídeo anamórfico, são repassadas para a proporção de aspecto de pixel de saída.

normalize_sar

Semelhante a reset_sar, mas em vez de esticar o conteúdo do vídeo para preencher a nova proporção de aspecto de saída, o conteúdo é preenchido ou recortado conforme necessário. Mutuamente exclusiva com fit_mode. Desabilitada por padrão.

pad_crop_ratio

Especifica uma proporção (entre 0.0 e 1.0) entre preenchimento e recorte quando a proporção de aspecto de entrada não corresponde à de saída e normalize_sar está em vigor. O padrão 0.0 sempre preenche o conteúdo com bordas pretas, enquanto o valor 1.0 sempre recorta partes do conteúdo. Valores intermediários são possíveis, resultando em uma combinação das duas abordagens.

fit_mode

Especifica a estratégia de ajuste do conteúdo de acordo com uma lista de modos predefinidos. Determina como a imagem de entrada é posicionada dentro do retângulo de recorte de destino (definido por pos_x/y e pos_w/h). Os nomes e suas implementações vêm da propriedade CSS ’object-fit’. Observe que esta opção é mutuamente exclusiva com normalize_sar. O padrão é fill. Os valores válidos são:

‘fill’

Estica a entrada até o retângulo de saída, ignorando incompatibilidades de proporção de aspecto. Observe que, a menos que reset_sar também esteja habilitada, a saída ainda terá a proporção de aspecto de pixel correta marcada.

‘contain’

Escala a entrada para caber dentro da saída, preservando a proporção de aspecto por meio de preenchimento. Equivalente a normalize_sar com pad_crop_ratio definido como 0.0.

‘cover’

Escala a entrada para preencher a saída, preservando a proporção de aspecto por meio de recorte. Equivalente a normalize_sar com pad_crop_ratio definido como 1.0.

‘none, place’

Não escala a entrada. A entrada é posicionada dentro do retângulo de saída em seu tamanho natural, o que pode resultar em preenchimento ou recorte adicionais.

‘scale_down’

Reduz a entrada tanto quanto necessário para caber dentro da saída. Equivalente a contain ou a none, dependendo se a entrada é maior que a saída ou não.

fit_sense

Quando fit_mode está em uso, esta opção controla como a estratégia de ajuste é aplicada em relação à resolução de saída especificada. Mutuamente exclusiva com force_original_aspect_ratio. Os valores válidos são:

‘target’

A resolução de saída calculada é tomada como o tamanho exato do quadro de saída. Este é o comportamento padrão.

‘constraint’

A resolução de saída calculada é uma referência de tamanho em relação à qual o modo de ajuste é aplicado, aumentando ou diminuindo o tamanho real do quadro conforme necessário para ajustar o conteúdo.

fillcolor

Define a cor usada para preencher a área de saída não coberta pela imagem de saída, por exemplo, como resultado de normalize_sar. Para a sintaxe geral desta opção, consulte a seção "Color" do manual do ffmpeg-utils. O padrão é black@0.

corner_rounding

Renderiza quadros com cantos arredondados. O valor, dado como um número em ponto flutuante entre 0.0 e 1.0, indica o grau relativo de arredondamento, de totalmente quadrado a totalmente circular. Em outras palavras, corresponde ao raio dividido pela metade do comprimento do lado menor. O padrão é 0.0.

lut

Especifica uma LUT personalizada (no formato Adobe .cube) a aplicar às cores como parte da conversão de cor. A interpretação exata depende do valor de lut_type.

lut_type

Controla a interpretação dos valores de cor que entram e saem da LUT especificada em lut. Os valores válidos são:

‘auto’

Escolhe automaticamente a interpretação da LUT a partir dos metadados marcados e, caso contrário, recorre a ‘native’. (Padrão)

‘native’

Aplicada ao conteúdo de imagem bruto em seu espaço de cor RGB nativo (luz não linear), antes da conversão para o espaço de cor de saída.

‘normalized’

Aplicada ao conteúdo de imagem RGB normalizado, em luz linear, antes da conversão para o espaço de cor de saída.

‘conversion’

Substitui completamente a conversão do espaço de cor da imagem para o espaço de cor de saída. Se essa LUT estiver presente, ela tem a maior prioridade e sobrepõe qualquer perfil ICC, bem como as opções relacionadas ao mapeamento de tons e à colorimetria de saída (color_primaries, color_trc).

extra_opts

Passa opções de configuração interna adicionais do libplacebo. Podem ser especificadas como uma lista de pares chave=valor separados por ’:’. O exemplo a seguir mostra como configurar um kernel de filtro personalizado ("EWA LanczosSharp") e usá-lo para dobrar a resolução da imagem de entrada:

-vf "libplacebo=w=iw*2:h=ih*2:extra_opts='upscaler=custom\:upscaler_preset=ewa_lanczos\:upscaler_blur=0.9812505644269356'"

shader_cache

Caminho do diretório de cache que o libplacebo usa para armazenar e carregar objetos de shader em cache. Este cache não é limpo automaticamente. Se o caminho não terminar com um separador de diretório, os nomes de arquivo gerados são, na prática, prefixados pelo último componente do caminho. Todos os diretórios já devem existir.

-vf "libplacebo=shader_cache=/tmp/pl-shader-"

colorspace color_primaries color_trc range chroma_location

Configura o espaço de cor no qual os quadros de saída são entregues. O valor padrão auto produz os quadros no mesmo formato dos quadros de entrada, sem nenhuma alteração. Para qualquer outro valor, a conversão é realizada.

Consulte o filtro setparams para obter uma lista de valores possíveis.

alpha_mode

Escolhe o modo alfa de saída desejado, quando o formato de saída tem um canal alfa. Consulte o filtro setparams para obter uma lista de valores possíveis.

apply_filmgrain

Aplica film grain (por exemplo, de AV1 ou H.274) se presente nos quadros de origem, e o remove da saída. Habilitado por padrão.

apply_dolbyvision

Aplica os metadados RPU de Dolby Vision se presentes nos quadros de origem, e os remove da saída. Habilitado por padrão. Observe que Dolby Vision sempre produz BT.2020+PQ, substituindo os metadados usuais do quadro de entrada. Esses valores também são adotados como os valores de auto para as respectivas opções de saída de quadro.

Além das constantes de expressão documentadas para o filtro scale, as opções crop_w, crop_h, crop_x, crop_y, pos_w, pos_h, pos_x e pos_y também podem conter as seguintes constantes:

in_idx, idx

O índice numérico (baseado em 0) do fluxo de entrada atualmente ativo.

crop_w, cw crop_h, ch

Os valores calculados de crop_w e crop_h.

pos_w, pw pos_h, ph

Os valores calculados de pos_w e pos_h.

in_t, t

A marca de tempo do quadro de entrada, em segundos. NAN se a marca de tempo de entrada for desconhecida.

out_t, ot

A marca de tempo do quadro de entrada, em segundos. NAN se a marca de tempo de entrada for desconhecida.

n

O número do quadro de entrada, começando em 0.

11.145.1.2 Redimensionamento

As opções desta seção controlam como o libplacebo realiza a ampliação e (se necessário) a redução. Observe que o libplacebo sempre opera internamente sobre conteúdo 4:4:4, de modo que quaisquer formatos de croma subamostrados, como yuv420p, são necessariamente super e subamostrados como parte do processo de renderização. Isso significa que o redimensionamento pode estar em vigor mesmo que a resolução de origem e a de destino sejam iguais.

upscaler downscaler

Configura o kernel de filtro usado para a ampliação e a redução. Os padrões respectivos são spline36 e mitchell. Para uma lista completa de valores possíveis, passe help para essas opções. Os valores mais importantes são:

‘none’

Força o uso da amostragem de textura integrada da GPU (tipicamente bilinear). Extremamente rápido, mas de baixa qualidade, especialmente ao reduzir a escala.

‘bilinear’

Interpolação bilinear. Geralmente pode ser feita sem custo em GPUs, exceto quando isso causaria aliasing. Rápida e de baixa qualidade.

‘nearest’

Interpolação pelo vizinho mais próximo. Nítida, mas com muito aliasing.

‘oversample’

Algoritmo que visualmente se assemelha à interpolação pelo vizinho mais próximo, mas tenta preservar a proporção de aspecto de pixel. Bom para pixel art, já que resulta em distorção mínima da aparência artística.

‘lanczos’

Kernel de interpolação sinc-sinc padrão.

‘spline36’

Aproximação por spline cúbica do lanczos. Sem diferença de desempenho, mas com ringing um pouco menor.

‘ewa_lanczos’

Versão de média ponderada elíptica (EWA) do lanczos, baseada em um kernel jinc-jinc. Também é popularmente chamada apenas de "Jinc scaling". Lento, mas de qualidade muito alta.

‘gaussian’

Kernel gaussiano. Tem certas propriedades matemáticas ideais, mas é subjetivamente muito borrado.

‘mitchell’

Spline BC cúbica com parâmetros recomendados por Mitchell e Netravali. Ringing muito baixo.

frame_mixer

Controla o kernel usado para mesclar quadros temporalmente. O valor padrão é none, que desabilita a mesclagem de quadros. Para uma lista completa de valores possíveis, passe help para esta opção. Os valores mais importantes são:

‘none’

Desabilita a mesclagem de quadros, dando um resultado equivalente à semântica de "nearest neighbour".

‘oversample’

Sobreamostra o vídeo de entrada para criar um efeito do tipo "Smooth Motion": se um quadro de saída cair exatamente na transição entre dois quadros de vídeo, ele é mesclado de acordo com a sobreposição relativa. Esta é a opção recomendada sempre que se deseja preservar a aparência subjetiva original.

‘mitchell_clamp’

Kernel de filtro maior que interpola vários quadros de forma suave, projetado para eliminar ao máximo o ringing e outros artefatos. Esta é a opção recomendada sempre que se deseja a máxima suavidade visual.

‘linear’

Mesclagem/fade linear entre quadros. Especialmente útil para construir, por exemplo, apresentações de slides.

antiringing

Habilita o anti-ringing (para filtros que não sejam EWA). O valor (entre 0.0 e 1.0) configura a intensidade do algoritmo de anti-ringing. Pode aumentar o aliasing se definido muito alto. Desabilitado por padrão.

sigmoid

Habilita a compressão sigmoidal durante a ampliação. Reduz ligeiramente o ringing. Habilitado por padrão.

11.145.1.3 Desentrelaçamento

Há suporte automático para o desentrelaçamento quando os quadros são marcados como entrelaçados; no entanto, os quadros só são desentrelaçados quando um algoritmo de desentrelaçamento é escolhido.

deinterlace

O algoritmo de desentrelaçamento a ser usado.

‘weave’

Nenhum desentrelaçamento: combina (weave) os campos em um único quadro. Este é o valor padrão.

‘bob’

Desentrelaçamento bob simples, que apenas repete cada linha de campo duas vezes.

‘yadif’

Yet another deinterlacing filter (mais um filtro de desentrelaçamento). Consulte o filtro yadif para mais detalhes.

‘bwdif’

Bob weaver deinterlacing filter (filtro de desentrelaçamento bob weaver). Consulte o filtro bwdif para mais detalhes.

skip_spatial_check

Ignora a verificação espacial de desentrelaçamento ao usar o desentrelaçamento yadif.

send_fields

Gera um quadro para cada campo, em vez de um para cada quadro. Observe que isso sempre dobrará a taxa de quadros de saída indicada, mesmo que a entrada não contenha nenhum quadro entrelaçado. Desabilitado por padrão.

11.145.1.4 Remoção de faixas

O libplacebo vem com um filtro de remoção de faixas integrado, eficaz para neutralizar muitas causas comuns de faixas (banding) e blocagem. É altamente recomendável ativá-lo sempre que a qualidade for importante.

deband

Habilita o algoritmo (rápido) de remoção de faixas. Desabilitado por padrão.

deband_iterations

Número de iterações de remoção de faixas do algoritmo. Cada iteração é realizada com um raio progressivamente maior (e um limiar reduzido). Os valores recomendados estão no intervalo de 1 a 4. O padrão é 1.

deband_threshold

Força do filtro de remoção de faixas. Números mais altos resultam em uma remoção mais agressiva. O padrão é 4.0.

deband_radius

Raio do filtro de remoção de faixas. Um raio maior é melhor para gradientes suaves, enquanto um raio menor é melhor para gradientes acentuados. O padrão é 16.0.

deband_grain

Quantidade extra de grão a adicionar à saída. Ajuda a ocultar imperfeições. O padrão é 6.0.

11.145.1.5 Ajuste de cor

Um conjunto de controles de cor subjetivos. Não são muito rigorosos, portanto o efeito exato varia um pouco de acordo com os primários e o espaço de cor da entrada.

brightness

Aumento de brilho, entre -1.0 e 1.0. O padrão é 0.0.

contrast

Ganho de contraste, entre 0.0 e 16.0. O padrão é 1.0.

saturation

Ganho de saturação, entre 0.0 e 16.0. O padrão é 1.0.

hue

Deslocamento de matiz em radianos, entre -3.14 e 3.14. O padrão é 0.0. Isso gira o subvetor UV, usando por padrão os coeficientes BT.709 para entradas RGB.

gamma

Ajuste de gama, entre 0.0 e 16.0. O padrão é 1.0.

temperature

Ajuste da temperatura de cor. Valores mais baixos deixam a saída mais quente/avermelhada, até 1667, enquanto valores mais altos a deixam mais fria/azulada, até 25000. O padrão é 6500 (branco neutro).

cones

Modelo de cones a ser usado para simular o daltonismo. Aceita qualquer combinação de l, m e s. Seguem alguns exemplos:

‘m’

Deuteranomalia / deuteranopia (afeta 3%-4% da população)

‘l’

Protanomalia / protanopia (afeta 1%-2% da população)

‘l+m’

Monocromacia (muito rara)

‘l+m+s’

Acromatopsia (perda completa da visão diurna, extremamente rara)

cone-strength

Fator de ganho para os cones especificados por cones, entre 0.0 e 10.0. Um valor de 1.0 não resulta em nenhuma alteração na visão de cores. Um valor de 0.0 (o padrão) simula a perda completa desses cones. Valores acima de 1.0 exageram as diferenças entre os cones, o que pode ajudar a compensar uma visão de cores reduzida.

11.145.1.6 Detecção de picos

Para ajudar a lidar com fontes que possuem apenas metadados HDR10 estáticos (ou nenhuma marcação), o libplacebo usa seu próprio compute shader interno de análise de quadros para analisar os quadros de origem e adaptar a função de mapeamento de tons em tempo real. Se isso for lento demais, ou se forem necessários resultados exatamente reproduzíveis quadro a quadro, recomenda-se desativar este recurso.

peak_detect

Habilita a detecção de picos HDR. Ignora os valores estáticos de MaxCLL/MaxFALL em favor da detecção dinâmica a partir da entrada. Observe que os valores detectados não são gravados de volta nos quadros de saída; eles apenas orientam o processo interno de mapeamento de tons. Habilitado por padrão.

smoothing_period

Período de suavização da detecção de picos, entre 0.0 e 1000.0. Valores mais altos tornam a detecção de picos menos responsiva a mudanças na entrada. O padrão é 20.0.

scene_threshold_low scene_threshold_high

Limiares inferior e superior para a detecção de mudança de cena. Expressos em uma escala logarítmica entre 0.0 e 100.0. Os padrões são 1.0 e 3.0, respectivamente. Definir qualquer um deles com um valor negativo desativa essa funcionalidade.

percentile

Qual percentil do histograma de brilho do quadro usar como pico de origem para o mapeamento de tons. O padrão é 99.995, um valor bastante conservador. Definir isso como 100.0 desativa a medição do histograma do quadro e passa a usar o brilho de pico real para o mapeamento de tons.

11.145.1.7 Mapeamento de tons

As opções desta seção controlam como o libplacebo realiza o mapeamento de tons e o mapeamento de gama ao lidar com incompatibilidades entre conteúdo de gama ampla ou HDR. Em geral, o libplacebo depende de uma marcação precisa da origem e de informações de gama da tela de masterização para produzir os melhores resultados.

gamut_mode

Como tratar cores fora da gama que podem ocorrer como resultado do mapeamento colorimétrico de gama.

‘clip’

Não faz nada: apenas recorta as cores fora do intervalo para o volume RGB. Baixa qualidade, porém extremamente rápido.

‘perceptual’

Recorta suavemente as cores, de forma perceptual, ao volume da gama. Este é o padrão.

‘relative’

Recorte rígido colorimétrico relativo. Semelhante a perceptual, porém sem a transição suave (soft knee).

‘saturation’

Mapeamento de saturação: mapeia os primários diretamente para primários no espaço RGB. Não é recomendado, exceto para gráficos de computador artificiais nos quais se deseja uma exibição brilhante e saturada.

‘absolute’

Recorte rígido colorimétrico absoluto. Não realiza nenhum ajuste do ponto de branco.

‘desaturate’

Dessatura de forma abrupta as cores fora da gama em direção ao branco, preservando a luminância. Tende a distorcer a aparência visual de objetos brilhantes.

‘darken’

Reduz linearmente o brilho do conteúdo para preservar detalhes saturados, seguido do recorte das cores fora da gama restantes.

‘warn’

Destaca os pixels fora da gama (invertendo-os ou marcando-os).

‘linear’

Reduz linearmente a cromaticidade de toda a imagem para que ela caiba dentro do volume de cor de destino. Tenha cuidado ao usar esta opção em fontes BT.2020 sem metadados de masterização adequados, pois isso leva a uma dessaturação excessiva.

tonemapping

Algoritmo de mapeamento de tons a ser usado. Os valores disponíveis são:

‘auto’

Seleção automática baseada em heurísticas internas. Este é o padrão.

‘clip’

Não realiza mapeamento de tons, apenas recorta as cores fora do intervalo. Mantém precisão de cor perfeita para as cores dentro do intervalo, mas destrói completamente as informações fora dele. Não realiza nenhuma adaptação do ponto de preto. Não é configurável.

‘st2094-40’

EETF do Anexo B da SMPTE ST 2094-40, que aplica as curvas de Bézier dos metadados dinâmicos do HDR10+ para realizar o mapeamento de tons. A OOTF usada é ajustada com base na razão entre a luminância de pico da tela desejada e a real.

‘st2094-10’

EETF do Anexo B.2 da SMPTE ST 2094-10, que leva em conta a luminância média do sinal de entrada, além do máximo/mínimo. O parâmetro configurável contrast influencia a inclinação do segmento de saída linear, com padrão 1.0 para não aumentar nem diminuir o contraste. Observe que isso atualmente não inclui os controles subjetivos de ganho/deslocamento/gama definidos no Anexo B.3.

‘bt.2390’

EETF do relatório ITU-R BT.2390, uma atenuação por spline de Hermite com segmento linear. O deslocamento do ponto de transição (knee) é configurável. Observe que este parâmetro tem como padrão 1.0, em vez do valor 0.5 da especificação ITU-R.

‘bt.2446a’

EETF do relatório ITU-R BT.2446, método A. Projetado para fontes HDR bem masterizadas. Pode ser usado tanto para mapeamento de tons direto quanto inverso. Não é configurável.

‘spline’

Spline simples composto por dois polinômios, unidos por um único ponto de pivô. O parâmetro fornece o ponto de pivô (no espaço PQ), com padrão 0.30. Pode ser usado tanto para mapeamento de tons direto quanto inverso.

‘reinhard’

Algoritmo de mapeamento de tons global, simples e não linear. O parâmetro especifica o coeficiente de contraste local no pico da tela. Em essência, um parâmetro de 0.5 implica que o branco de referência terá cerca de metade do brilho em relação ao recorte. O padrão é 0.5, o que resulta na formulação mais simples desta função.

‘mobius’

Generalização do algoritmo de mapeamento de tons reinhard, que passa a admitir uma inclinação linear adicional próxima ao preto. O parâmetro de mapeamento de tons indica o equilíbrio entre a seção linear e a seção não linear. Em essência, para um dado parâmetro x, todo valor de cor abaixo de x será mapeado linearmente, enquanto valores mais altos recebem mapeamento de tons não linear. Valores próximos a 1.0 fazem esta curva se comportar como clip, enquanto valores próximos a 0.0 fazem-na se comportar como reinhard. O valor padrão é 0.3, que oferece um bom equilíbrio entre precisão colorimétrica e preservação de detalhes fora da gama.

‘hable’

Algoritmo de mapeamento de tons fílmico e segmentado, desenvolvido por John Hable para uso em Uncharted 2, inspirado em um algoritmo de mapeamento de tons semelhante usado pela Kodak. Popularizou-se pelo uso em jogos com renderização HDR. Preserva muito bem os detalhes tanto escuros quanto claros, mas tem a desvantagem de alterar o brilho médio de forma bastante significativa. É, de certa forma, semelhante ao reinhard com o parâmetro 0.24.

‘gamma’

Ajusta uma função gama (potência) para a transferência entre os espaços de cor de origem e destino, resultando efetivamente em uma transição rígida perceptual que une duas seções aproximadamente lineares. Isso preserva detalhes em todas as escalas com razoável precisão, mas pode resultar em uma imagem com aparência apagada ou sem vida. O parâmetro é usado como ponto de corte, com padrão 0.5.

‘linear’

Estica linearmente o intervalo de entrada para o intervalo de saída, no espaço PQ. Isso preserva todos os detalhes com precisão, mas resulta em um brilho médio significativamente diferente. Pode ser usado tanto para mapeamento de tons inverso quanto para o normal. O parâmetro pode ser usado como um coeficiente de ganho linear adicional (com padrão 1.0).

tonemapping_param

Para funções de mapeamento de tons ajustáveis, este parâmetro pode ser usado para ajustar finamente o comportamento da curva. Consulte a documentação de tonemapping. O valor padrão 0.0 é substituído pela configuração padrão preferida da curva.

inverse_tonemapping

Se habilitado, este filtro também tentará esticar sinais SDR para preencher os volumes de cor de saída HDR. Desabilitado por padrão.

tonemapping_lut_size

Tamanho da LUT de mapeamento de tons, entre 2 e 1024. O padrão é 256. Observe que este valor é elevado ao quadrado quando combinado com peak_detect.

contrast_recovery

Força da recuperação de contraste. Se definida com um valor acima de 0.0, a imagem de origem é dividida em componentes de alta e baixa frequência, e uma parte da imagem de alta frequência é somada de volta à saída após o mapeamento de tons. Pode causar artefatos de ringing excessivos em algumas fontes HDR, mas pode melhorar a nitidez subjetiva e o detalhe remanescentes na imagem após o mapeamento de tons. O padrão é 0.30.

contrast_smoothness

Tamanho do kernel passa-baixa da recuperação de contraste. O padrão é 3.5. Aumentar ou diminuir este valor afeta substancialmente a aparência visual. Não tem efeito quando contrast_recovery está desabilitado.

11.145.1.8 Dithering

Por padrão, o libplacebo aplica dithering sempre que necessário, o que inclui a renderização para qualquer formato inteiro com precisão inferior a 16 bits. É recomendável deixar isso sempre ativado, pois não fazê-lo pode resultar em faixas visíveis na saída, mesmo com o filtro debanding habilitado. Se o desempenho máximo for necessário, use ordered_fixed em vez de desabilitar o dithering.

dithering

Método de dithering a ser usado. Aceita os seguintes valores:

‘none’

Desativa completamente o dithering. Pode resultar em faixas visíveis.

‘blue’

Aplica dithering com ruído pseudoazul. Este é o padrão.

‘ordered’

Padrão de dither ordenado ajustável.

‘ordered_fixed’

Dither ordenado mais rápido, com tamanho fixo de 6. Sem textura.

‘white’

Aplica dithering com ruído branco. Sem textura.

dither_lut_size

Tamanho da LUT de dither, como logaritmo em base 2 entre 1 e 8. O padrão é 6, correspondendo a uma LUT de tamanho 64x64.

dither_temporal

Habilita o dithering temporal. Desabilitado por padrão.

11.145.1.9 Shaders personalizados

O libplacebo oferece suporte a diversos shaders personalizados baseados na sintaxe GLSL .hook do mpv. Uma coleção desses shaders pode ser encontrada aqui: https://github.com/mpv-player/mpv/wiki/User-Scripts#user-shaders

Uma descrição completa do formato de shader do mpv está fora do escopo desta seção, mas um resumo pode ser encontrado aqui: https://mpv.io/manual/master/#options-glsl-shader

custom_shader_path

Especifica um caminho para um arquivo de shader personalizado a ser carregado em tempo de execução.

custom_shader_bin

Especifica um shader personalizado completo como uma string bruta.

11.145.1.10 Depuração / desempenho

Todas as opções desta seção ficam desativadas por padrão. Podem ser úteis ao tentar extrair o máximo de desempenho às custas da qualidade.

skip_aa

Desativa o anti-aliasing ao reduzir a escala.

disable_linear

Desativa o redimensionamento em luz linear.

disable_builtin

Desativa a amostragem integrada da GPU (força o uso de LUT).

disable_fbos

Desativa forçadamente os FBOs, resultando na perda de quase toda a funcionalidade, mas oferecendo a máxima velocidade possível.

11.145.2 Comandos

Este filtro oferece suporte a quase todas as opções acima como comandos.

11.145.3 Exemplos

  • Mapeia os tons da entrada para uma saída BT.709 de gama padrão:

    libplacebo=colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
    
  • Redimensiona a entrada para caber no padrão 1080p, com redimensionamento de alta qualidade:

    libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos
    
  • Interpola uma entrada de FPS baixo / VFR para obter uma saída suavizada de 60 fps constantes:

    libplacebo=fps=60:frame_mixer=mitchell_clamp
    
  • Converte a entrada para um JPEG sRGB padrão:

    libplacebo=format=yuv420p:colorspace=bt470bg:color_primaries=bt709:color_trc=iec61966-2-1:range=pc
    
  • Usa configurações de remoção de faixas de maior qualidade:

    libplacebo=deband=true:deband_iterations=3:deband_radius=8:deband_threshold=6
    
  • Executa este filtro na CPU, em sistemas com o Mesa instalado (e com as opções mais custosas desabilitadas):

    ffmpeg ... -init_hw_device vulkan:llvmpipe ... -vf libplacebo=upscaler=none:downscaler=none:peak_detect=false
    
  • Suprime a aplicação de grão de filme AV1/H.274 baseada em CPU no decoder, em favor de fazê-lo com este filtro. Observe que isso só é vantajoso se os quadros já estiverem na GPU, ou se você estiver usando o libplacebo para outros fins, pois, do contrário, a ida e volta pela VRAM anulará com folga qualquer ganho de velocidade esperado.

    ffmpeg -export_side_data +film_grain ... -vf libplacebo=apply_filmgrain=true
    
  • Interoperação com o hwdec do VAAPI para evitar idas e vindas pela RAM:

    ffmpeg -init_hw_device vulkan -hwaccel vaapi -hwaccel_output_format vaapi ... -vf libplacebo
    

11.146 libvmaf

Calcula a pontuação VMAF (Video Multi-Method Assessment Fusion) para um par de vídeos de entrada, um de referência e outro distorcido.

A primeira entrada é o vídeo distorcido, e a segunda entrada é o vídeo de referência.

A pontuação VMAF obtida é exibida por meio do sistema de log.

Requer como pré-requisito a biblioteca vmaf da Netflix (libvmaf). Após instalar a biblioteca, é possível habilitá-la com: ./configure --enable-libvmaf.

O filtro tem as seguintes opções:

model

Uma lista de modelos vmaf delimitada por ‘|‘. Cada modelo pode ser configurado com diversos parâmetros. Valor padrão: "version=vmaf_v0.6.1"

feature

Uma lista de features delimitada por ‘|‘. Cada feature pode ser configurada com diversos parâmetros.

log_path

Define o caminho de arquivo a ser usado para armazenar os arquivos de log.

log_fmt

Define o formato do arquivo de log (xml, json, csv ou sub).

pool

Define o método de pool a ser usado para calcular o vmaf. As opções são min, harmonic_mean ou mean (padrão).

n_threads

Define o número de threads a serem usadas ao inicializar o libvmaf. Valor padrão: 0, sem threads.

n_subsample

Define o intervalo de subamostragem de quadros a ser usado.

Este filtro também oferece suporte às opções framesync.

11.146.1 Exemplos

  • Nos exemplos abaixo, um vídeo distorcido distorted.mpg é comparado com um arquivo de referência reference.mpg.
  • Uso básico:

    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf=log_path=output.xml -f null -
    
  • Exemplo com múltiplos modelos:

    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='model=version=vmaf_v0.6.1\\:name=vmaf|version=vmaf_v0.6.1neg\\:name=vmaf_neg' -f null -
    
  • Exemplo com múltiplas features adicionais:

    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='feature=name=psnr|name=ciede' -f null -
    
  • Exemplo com opções e containers diferentes:

    ffmpeg -i distorted.mpg -i reference.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=log_fmt=json:log_path=output.json" -f null -
    

11.147 libvmaf_cuda

Esta é a variante CUDA do filtro libvmaf. Ela aceita apenas quadros CUDA.

Requer como pré-requisito a biblioteca vmaf da Netflix (libvmaf). Após instalar a biblioteca, é possível habilitá-la com: ./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf.

11.147.1 Exemplos

  • Uso básico mostrando decodificação por hardware CUVID e redimensionamento CUDA com scale_cuda:
    ffmpeg \
        -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i dis.obu \
        -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i ref.obu \
        -filter_complex "
            [0:v]scale_cuda=format=yuv420p[dis]; \
            [1:v]scale_cuda=format=yuv420p[ref]; \
            [dis][ref]libvmaf_cuda=log_fmt=json:log_path=output.json
        " \
        -f null -
    

11.148 limitdiff

Aplica um filtro de diferença limitada usando um segundo fluxo de vídeo e, opcionalmente, um terceiro.

O filtro aceita as seguintes opções:

threshold

Define o limiar a ser usado ao permitir certas diferenças entre os fluxos de vídeo. Qualquer valor de diferença absoluta menor ou igual a esse limiar fará com que os componentes de pixel sejam obtidos do primeiro fluxo de vídeo.

elasticity

Define a elasticidade do limiar suave ao processar os fluxos de vídeo. Esse valor, multiplicado pelo primeiro, define o segundo limiar. Qualquer valor de diferença absoluta maior ou igual ao segundo limiar fará com que os componentes de pixel sejam obtidos do segundo fluxo de vídeo. Para valores entre os dois limiares, será usada uma interpolação linear entre o primeiro e o segundo fluxo de vídeo.

reference

Habilita o processamento do fluxo de vídeo de referência (o terceiro). Desabilitado por padrão. Se definido, esse fluxo de vídeo será usado para calcular a diferença absoluta em relação ao primeiro fluxo de vídeo.

planes

Especifica quais planos serão processados. O padrão é todos os disponíveis.

11.148.1 Comandos

Este filtro aceita todas as opções acima como comandos, exceto a opção ‘reference’.

11.149 limiter

Limita os valores dos componentes de pixel ao intervalo especificado [min, max].

O filtro aceita as seguintes opções:

min

Limite inferior. O padrão é o menor valor permitido para a entrada.

max

Limite superior. O padrão é o maior valor permitido para a entrada.

planes

Especifica quais planos serão processados. O padrão é todos os disponíveis.

11.149.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.150 loop

Repete em loop os quadros de vídeo.

O filtro aceita as seguintes opções:

loop

Define o número de repetições do loop. Definir esse valor como -1 resulta em loops infinitos. O padrão é 0.

size

Define o tamanho máximo em número de quadros. O padrão é 0.

start

Define o primeiro quadro do loop. O padrão é 0.

time

Define o instante de início do loop, em segundos. Usado somente se a opção start estiver definida como -1.

11.150.1 Exemplos

  • Repete em loop infinito apenas o primeiro quadro:

    loop=loop=-1:size=1:start=0
    
  • Repete em loop o primeiro quadro 10 vezes:

    loop=loop=10:size=1:start=0
    
  • Repete em loop os 10 primeiros quadros 5 vezes:

    loop=loop=5:size=10:start=0
    

11.151 lut1d

Aplica uma LUT 1D a um vídeo de entrada.

O filtro aceita as seguintes opções:

file

Define o nome do arquivo da LUT 1D.

Formatos atualmente compatíveis:

‘cube’

Iridas

‘csp’

cineSpace

interp

Seleciona o modo de interpolação.

Os valores disponíveis são:

‘nearest’

Usa os valores do ponto definido mais próximo.

‘linear’

Interpola os valores usando interpolação linear.

‘cosine’

Interpola os valores usando interpolação por cosseno.

‘cubic’

Interpola os valores usando interpolação cúbica.

‘spline’

Interpola os valores usando interpolação por spline.

11.151.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.152 lut3d

Aplica uma LUT 3D a um vídeo de entrada.

O filtro aceita as seguintes opções:

file

Define o nome do arquivo da LUT 3D.

Formatos atualmente compatíveis:

‘3dl’

AfterEffects

‘cube’

Iridas

‘dat’

DaVinci

‘m3d’

Pandora

‘csp’

cineSpace

interp

Seleciona o modo de interpolação.

Os valores disponíveis são:

‘nearest’

Usa os valores do ponto definido mais próximo.

‘trilinear’

Interpola os valores usando os 8 pontos que definem um cubo.

‘tetrahedral’

Interpola os valores usando um tetraedro.

‘pyramid’

Interpola os valores usando uma pirâmide.

‘prism’

Interpola os valores usando um prisma.

11.152.1 Comandos

Este filtro oferece suporte à opção interp como comando.

11.153 lumakey

Transforma determinados valores de luma em transparência.

O filtro aceita as seguintes opções:

threshold

Define o luma que será usado como base para a transparência. O valor padrão é 0.

tolerance

Define o intervalo de valores de luma que serão removidos pela chave (keyed out). O valor padrão é 0.01.

softness

Define o intervalo de suavidade. O valor padrão é 0. Use isso para controlar a transição gradual de zero até a transparência total.

11.153.1 Comandos

Este filtro é compatível com os mesmos comandos que com as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.154 lut, lutrgb, lutyuv

Calcula uma tabela de consulta (look-up table) que associa cada valor de entrada de um componente de pixel a um valor de saída, e a aplica ao vídeo de entrada.

O lutyuv aplica uma tabela de consulta a um vídeo de entrada YUV; o lutrgb, a um vídeo de entrada RGB.

Esses filtros aceitam os seguintes parâmetros:

c0

define a expressão do primeiro componente de pixel

c1

define a expressão do segundo componente de pixel

c2

define a expressão do terceiro componente de pixel

c3

define a expressão do quarto componente de pixel; corresponde ao componente alfa

r

define a expressão do componente vermelho

g

define a expressão do componente verde

b

define a expressão do componente azul

a

expressão do componente alfa

y

define a expressão do componente Y/luma

u

define a expressão do componente U/Cb

v

define a expressão do componente V/Cr

Cada um deles especifica a expressão a ser usada para calcular a tabela de consulta dos valores do componente de pixel correspondente.

O componente exato associado a cada uma das opções c* depende do formato de entrada.

O filtro lut requer pixel formats YUV ou RGB na entrada; o lutrgb requer pixel formats RGB na entrada; e o lutyuv requer YUV.

As expressões podem conter as seguintes constantes e funções:

w h

A largura e a altura da entrada.

val

O valor de entrada do componente de pixel.

clipval

O valor de entrada, recortado ao intervalo minval-maxval.

maxval

O valor máximo do componente de pixel.

minval

O valor mínimo do componente de pixel.

negval

O valor negado do componente de pixel, recortado ao intervalo minval-maxval; corresponde à expressão "maxval-clipval+minval".

clip(val)

O valor calculado em val, recortado ao intervalo minval-maxval.

gammaval(gamma)

O valor de correção de gama calculado para o valor do componente de pixel, recortado ao intervalo minval-maxval. Corresponde à expressão "pow((clipval-minval)/(maxval-minval)\,gamma)*(maxval-minval)+minval"

Todas as expressões usam "clipval" como padrão.

11.154.1 Comandos

Este filtro é compatível com os mesmos comandos que as opções.

11.154.2 Exemplos

  • Inverte o vídeo de entrada:
    lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
    lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
    

O exemplo acima é equivalente a:

    lutrgb="r=negval:g=negval:b=negval"
    lutyuv="y=negval:u=negval:v=negval"
  • Inverte a luma:

    lutyuv=y=negval
    
  • Remove os componentes de croma, transformando o vídeo em uma imagem em tons de cinza:

    lutyuv="u=128:v=128"
    
  • Aplica um efeito de queima de luma:

    lutyuv="y=2*val"
    
  • Remove os componentes verde e azul:

    lutrgb="g=0:b=0"
    
  • Define um valor constante de canal alfa na entrada:

    format=rgba,lutrgb=a="maxval-minval/2"
    
  • Corrige o gama da luma por um fator de 0.5:

    lutyuv=y=gammaval(0.5)
    
  • Descarta os bits menos significativos da luma:

    lutyuv=y='bitand(val, 128+64+32)'
    
  • Efeito estilo Technicolor:

    lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
    

11.155 lut2, tlut2

O filtro lut2 recebe dois fluxos de entrada e gera um fluxo de saída.

O filtro tlut2 (lut2 temporal) recebe dois quadros consecutivos de um único fluxo.

Este filtro aceita os seguintes parâmetros:

c0

define a expressão do primeiro componente de pixel

c1

define a expressão do segundo componente de pixel

c2

define a expressão do terceiro componente de pixel

c3

define a expressão do quarto componente de pixel, correspondente ao componente alfa

d

define a profundidade de bits de saída, disponível apenas para o filtro lut2. O padrão é 0, o que significa que a profundidade de bits é escolhida automaticamente a partir do formato da primeira entrada.

O filtro lut2 também é compatível com as opções de framesync.

Cada uma delas especifica a expressão usada para calcular a tabela de consulta dos valores do componente de pixel correspondente.

O componente exato associado a cada uma das opções c* depende do formato das entradas.

As expressões podem conter as seguintes constantes:

w h

A largura e a altura da entrada.

x

O primeiro valor de entrada do componente de pixel.

y

O segundo valor de entrada do componente de pixel.

bdx

A profundidade de bits do primeiro vídeo de entrada.

bdy

A profundidade de bits do segundo vídeo de entrada.

O padrão de todas as expressões é "x".

11.155.1 Comandos

Este filtro aceita todas as opções acima como comandos, exceto a opção d.

11.155.2 Exemplos

  • Realça as diferenças entre dois fluxos de vídeo RGB:

    lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
    
  • Realça as diferenças entre dois fluxos de vídeo YUV:

    lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
    
  • Mostra a diferença máxima entre dois fluxos de vídeo:

    lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
    

11.156 maskedclamp

Limita (clamp) o primeiro fluxo de entrada usando o segundo e o terceiro fluxos de entrada.

Retorna o valor do primeiro fluxo ajustado para ficar entre o segundo fluxo de entrada - undershoot e o terceiro fluxo de entrada + overshoot.

Este filtro aceita as seguintes opções:

undershoot

O valor padrão é 0.

overshoot

O valor padrão é 0.

planes

Define quais planos serão processados como bitmap; os planos não processados são copiados do primeiro fluxo. O valor padrão é 0xf, o que faz com que todos os planos sejam processados.

11.156.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.157 maskedmax

Combina o segundo e o terceiro fluxos de entrada no fluxo de saída usando a diferença absoluta entre o segundo fluxo de entrada e o primeiro fluxo de entrada, e a diferença absoluta entre o terceiro fluxo de entrada e o primeiro fluxo de entrada. O valor escolhido será o do segundo fluxo de entrada se a segunda diferença absoluta for maior que a primeira, ou o do terceiro fluxo de entrada caso contrário.

Este filtro aceita as seguintes opções:

planes

Define quais planos serão processados como bitmap; os planos não processados são copiados do primeiro fluxo. O valor padrão é 0xf, o que faz com que todos os planos sejam processados.

11.157.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.158 maskedmerge

Combina o primeiro fluxo de entrada com o segundo fluxo de entrada usando pesos por pixel definidos no terceiro fluxo de entrada.

Um valor 0 no componente de pixel do terceiro fluxo significa que o componente de pixel do primeiro fluxo é retornado sem alteração, enquanto o valor máximo (por exemplo, 255 para vídeos de 8 bits) significa que o componente de pixel do segundo fluxo é retornado sem alteração. Valores intermediários definem o quanto os componentes de pixel dos dois fluxos de entrada são combinados.

Este filtro aceita as seguintes opções:

planes

Define quais planos serão processados como bitmap; os planos não processados são copiados do primeiro fluxo. O valor padrão é 0xf, o que faz com que todos os planos sejam processados.

11.158.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.159 maskedmin

Combina o segundo e o terceiro fluxos de entrada no fluxo de saída usando a diferença absoluta entre o segundo fluxo de entrada e o primeiro fluxo de entrada, e a diferença absoluta entre o terceiro fluxo de entrada e o primeiro fluxo de entrada. O valor escolhido será o do segundo fluxo de entrada se a segunda diferença absoluta for menor que a primeira, ou o do terceiro fluxo de entrada caso contrário.

Este filtro aceita as seguintes opções:

planes

Define quais planos serão processados como bitmap; os planos não processados são copiados do primeiro fluxo. O valor padrão é 0xf, o que faz com que todos os planos sejam processados.

11.159.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.160 maskedthreshold

Seleciona pixels comparando a diferença absoluta entre dois fluxos de vídeo com um limiar fixo.

Se a diferença absoluta entre o componente de pixel do primeiro e do segundo fluxo de vídeo for igual ou menor que o limiar informado pelo usuário, o componente de pixel do primeiro fluxo de vídeo é selecionado; caso contrário, o componente de pixel do segundo fluxo de vídeo é selecionado.

Este filtro aceita as seguintes opções:

threshold

Define o limiar usado para selecionar pixels a partir da diferença absoluta entre os dois fluxos de vídeo de entrada.

planes

Define quais planos serão processados como bitmap; os planos não processados são copiados do segundo fluxo. O valor padrão é 0xf, o que faz com que todos os planos sejam processados.

mode

Define o modo de operação do filtro. Pode ser abs ou diff. O padrão é abs.

11.160.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.161 maskfun

Cria uma máscara a partir do vídeo de entrada.

É útil, por exemplo, para criar máscaras de movimento depois do filtro tblend.

Este filtro aceita as seguintes opções:

low

Define o limiar baixo. Qualquer componente de pixel menor ou igual a esse valor será definido como 0.

high

Define o limiar alto. Qualquer componente de pixel maior que esse valor será definido com o valor máximo permitido pelo pixel format atual.

planes

Define os planos a filtrar; por padrão, todos os planos disponíveis são filtrados.

fill

Preenche todos os pixels do quadro com esse valor.

sum

Define o valor médio máximo de pixel para o quadro. Se a soma de todos os componentes de pixel for maior que essa média, o quadro de saída será completamente preenchido com o valor definido pela opção fill. Costuma ser útil para detectar mudanças de cena quando usado em combinação com o filtro tblend.

11.161.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.162 mcdeint

Aplica desentrelaçamento com compensação de movimento.

Necessita de um campo por quadro como entrada e, portanto, deve ser usado em conjunto com yadif=1/3 ou equivalente.

Este filtro aceita as seguintes opções:

mode

Define o modo de desentrelaçamento.

Aceita um dos seguintes valores:

‘fast’ ‘medium’ ‘slow’

usa estimativa de movimento iterativa

‘extra_slow’

como ‘slow’, mas usa múltiplos quadros de referência.

O valor padrão é ‘fast’.

parity

Define a paridade de campo da imagem assumida para o vídeo de entrada. Deve ser um dos seguintes valores:

‘0, tff’

assume que o campo superior vem primeiro

‘1, bff’

assume que o campo inferior vem primeiro

O valor padrão é ‘bff’.

qp

Define o parâmetro de quantização (QP) por bloco usado pelo encoder interno.

Valores mais altos devem resultar em um campo de vetores de movimento mais suave, mas com vetores individuais menos otimizados. O valor padrão é 1.

11.163 median

Seleciona o pixel mediano de um retângulo definido pelo raio.

Este filtro aceita as seguintes opções:

radius

Define o tamanho do raio horizontal. O valor padrão é 1. O intervalo permitido é um inteiro de 1 a 127.

planes

Define quais planos processar. O padrão é 15, ou seja, todos os planos disponíveis.

radiusV

Define o tamanho do raio vertical. O valor padrão é 0. O intervalo permitido é um inteiro de 0 a 127. Se for 0, o valor será obtido a partir da opção horizontal radius.

percentile

Define o percentil da mediana. O valor padrão é 0.5. O valor padrão de 0.5 sempre seleciona os valores medianos, enquanto 0 seleciona os valores mínimos e 1 os valores máximos.

11.163.1 Comandos

Este filtro é compatível com os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.164 mergeplanes

Combina componentes de canal de cor de vários fluxos de vídeo.

O filtro aceita até 4 fluxos de entrada e combina os planos de entrada selecionados no vídeo de saída.

Este filtro aceita as seguintes opções:

mapping

Define o mapeamento de planos de entrada para saída. O padrão é 0.

O mapeamento é especificado como um bitmap. Deve ser especificado como um número hexadecimal no formato 0xAa[Bb[Cc[Dd]]]. ’Aa’ descreve o mapeamento do primeiro plano do fluxo de saída. ’A’ define o número do fluxo de entrada a usar (de 0 a 3), e ’a’ o número do plano da entrada correspondente a usar (de 0 a 3). O restante dos mapeamentos segue o mesmo padrão: ’Bb’ descreve o mapeamento do segundo plano do fluxo de saída, ’Cc’ descreve o mapeamento do terceiro plano do fluxo de saída, e ’Dd’ descreve o mapeamento do quarto plano do fluxo de saída.

format

Define o pixel format de saída. O padrão é yuva444p.

map0s map1s map2s map3s

Define o mapeamento de fluxo de entrada para saída referente ao N-ésimo plano de saída. O padrão é 0.

map0p map1p map2p map3p

Define o mapeamento de plano de entrada para saída referente ao N-ésimo plano de saída. O padrão é 0.

11.164.1 Exemplos

  • Combina três fluxos de vídeo em tons de cinza com a mesma largura e altura em um único fluxo de vídeo:

    [a0][a1][a2]mergeplanes=0x001020:yuv444p
    
  • Combina o 1º fluxo yuv444p e o 2º fluxo de vídeo em tons de cinza em um fluxo de vídeo yuva444p:

    [a0][a1]mergeplanes=0x00010210:yuva444p
    
  • Troca os planos Y e A em um fluxo yuva444p:

    format=yuva444p,mergeplanes=0x03010200:yuva444p
    
  • Troca os planos U e V em um fluxo yuv420p:

    format=yuv420p,mergeplanes=0x000201:yuv420p
    
  • Converte um clipe rgb24 para yuv444p:

    format=rgb24,mergeplanes=0x000102:yuv444p
    

11.165 mestimate

Estima e exporta vetores de movimento usando algoritmos de correspondência de blocos. Os vetores de movimento são armazenados nos dados laterais do quadro para uso por outros filtros.

Este filtro aceita as seguintes opções:

method

Especifica o método de estimativa de movimento. Aceita um dos seguintes valores:

‘esa’

Algoritmo de busca exaustiva.

‘tss’

Algoritmo de busca em três passos.

‘tdls’

Algoritmo de busca logarítmica bidimensional.

‘ntss’

Novo algoritmo de busca em três passos.

‘fss’

Algoritmo de busca em quatro passos.

‘ds’

Algoritmo de busca em diamante.

‘hexbs’

Algoritmo de busca baseado em hexágono.

‘epzs’

Algoritmo de busca zonal preditiva aprimorada.

‘umh’

Algoritmo de busca multi-hexagonal desigual.

O valor padrão é ‘esa’.

mb_size

Tamanho do macrobloco. O padrão é 16.

search_param

Parâmetro de busca. O padrão é 7.

11.166 mestimate_d3d12

Estima e exporta vetores de movimento usando estimativa de movimento acelerada por hardware D3D12. Este filtro usa os recursos de estimativa de movimento por hardware da GPU disponíveis nas APIs de vídeo do DirectX 12 para obter ganhos significativos de desempenho em relação ao filtro mestimate, baseado em software.

Os vetores de movimento são armazenados nos dados laterais do quadro para uso por outros filtros.

Este filtro exige que a entrada esteja no pixel format de hardware d3d12. O filtro usa precisão de um quarto de pixel para a estimativa de vetores de movimento.

Este filtro aceita as seguintes opções:

mb_size

Tamanho do macrobloco. Somente 8 e 16 são compatíveis. O padrão é 16.

11.166.1 Exemplos

Estima vetores de movimento usando aceleração por hardware D3D12 com blocos de 16x16 e os visualiza:

ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 \
        -vf mestimate_d3d12=mb_size=16,hwdownload,format=nv12,codecview=mv=pf \
        -c:v libx264 -preset fast -b:v 5M output.mp4

11.167 midequalizer

Aplica o efeito Midway Image Equalization (equalização de imagem intermediária) usando dois fluxos de vídeo.

O Midway Image Equalization ajusta um par de imagens para que tenham o mesmo histograma, preservando ao máximo sua dinâmica. É útil, por exemplo, para igualar a exposição de um par de câmeras estéreo.

Este filtro tem duas entradas e uma saída; todas devem ter o mesmo pixel format, mas podem ter tamanhos diferentes. A saída do filtro é a primeira entrada ajustada com o histograma intermediário de ambas as entradas.

Este filtro aceita a seguinte opção:

planes

Define quais planos processar. O padrão é 15, ou seja, todos os planos disponíveis.

11.168 minterpolate

Converte o vídeo para a taxa de quadros especificada usando interpolação de movimento.

Este filtro aceita as seguintes opções:

fps

Especifica a taxa de quadros de saída. Pode ser um valor racional, por exemplo 60000/1001. Os quadros são descartados se o fps for menor que o fps de origem. O padrão é 60.

mi_mode

Modo de interpolação de movimento. Os seguintes valores são aceitos:

‘dup’

Duplica o quadro anterior ou seguinte para interpolar novos quadros.

‘blend’

Mescla os quadros de origem. O quadro interpolado é a média dos quadros anterior e seguinte.

‘mci’

Interpolação com compensação de movimento. As seguintes opções têm efeito quando este modo é selecionado:

‘mc_mode’

Modo de compensação de movimento. Os seguintes valores são aceitos:

‘obmc’

Compensação de movimento por blocos sobrepostos.

‘aobmc’

Compensação de movimento adaptativa por blocos sobrepostos. Os coeficientes de ponderação da janela são controlados de forma adaptativa de acordo com a confiabilidade dos vetores de movimento vizinhos, a fim de reduzir a suavização excessiva.

O modo padrão é ‘obmc’.

‘me_mode’

Modo de estimativa de movimento. Os seguintes valores são aceitos:

‘bidir’

Estimativa de movimento bidirecional. Os vetores de movimento são estimados para cada quadro de origem nas direções direta e reversa.

‘bilat’

Estimativa de movimento bilateral. Os vetores de movimento são estimados diretamente para o quadro interpolado.

O modo padrão é ‘bilat’.

‘me’

O algoritmo a ser usado para a estimativa de movimento. Os seguintes valores são aceitos:

‘esa’

Algoritmo de busca exaustiva.

‘tss’

Algoritmo de busca em três passos.

‘tdls’

Algoritmo de busca logarítmica bidimensional.

‘ntss’

Novo algoritmo de busca em três passos.

‘fss’

Algoritmo de busca em quatro passos.

‘ds’

Algoritmo de busca em diamante.

‘hexbs’

Algoritmo de busca baseado em hexágono.

‘epzs’

Algoritmo de busca zonal preditiva aprimorada.

‘umh’

Algoritmo de busca multi-hexagonal desigual.

O algoritmo padrão é ‘epzs’.

‘mb_size’

Tamanho do macrobloco. O padrão é 16.

‘search_param’

Parâmetro de busca da estimativa de movimento. O padrão é 32.

‘vsbmc’

Habilita a compensação de movimento por blocos de tamanho variável. A estimativa de movimento é aplicada com blocos menores nas bordas dos objetos para deixá-las menos borradas. O padrão é 0 (desativado).

scd

Método de detecção de mudança de cena. Uma mudança de cena faz os vetores de movimento apontarem em direções aleatórias. A detecção de mudança de cena substitui os quadros interpolados por quadros duplicados. Pode não ser necessária para os outros modos. Os seguintes valores são aceitos:

‘none’

Desativa a detecção de mudança de cena.

‘fdiff’

Diferença de quadro. Os valores de pixel correspondentes são comparados e, se satisfizerem o scd_threshold, uma mudança de cena é detectada.

O método padrão é ‘fdiff’.

scd_threshold

Limiar de detecção de mudança de cena. O padrão é 10..

11.169 mix

Mescla vários fluxos de vídeo de entrada em um único fluxo de vídeo.

A seguir, uma descrição das opções aceitas.

inputs

O número de entradas. Se não for especificado, o padrão é 2.

weights

Especifica o peso de cada fluxo de vídeo de entrada como uma sequência. Cada peso é separado por espaço. Se o número de pesos for menor que o número de quadros, o último peso especificado será usado para todos os pesos restantes não definidos.

scale

Especifica a escala; se definida, é multiplicada pela soma de cada peso multiplicado pelos valores de pixel, dando o valor final do pixel de destino. Por padrão, a escala é ajustada automaticamente para a soma dos pesos.

planes

Define quais planos filtrar. O padrão é todos. O intervalo permitido é de 0 a 15.

duration

Especifica como o fim do fluxo é determinado.

‘longest’

A duração da entrada mais longa. (padrão)

‘shortest’

A duração da entrada mais curta.

‘first’

A duração da primeira entrada.

11.169.1 Comandos

Este filtro é compatível com os seguintes comandos:

weights scale planes

A sintaxe é a mesma da opção de mesmo nome.

11.170 monochrome

Converte o vídeo para tons de cinza usando um filtro de cor personalizado.

A seguir, uma descrição das opções aceitas.

cb

Define o ponto de croma azul. O intervalo permitido é de -1 a 1. O valor padrão é 0.

cr

Define o ponto de croma vermelho. O intervalo permitido é de -1 a 1. O valor padrão é 0.

size

Define o tamanho do filtro de cor. O intervalo permitido é de .1 a 10. O valor padrão é 1.

high

Define a intensidade dos realces. O intervalo permitido é de 0 a 1. O valor padrão é 0.

11.170.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.171 morpho

Este filtro permite aplicar as principais transformações morfológicas em escala de cinza, erode (erosão) e dilate (dilatação), usando estruturas arbitrárias definidas no segundo fluxo de entrada.

Ao contrário da implementação ingênua e muito mais lenta dos filtros de erosão e dilatação, quando a velocidade é fundamental, o filtro morpho deve ser usado no lugar deles.

A seguir, uma descrição das opções aceitas,

mode

Define a transformação morfológica a aplicar, pode ser:

‘erode’ ‘dilate’ ‘open’ ‘close’ ‘gradient’ ‘tophat’ ‘blackhat’

O padrão é erode.

planes

Define os planos a filtrar; por padrão, todos os planos exceto o alfa são filtrados.

structure

Define quais quadros de vídeo de estrutura serão processados a partir do segundo fluxo de entrada; pode ser first ou all. O padrão é all.

O filtro morpho também é compatível com as opções de framesync.

11.171.1 Comandos

Este filtro é compatível com os mesmos comandos que as opções.

11.172 mpdecimate

Descarta quadros que não diferem muito do quadro anterior, a fim de reduzir a taxa de quadros.

O principal uso deste filtro é para codificação com taxa de bits muito baixa (por exemplo, streaming por modem discado), mas em teoria também pode ser usado para corrigir filmes que passaram por um inverse telecine incorreto.

A seguir, uma descrição das opções aceitas.

max

Define o número máximo de quadros consecutivos que podem ser descartados (se positivo), ou o intervalo mínimo entre quadros descartados (se negativo). Se o valor for 0, o quadro é descartado independentemente do número de quadros descartados sequencialmente antes dele.

O valor padrão é 0.

keep

Define o número máximo de quadros semelhantes consecutivos a ignorar antes de começar a descartá-los. Se o valor for 0, o quadro é descartado independentemente do número de quadros semelhantes sequenciais anteriores.

O valor padrão é 0.

hi lo frac

Define os valores de limiar de descarte.

Os valores de hi e lo são para blocos de pixel 8x8 e representam diferenças reais de valor de pixel; assim, um limiar de 64 corresponde a 1 unidade de diferença para cada pixel, ou a mesma diferença distribuída de outra forma pelo bloco.

Um quadro é candidato a descarte se nenhum bloco 8x8 diferir mais que o limiar hi, e se no máximo frac blocos (sendo 1 a imagem inteira) diferirem mais que o limiar lo.

O valor padrão de hi é 6412, o valor padrão de lo é 645, e o valor padrão de frac é 0.33.

11.173 msad

Obtém o MSAD (Mean Sum of Absolute Differences, soma média das diferenças absolutas) entre dois vídeos de entrada.

Este filtro recebe dois vídeos de entrada.

Ambos os vídeos de entrada devem ter a mesma resolução e o mesmo pixel format para que este filtro funcione corretamente. Além disso, presume-se que as duas entradas tenham o mesmo número de quadros, que são comparados um a um.

O MSAD obtido por componente, além da média, do mínimo e do máximo, é exibido através do sistema de log.

O filtro armazena o MSAD calculado de cada quadro nos metadados do quadro.

Este filtro também é compatível com as opções de framesync.

No exemplo abaixo, o arquivo de entrada main.mpg em processamento é comparado com o arquivo de referência ref.mpg.

ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -

11.174 multiply

Multiplica os valores de pixel do primeiro fluxo de vídeo pelos valores de pixel do segundo fluxo de vídeo.

O filtro aceita as seguintes opções:

scale

Define a escala aplicada ao segundo fluxo de vídeo. O padrão é 1. O intervalo permitido é de 0 a 9.

offset

Define o deslocamento aplicado ao segundo fluxo de vídeo. O padrão é 0.5. O intervalo permitido é de -1 a 1.

planes

Especifica os planos do fluxo de vídeo de entrada que serão processados. Por padrão, todos os planos são processados.

11.174.1 Comandos

Este filtro aceita os mesmos comandos que as opções.

11.175 negate

Nega (inverte) o vídeo de entrada.

Aceita a seguinte opção:

components

Define os componentes a negar.

Os valores disponíveis para components são os seguintes:

‘y’ ‘u’ ‘v’ ‘a’ ‘r’ ‘g’ ‘b’ negate_alpha

Com o valor 1, nega o componente alfa, se presente. O valor padrão é 0.

11.175.1 Comandos

Este filtro aceita os mesmos comandos que as opções.

11.176 nlmeans

Remove o ruído dos quadros usando o algoritmo Non-Local Means.

Cada pixel é ajustado buscando outros pixels com contextos semelhantes. Essa semelhança de contexto é definida comparando os blocos vizinhos de tamanho pxp. Os blocos são buscados em uma área de rxr ao redor do pixel.

Observe que a área de busca define os centros dos blocos, o que significa que alguns blocos serão formados por pixels fora dessa área de busca.

O filtro aceita as seguintes opções.

s

Define a intensidade da redução de ruído. O padrão é 1.0. Deve estar no intervalo [1.0, 30.0].

p

Define o tamanho do bloco. O padrão é 7. Deve ser um número ímpar no intervalo [0, 99].

pc

Igual a p, mas para os planos de croma.

O valor padrão é 0 e significa automático.

r

Define o tamanho da área de busca. O padrão é 15. Deve ser um número ímpar no intervalo [0, 99].

rc

Igual a r, mas para os planos de croma.

O valor padrão é 0 e significa automático.

11.177 nnedi

Desentrelaça o vídeo usando interpolação orientada a bordas por rede neural.

Este filtro aceita as seguintes opções:

weights

Opção obrigatória; sem o arquivo binário, o filtro não funciona. Atualmente o arquivo pode ser encontrado aqui: https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin

deint

Define quais quadros desentrelaçar; por padrão é all. Pode ser all ou interlaced.

field

Define o modo de operação.

Pode ser um dos seguintes:

‘af’

Usa as flags de quadro, ambos os campos.

‘a’

Usa as flags de quadro, um único campo.

‘t’

Usa apenas o campo superior.

‘b’

Usa apenas o campo inferior.

‘tf’

Usa ambos os campos, com o superior primeiro.

‘bf’

Usa ambos os campos, com o inferior primeiro.

planes

Define quais planos processar; por padrão o filtro processa todos os quadros.

nsize

Define o tamanho da vizinhança local ao redor de cada pixel, usado pela rede neural preditora.

Pode ser um dos seguintes:

‘s8x6’ ‘s16x6’ ‘s32x6’ ‘s48x6’ ‘s8x4’ ‘s16x4’ ‘s32x4’ nns

Define o número de neurônios na rede neural preditora. Pode ser um dos seguintes:

‘n16’ ‘n32’ ‘n64’ ‘n128’ ‘n256’ qual

Controla o número de diferentes previsões da rede neural que são combinadas para calcular o valor de saída final. Pode ser fast, o padrão, ou slow.

etype

Define qual conjunto de pesos usar no preditor. Pode ser um dos seguintes:

‘a, abs’

pesos treinados para minimizar o erro absoluto

‘s, mse’

pesos treinados para minimizar o erro quadrático

pscrn

Controla se a rede neural de pré-seleção (prescreener) é usada para decidir quais pixels devem ser processados pela rede neural preditora e quais podem ser tratados por simples interpolação cúbica. O prescreener é treinado para saber se a interpolação cúbica será suficiente para um pixel ou se ele deve ser previsto pela rede preditora. A complexidade computacional da rede prescreener é muito menor que a da rede preditora. Como a maioria dos pixels pode ser tratada por interpolação cúbica, usar o prescreener geralmente resulta em processamento bem mais rápido. O prescreener é bastante preciso, de modo que a diferença entre usá-lo e não usá-lo quase sempre passa despercebida.

Pode ser um dos seguintes:

‘none’ ‘original’ ‘new’ ‘new2’ ‘new3’

O padrão é new.

11.177.1 Comandos

Este filtro aceita os mesmos comandos que as opções, exceto a opção weights.

11.178 noformat

Força o libavfilter a não usar nenhum dos pixel formats especificados para a entrada do próximo filtro.

Aceita os seguintes parâmetros:

pix_fmts

Uma lista de nomes de pixel formats separados por ’|’, como pix_fmts=yuv420p|monow|rgb24".

11.178.1 Exemplos

  • Força o libavfilter a usar um formato diferente de yuv420p para a entrada do filtro vflip:

    noformat=pix_fmts=yuv420p,vflip
    
  • Converte o vídeo de entrada para qualquer um dos formatos não incluídos na lista:

    noformat=yuv420p|yuv444p|yuv410p
    

11.179 noise

Adiciona ruído ao quadro de entrada de vídeo.

O filtro aceita as seguintes opções:

all_seed c0_seed c1_seed c2_seed c3_seed

Define a semente de ruído para um componente de pixel específico, ou para todos os componentes de pixel no caso de all_seed. O valor padrão é 123457.

all_strength, alls c0_strength, c0s c1_strength, c1s c2_strength, c2s c3_strength, c3s

Define a intensidade de ruído para um componente de pixel específico, ou para todos os componentes de pixel no caso de all_strength. O valor padrão é 0. O intervalo permitido é [0, 100].

all_flags, allf c0_flags, c0f c1_flags, c1f c2_flags, c2f c3_flags, c3f

Define as flags do componente de pixel, ou as flags de todos os componentes no caso de all_flags. Os valores disponíveis para as flags de componente são os seguintes:

‘a’

ruído temporal médio (mais suave)

‘p’

mistura ruído aleatório com um padrão (semi)regular

‘t’

ruído temporal (o padrão de ruído muda entre os quadros)

‘u’

ruído uniforme (gaussiano caso contrário)

11.179.1 Exemplos

Adiciona ruído temporal e uniforme ao vídeo de entrada:

noise=alls=20:allf=t+u

11.180 normalize

Normaliza o vídeo RGB (também chamado de alongamento de histograma, alongamento de contraste). Veja: https://en.wikipedia.org/wiki/Normalization_(image_processing)

Para cada canal de cada quadro, o filtro calcula o intervalo de entrada e o mapeia linearmente para o intervalo de saída especificado pelo usuário. Por padrão, o intervalo de saída é a faixa dinâmica completa, do preto puro ao branco puro.

A suavização temporal pode ser usada no intervalo de entrada para reduzir a cintilação (mudanças rápidas de brilho) causada quando pequenos objetos escuros ou claros entram ou saem da cena. Isso é semelhante à autoexposição (controle automático de ganho) de uma câmera de vídeo e, assim como em uma câmera de vídeo, pode causar um período de superexposição ou subexposição do vídeo.

Os canais R, G e B podem ser normalizados de forma independente, o que pode causar algum desvio de cor, ou vinculados como um único canal, o que evita esse desvio. A normalização vinculada preserva o matiz. A normalização independente não preserva, portanto pode ser usada para remover dominantes de cor. A normalização independente e a vinculada podem ser combinadas em qualquer proporção.

O filtro normalize aceita as seguintes opções:

blackpt whitept

Cores que definem o intervalo de saída. O valor mínimo de entrada é mapeado para blackpt. O valor máximo de entrada é mapeado para whitept. Os padrões são preto e branco, respectivamente. Especificar branco para blackpt e preto para whitept produz um vídeo normalizado com as cores invertidas. Tons de cinza podem ser usados para reduzir a faixa dinâmica (contraste). Especificar cores saturadas aqui pode criar efeitos interessantes.

smoothing

O número de quadros anteriores usados na suavização temporal. O intervalo de entrada de cada canal é suavizado usando uma média móvel sobre o quadro atual e os smoothing quadros anteriores. O padrão é 0 (sem suavização temporal).

independence

Controla a proporção entre a normalização de canal independente (com desvio de cor) e a vinculada (que preserva a cor). 0.0 é totalmente vinculada, 1.0 é totalmente independente. O padrão é 1.0 (totalmente independente).

strength

Intensidade geral do filtro. 1.0 é a intensidade máxima. 0.0 é uma operação nula bastante custosa. O padrão é 1.0 (intensidade máxima).

11.180.1 Comandos

Este filtro aceita os mesmos comandos que as opções, exceto a opção smoothing. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, ela é mantida no valor atual.

11.180.2 Exemplos

Alonga o contraste do vídeo para usar toda a faixa dinâmica, sem suavização temporal; pode cintilar dependendo do conteúdo de origem:

normalize=blackpt=black:whitept=white:smoothing=0

Como acima, mas com 50 quadros de suavização temporal; a cintilação deve ser reduzida, dependendo do conteúdo de origem:

normalize=blackpt=black:whitept=white:smoothing=50

Como acima, mas com normalização de canal vinculada que preserva o matiz:

normalize=blackpt=black:whitept=white:smoothing=50:independence=0

Como acima, mas com metade da intensidade:

normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5

Mapeia a cor de entrada mais escura para vermelho, a cor de entrada mais clara para ciano:

normalize=blackpt=red:whitept=cyan

11.181 null

Passa a fonte de vídeo inalterada para a saída.

11.182 ocio

Filtro da biblioteca OpenColorIO

Este filtro permite fazer o gerenciamento de cores usando a biblioteca OpenColorIO. Veja https://opencolorio.org/ para mais detalhes. Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libopencolorio.

Aceita as seguintes opções:

config

Por padrão, o filtro usa a configuração OCIO definida pela variável de ambiente OCIO, mas este parâmetro permite especificar explicitamente sua localização. Se estiver começando, você pode usar config=ocio://studio-config-v1.0.0_aces-v1.3_ocio-v2.1, que especifica um dos padrões incorporados.

input

Define o espaço de cor de entrada.

output

Define o espaço de cor de saída.

display

Define o espaço de cor da tela (display), usado em combinação com view.

view

Define o espaço de cor da visualização (view), usado em combinação com display.

inverse

Quando usado em combinação com display e view, isso inverte a transformação, indo assim de um display/view para o "espaço de cor de entrada".

filetransform

Permite especificar uma transformação de arquivo externa (file-transform) a ser usada em vez do arquivo de configuração OCIO. Isso é útil para aplicar uma única transformação sem precisar de um arquivo de configuração OCIO completo.

format

Permite especificar o pix_fmt de saída do filtro OCIO. Este deve ser um espaço de cor RGB, portanto na prática você fica limitado a rgb24, rgba, rgb48, rgba48, gbrp10, gbrp12, gbrpf32le, gbrapf32le; para a maioria das codificações recomendamos rgb48

context_params

Permite especificar parâmetros de contexto adicionais para o filtro OCIO. É uma lista de pares key=value separados por dois-pontos.

11.182.1 Exemplos

Mapeia de ACEScg para ACEScct; isso pressupõe que o arquivo OCIO esteja definido pela variável de ambiente OCIO.

input=ACEScg:output=ACEScct:format=rgb48

Mapeia de ACEScg para uma tela sRGB usando a transformação de visualização "ACES 1.0 - SDR Video"; isso pressupõe que o arquivo OCIO esteja definido pela variável de ambiente OCIO. Observe que será necessário colocar o argumento entre aspas para garantir que os espaços sejam interpretados corretamente.

input=ACEScg:display=sRGB - Display:view=ACES 1.0 - SDR Video:format=rgb48

Como acima, mas usando o arquivo OCIO studio-config-v1.0.0_aces-v1.3_ocio-v2.1_ns.ocio em vez da variável de ambiente OCIO.

config=studio-config-v1.0.0_aces-v1.3_ocio-v2.1_ns.ocio:input=ACEScg:display=sRGB - Display:view=ACES 1.0 - SDR Video:format=rgb48

Se você estiver convertendo para YCrCb, ainda assim precisará definir a matriz de cores para a conversão. Este é um bom exemplo de como combinar as duas coisas.

ffmpeg -y -i SOURCEFRAMES.%05d.exr -c:v libx265 -vf "ocio=input=ACEScg:output=ACEScct:format=rgb48,scale=in_color_matrix=bt709:out_color_matrix=bt709,format=yuv444p10"  OUTPUTFILE.mov

11.183 ocr

Reconhecimento óptico de caracteres

Este filtro usa o Tesseract para reconhecimento óptico de caracteres. Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libtesseract.

Aceita as seguintes opções:

datapath

Define o datapath para os dados do tesseract. Por padrão usa o que foi definido na instalação.

language

Define o idioma; o padrão é "eng".

whitelist

Define a lista de caracteres permitidos.

blacklist

Define a lista de caracteres bloqueados.

O filtro exporta o texto reconhecido como metadado de quadro lavfi.ocr.text. O filtro exporta a confiança das palavras reconhecidas como metadado de quadro lavfi.ocr.confidence.

11.184 ocv

Aplica uma transformação de vídeo usando a libopencv.

Para habilitar este filtro, instale a biblioteca libopencv e os cabeçalhos, e configure o FFmpeg com --enable-libopencv.

Aceita os seguintes parâmetros:

filter_name

O nome do filtro libopencv a ser aplicado.

filter_params

Os parâmetros a passar para o filtro libopencv. Se não especificados, os valores padrão são assumidos.

Consulte a documentação oficial da libopencv para obter informações mais precisas: http://docs.opencv.org/master/modules/imgproc/doc/filtering.html

Vários filtros libopencv são compatíveis; veja as subseções a seguir.

11.184.1 dilate

Dilata uma imagem usando um elemento estruturante específico. Corresponde à função cvDilate da libopencv.

Aceita os parâmetros: struct_el|nb_iterations.

struct_el representa um elemento estruturante e tem a sintaxe: colsxrows+anchor_xxanchor_y/shape

cols e rows representam o número de colunas e linhas do elemento estruturante, anchor_x e anchor_y o ponto de ancoragem, e shape a forma do elemento estruturante. shape deve ser "rect", "cross", "ellipse" ou "custom".

Se o valor de shape for "custom", ele deve ser seguido por uma string no formato "=filename". Presume-se que o arquivo com o nome filename representa uma imagem binária, com cada caractere imprimível correspondendo a um pixel claro. Quando uma forma custom é usada, cols e rows são ignorados; em vez disso, usa-se o número de colunas e linhas do arquivo lido.

O valor padrão de struct_el é "3x3+0x0/rect".

nb_iterations especifica o número de vezes que a transformação é aplicada à imagem, e o padrão é 1.

Alguns exemplos:

# Usa os valores padrão
ocv=dilate

# Dilata usando um elemento estruturante em cruz 5x5, iterando duas vezes
ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2

# Lê a forma a partir do arquivo diamond.shape, iterando duas vezes.
# O arquivo diamond.shape pode conter um padrão de caracteres como este
#   *
#  ***
# *****
#  ***
#   *
# As colunas e linhas especificadas são ignoradas,
# mas o ponto de ancoragem não é
ocv=dilate:0x0+2x2/custom=diamond.shape|2

11.184.2 erode

Erode uma imagem usando um elemento estruturante específico. Corresponde à função cvErode da libopencv.

Aceita os parâmetros: struct_el:nb_iterations, com a mesma sintaxe e semântica do filtro dilate.

11.184.3 smooth

Suaviza o vídeo de entrada.

O filtro recebe os seguintes parâmetros: type|param1|param2|param3|param4.

type é o tipo de filtro de suavização a aplicar, e deve ser um dos seguintes valores: "blur", "blur_no_scale", "median", "gaussian" ou "bilateral". O valor padrão é "gaussian".

O significado de param1, param2, param3 e param4 depende do type de smooth. param1 e param2 aceitam valores inteiros positivos ou 0. param3 e param4 aceitam valores em ponto flutuante.

O valor padrão de param1 é 3. O valor padrão dos demais parâmetros é 0.

Esses parâmetros correspondem aos parâmetros atribuídos à função cvSmooth da libopencv.

11.185 oscilloscope

Osciloscópio de vídeo 2D.

Útil para medir impulso espacial, respostas ao degrau, atrasos de croma etc.

Aceita os seguintes parâmetros:

x

Define a posição x do centro do osciloscópio.

y

Define a posição y do centro do osciloscópio.

s

Define o tamanho do osciloscópio, relativo à diagonal do quadro.

t

Define a inclinação/rotação do osciloscópio.

o

Define a opacidade do traço.

tx

Define a posição x do centro do traço.

ty

Define a posição y do centro do traço.

tw

Define a largura do traço, relativa à largura do quadro.

th

Define a altura do traço, relativa à altura do quadro.

c

Define quais componentes traçar. Por padrão traça os três primeiros componentes.

g

Desenha a grade do traço. Habilitado por padrão.

st

Desenha algumas estatísticas. Habilitado por padrão.

sc

Desenha o osciloscópio. Habilitado por padrão.

11.185.1 Comandos

Este filtro aceita os mesmos comandos que as opções. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, ela é mantida no valor atual.

11.185.2 Exemplos

  • Inspeciona a primeira linha completa do quadro de vídeo.

    oscilloscope=x=0.5:y=0:s=1
    
  • Inspeciona a última linha completa do quadro de vídeo.

    oscilloscope=x=0.5:y=1:s=1
    
  • Inspeciona a 5ª linha completa de um quadro de vídeo de altura 1080.

    oscilloscope=x=0.5:y=5/1080:s=1
    
  • Inspeciona a última coluna completa do quadro de vídeo.

    oscilloscope=x=1:y=0.5:s=1:t=1
    

11.186 overlay

Sobrepõe um vídeo sobre outro.

Recebe duas entradas e tem uma saída. A primeira entrada é o vídeo "principal" (main), sobre o qual a segunda entrada é sobreposta.

Aceita os seguintes parâmetros:

A seguir, uma descrição das opções aceitas.

x y

Define a expressão para as coordenadas x e y do vídeo sobreposto em relação ao vídeo principal. O valor padrão é "0" para ambas as expressões. Caso a expressão seja inválida, ela é definida como um valor enorme (o que significa que a sobreposição não será exibida dentro da área visível da saída).

eof_action

Consulte framesync.

eval

Define quando as expressões de x e y são avaliadas.

Aceita os seguintes valores:

‘init’

avalia as expressões apenas uma vez, durante a inicialização do filtro ou quando um comando é processado

‘frame’

avalia as expressões para cada quadro recebido

O valor padrão é ‘frame’.

shortest

Consulte framesync.

format

Define o formato do vídeo de saída.

Aceita os seguintes valores:

‘yuv420’

força saída planar YUV 4:2:0 de 8 bits

‘yuv420p10’

força saída planar YUV 4:2:0 de 10 bits

‘yuv422’

força saída planar YUV 4:2:2 de 8 bits

‘yuv422p10’

força saída planar YUV 4:2:2 de 10 bits

‘yuv444’

força saída planar YUV 4:4:4 de 8 bits

‘yuv444p10’

força saída planar YUV 4:4:4 de 10 bits

‘rgb’

força saída empacotada RGB de 8 bits

‘gbrp’

força saída planar RGB de 8 bits

‘auto’

escolhe o formato automaticamente

O valor padrão é ‘yuv420’.

repeatlast

Consulte framesync.

alpha

Define o formato do alfa do vídeo sobreposto; pode ser straight ou premultiplied, ou auto para escolher o modo alfa automaticamente. O padrão é auto.

As expressões x e y podem conter os seguintes parâmetros.

main_w, W main_h, H

A largura e a altura da entrada principal.

overlay_w, w overlay_h, h

A largura e a altura da entrada sobreposta.

x y

Os valores calculados de x e y. São avaliados a cada novo quadro.

hsub vsub

os valores de subamostragem de croma horizontal e vertical do formato de saída. Por exemplo, para o pixel format "yuv422p" hsub é 2 e vsub é 1.

n

o número do quadro de entrada, começando em 0

pos

a posição do quadro de entrada dentro do arquivo, NAN se desconhecida; obsoleto, não use

t

A marca de tempo, expressa em segundos. É NAN se a marca de tempo de entrada for desconhecida.

Este filtro também aceita as opções de framesync.

Observe que as variáveis n e t só estão disponíveis quando a avaliação é feita por quadro , e serão avaliadas como NAN quando eval estiver definido como ‘init’.

Esteja ciente de que os quadros são retirados de cada vídeo de entrada em ordem de marca de tempo; portanto, se suas marcas de tempo iniciais forem diferentes, é uma boa ideia passar as duas entradas por um filtro setpts=PTS-STARTPTS para que comecem na mesma marca de tempo zero, como faz o exemplo do filtro movie.

Você pode encadear mais sobreposições, mas deve testar a eficiência dessa abordagem.

11.186.1 Comandos

Este filtro aceita os seguintes comandos:

x y

Modifica o x e o y da entrada sobreposta. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, ela é mantida no valor atual.

11.186.2 Exemplos

  • Desenha a sobreposição a 10 pixels do canto inferior direito do vídeo principal:
    overlay=main_w-overlay_w-10:main_h-overlay_h-10
    

Usando opções nomeadas, o exemplo acima fica assim:

    overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
  • Insere um logotipo PNG transparente no canto inferior esquerdo da entrada, usando a ferramenta ffmpeg com a opção -filter_complex:

    ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
    
  • Insere 2 logotipos PNG transparentes diferentes (o segundo logotipo no canto inferior direito) usando a ferramenta ffmpeg:

    ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
    
  • Adiciona uma camada de cor transparente sobre o vídeo principal; WxH deve especificar o tamanho da entrada principal do filtro overlay:

    color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
    
  • Reproduz um vídeo original e uma versão filtrada (aqui com o filtro deshake) lado a lado usando a ferramenta ffplay:

    ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
    

O comando acima é o mesmo que:

    ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
  • Cria uma sobreposição deslizante que aparece da esquerda para a parte superior direita da tela a partir do instante 2:

    overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
    
  • Compõe a saída colocando dois vídeos de entrada lado a lado:

    ffmpeg -i left.avi -i right.avi -filter_complex "
    nullsrc=size=200x100 [background];
    [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
    [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
    [background][left]       overlay=shortest=1       [background+left];
    [background+left][right] overlay=shortest=1:x=100 [left+right]
    "
    
  • Mascara os segundos 10 a 20 de um vídeo aplicando o filtro delogo a uma seção

    ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
    -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
    masked.avi
    
  • Encadeia várias sobreposições em cascata:

    nullsrc=s=200x200 [bg];
    testsrc=s=100x100, split=4 [in0][in1][in2][in3];
    [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
    [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
    [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
    [in3] null,       [mid2] overlay=100:100 [out0]
    

11.187 owdenoise

Aplica um removedor de ruído por wavelet sobrecompleta (Overcomplete Wavelet).

O filtro aceita as seguintes opções:

depth

Define a profundidade.

Valores de depth maiores eliminam com mais eficácia o ruído de componentes de frequência mais baixa, porém tornam a filtragem mais lenta.

Deve ser um inteiro no intervalo 8-16, o padrão é 8.

luma_strength, ls

Define a intensidade de luma.

Deve ser um valor de precisão dupla no intervalo 0-1000, o padrão é 1.0.

chroma_strength, cs

Define a intensidade de croma.

Deve ser um valor de precisão dupla no intervalo 0-1000, o padrão é 1.0.

11.188 pad

Adiciona preenchimento à imagem de entrada e posiciona a entrada original nas coordenadas x, y fornecidas.

Aceita os seguintes parâmetros:

width, w height, h

Especifica uma expressão para o tamanho da imagem de saída já com o preenchimento adicionado. Se o valor de width ou height for 0, o tamanho de entrada correspondente é usado para a saída.

A expressão de width pode fazer referência ao valor definido pela expressão de height, e vice-versa.

O valor padrão de width e height é 0.

x y

Especifica os deslocamentos para posicionar a imagem de entrada dentro da área de preenchimento, em relação à borda superior/esquerda da imagem de saída.

A expressão de x pode fazer referência ao valor definido pela expressão de y, e vice-versa.

O valor padrão de x e y é 0.

Se x ou y forem avaliados como um número negativo, eles serão alterados para que a imagem de entrada fique centralizada na área de preenchimento.

color

Especifica a cor da área de preenchimento. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils.

O valor padrão de color é "black".

eval

Especifica quando avaliar as expressões de width, height, x e y.

Aceita os seguintes valores:

‘init’

Avalia as expressões apenas uma vez, durante a inicialização do filtro ou quando um comando é processado.

‘frame’

Avalia as expressões para cada quadro recebido.

O valor padrão é ‘init’.

aspect

Aplica o preenchimento por proporção de aspecto em vez de por resolução.

Os valores das opções width, height, x e y são expressões que contêm as seguintes constantes:

in_w in_h

A largura e a altura do vídeo de entrada.

iw ih

São o mesmo que in_w e in_h.

out_w out_h

A largura e a altura de saída (o tamanho da área de preenchimento), conforme especificado pelas expressões de width e height.

ow oh

São o mesmo que out_w e out_h.

x y

Os deslocamentos x e y conforme especificado pelas expressões de x e y, ou NAN se ainda não especificados.

a

o mesmo que iw / ih

sar

proporção de aspecto da amostra de entrada

dar

proporção de aspecto de exibição da entrada, é o mesmo que (iw / ih) * sar

hsub vsub

Os valores de subamostragem de croma horizontal e vertical. Por exemplo, para o pixel format "yuv422p", hsub é 2 e vsub é 1.

11.188.1 Exemplos

  • Adiciona preenchimento com a cor "violet" ao vídeo de entrada. O tamanho do vídeo de saída é 640x480, e o canto superior esquerdo do vídeo de entrada é posicionado na coluna 0, linha 40
    pad=640:480:0:40:violet
    

O exemplo acima é equivalente ao seguinte comando:

    pad=width=640:height=480:x=0:y=40:color=violet
  • Preenche a entrada para obter uma saída com dimensões aumentadas em 3/2, e coloca o vídeo de entrada no centro da área de preenchimento:

    pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
    
  • Preenche a entrada para obter uma saída quadrada com tamanho igual ao maior valor entre a largura e a altura de entrada, e coloca o vídeo de entrada no centro da área de preenchimento:

    pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
    
  • Preenche a entrada para obter uma proporção w/h final de 16:9:

    pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
    
  • No caso de vídeo anamórfico, para definir corretamente o aspecto de exibição de saída, é necessário usar sar na expressão, de acordo com a relação:

    (ih * X / ih) * sar = output_dar
    X = output_dar / sar
    

Assim, o exemplo anterior precisa ser modificado para:

    pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
  • Dobra o tamanho de saída e coloca o vídeo de entrada no canto inferior direito da área de preenchimento de saída:
    pad="2*iw:2*ih:ow-iw:oh-ih"
    

11.189 palettegen

Gera uma paleta única para um fluxo de vídeo inteiro.

Aceita as seguintes opções:

max_colors

Define o número máximo de cores a quantizar na paleta. Observação: a paleta ainda conterá 256 cores; as entradas não utilizadas da paleta ficarão pretas.

reserve_transparent

Cria uma paleta de no máximo 255 cores e reserva a última para a transparência. Reservar a cor de transparência é útil para a otimização de GIF. Se não for definida, o número máximo de cores na paleta será 256. Provavelmente você vai querer desativar esta opção para uma imagem isolada. Definida por padrão.

transparency_color

Define a cor que será usada como plano de fundo para a transparência.

stats_mode

Define o modo de estatísticas.

Aceita os seguintes valores:

‘full’

Calcula histogramas do quadro inteiro.

‘diff’

Calcula histogramas apenas para a parte que difere do quadro anterior. Isso pode ser relevante para dar mais importância à parte em movimento da entrada quando o fundo é estático.

‘single’

Calcula um novo histograma para cada quadro.

O valor padrão é full.

O filtro também exporta o metadado de quadro lavfi.color_quant_ratio (nb_color_in / nb_color_out), que pode ser usado para avaliar o grau de quantização de cores da paleta. Essa informação também fica visível no nível de log info.

11.189.1 Exemplos

  • Gera uma paleta representativa de um determinado vídeo usando o ffmpeg:
    ffmpeg -i input.mkv -vf palettegen palette.png
    

11.190 paletteuse

Usa uma paleta para reduzir a amostragem de um fluxo de vídeo de entrada.

O filtro recebe duas entradas: um fluxo de vídeo e uma paleta. A paleta deve ser uma imagem de 256 pixels.

Aceita as seguintes opções:

dither

Seleciona o modo de dithering. Os algoritmos disponíveis são:

‘bayer’

Dithering bayer 8x8 ordenado (determinístico)

‘heckbert’

Dithering conforme definido por Paul Heckbert em 1982 (difusão de erro simples). Observação: esse dithering às vezes é considerado "errado" e é incluído apenas como referência.

‘floyd_steinberg’

Dithering de Floyd e Steingberg (difusão de erro)

‘sierra2’

Dithering v2 de Frankie Sierra (difusão de erro)

‘sierra2_4a’

Dithering v2 "Lite" de Frankie Sierra (difusão de erro)

‘sierra3’

Dithering v3 de Frankie Sierra (difusão de erro)

‘burkes’

Dithering de Burkes (difusão de erro)

‘atkinson’

Dithering de Atkinson, por Bill Atkinson, da Apple Computer (difusão de erro)

‘none’

Desativa o dithering.

O padrão é sierra2_4a.

bayer_scale

Quando o dithering bayer é selecionado, esta opção define a escala do padrão (o quanto o padrão em grade cruzada fica visível). Um valor baixo significa um padrão mais visível com menos banding, e um valor mais alto significa um padrão menos visível ao custo de mais banding.

A opção deve ser um valor inteiro no intervalo [0,5]. O padrão é 2.

diff_mode

Se definida, define a zona a processar

‘rectangle’

Somente o retângulo em alteração será reprocessado. Isso é semelhante ao mecanismo de compressão por recorte/deslocamento do GIF. Esta opção pode ser útil para velocidade quando apenas parte da imagem está mudando, e tem casos de uso como limitar o escopo do dithering por difusão de erro ao retângulo que envolve a cena em movimento (o que leva a uma saída mais determinística quando a cena não muda muito e, como resultado, menos ruído de movimento e melhor compressão de GIF).

O padrão é none.

new

Usa uma nova paleta para cada quadro de saída.

alpha_threshold

Define o limiar alfa para transparência. Valores de alfa acima deste limiar serão tratados como totalmente opacos, e valores abaixo deste limiar serão tratados como totalmente transparentes.

A opção deve ser um valor inteiro no intervalo [0,255]. O padrão é 128.

11.190.1 Exemplos

  • Usa uma paleta (gerada, por exemplo, com palettegen) para codificar um GIF usando o ffmpeg:
    ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
    

11.191 perspective

Corrige a perspectiva de vídeo que não foi gravado perpendicularmente à tela.

Segue uma descrição dos parâmetros aceitos.

x0 y0 x1 y1 x2 y2 x3 y3

Define a expressão de coordenadas para os cantos superior esquerdo, superior direito, inferior esquerdo e inferior direito. Os valores padrão são 0:0:W:0:0:H:W:H, com os quais a perspectiva permanece inalterada. Se a opção sense estiver definida como source, os pontos especificados são enviados para os cantos do destino. Se a opção sense estiver definida como destination, os cantos da origem são enviados para as coordenadas especificadas.

As expressões podem usar as seguintes variáveis:

W H

a largura e a altura do quadro de vídeo.

in

Contagem de quadros de entrada.

on

Contagem de quadros de saída.

interpolation

Define a interpolação para a correção de perspectiva.

Aceita os seguintes valores:

‘linear’ ‘cubic’

O valor padrão é ‘linear’.

sense

Define a interpretação das opções de coordenadas.

Aceita os seguintes valores:

‘0, source’

Envia o ponto na origem especificado pelas coordenadas fornecidas para os cantos do destino.

‘1, destination’

Envia os cantos da origem para o ponto no destino especificado pelas coordenadas fornecidas.

O valor padrão é ‘source’.

eval

Define quando as expressões das coordenadas x0,y0,...x3,y3 são avaliadas.

Aceita os seguintes valores:

‘init’

avalia as expressões apenas uma vez, durante a inicialização do filtro ou quando um comando é processado

‘frame’

avalia as expressões para cada quadro recebido

O valor padrão é ‘init’.

11.192 phase

Atrasa o vídeo entrelaçado por um tempo de campo, de modo que a ordem dos campos seja alterada.

O uso pretendido é corrigir filmes PAL que foram capturados com a ordem de campo oposta à da transferência de filme para vídeo.

Segue uma descrição dos parâmetros aceitos.

mode

Define o modo de fase.

Aceita os seguintes valores:

‘t’

Ordem de captura dos campos top-first, transferência bottom-first. O filtro atrasa o campo inferior.

‘b’

Ordem de captura dos campos bottom-first, transferência top-first. O filtro atrasa o campo superior.

‘p’

Captura e transferência com a mesma ordem de campo. Este modo existe apenas para a documentação das outras opções fazerem referência a ele; mas, se você realmente selecioná-lo, o filtro fielmente não fará nada.

‘a’

Ordem de captura dos campos determinada automaticamente pelas flags de campo, transferência oposta. O filtro seleciona entre os modos ‘t’ e ‘b’ quadro a quadro usando as flags de campo. Se nenhuma informação de campo estiver disponível, isso funciona como ‘u’.

‘u’

Captura desconhecida ou variável, transferência oposta. O filtro seleciona entre ‘t’ e ‘b’ quadro a quadro, analisando as imagens e escolhendo a alternativa que produz a melhor correspondência entre os campos.

‘T’

Captura top-first, transferência desconhecida ou variável. O filtro seleciona entre ‘t’ e ‘p’ usando análise de imagem.

‘B’

Captura bottom-first, transferência desconhecida ou variável. O filtro seleciona entre ‘b’ e ‘p’ usando análise de imagem.

‘A’

Captura determinada pelas flags de campo, transferência desconhecida ou variável. O filtro seleciona entre ‘t’, ‘b’ e ‘p’ usando as flags de campo e análise de imagem. Se nenhuma informação de campo estiver disponível, isso funciona como ‘U’. Este é o modo padrão.

‘U’

Tanto a captura quanto a transferência são desconhecidas ou variáveis. O filtro seleciona entre ‘t’, ‘b’ e ‘p’ usando apenas análise de imagem.

11.192.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.193 photosensitivity

Reduz diversos flashes no vídeo, de modo a ajudar usuários com epilepsia.

Aceita as seguintes opções:

frames, f

Define quantos quadros usar na filtragem. O padrão é 30.

threshold, t

Define o fator de limiar de detecção. O padrão é 1. Quanto menor, mais rígido.

skip

Define quantos pixels pular ao amostrar os quadros. O padrão é 1. O intervalo permitido é de 1 a 1024.

bypass

Deixa os quadros inalterados. Desativado por padrão.

11.194 pixdesctest

Filtro de teste do descritor de pixel format, útil principalmente para testes internos. O vídeo de saída deve ser igual ao vídeo de entrada.

Por exemplo:

format=monow, pixdesctest

pode ser usado para testar a definição do descritor de pixel format monowhite.

11.195 pixelize

Aplica pixelização ao fluxo de vídeo.

O filtro aceita as seguintes opções:

width, w height, h

Define as dimensões do bloco a ser usado na pixelização. O valor padrão é 16.

mode, m

Define o modo de pixelização usado.

Os valores possíveis são:

‘avg’ ‘min’ ‘max’

O valor padrão é avg.

planes, p

Define quais planos filtrar. Por padrão, todos os planos são filtrados.

11.195.1 Comandos

Este filtro é compatível com todas as opções como comandos.

11.196 pixscope

Exibe os valores de amostra dos canais de cor. Útil principalmente para verificar cor e níveis. A resolução mínima compatível é 640x480.

Os filtros aceitam as seguintes opções:

x

Define a posição X do escopo, deslocamento relativo no eixo X.

y

Define a posição Y do escopo, deslocamento relativo no eixo Y.

w

Define a largura do escopo.

h

Define a altura do escopo.

o

Define a opacidade da janela. Esta janela também contém estatísticas sobre a área de pixels.

wx

Define a posição X da janela, deslocamento relativo no eixo X.

wy

Define a posição Y da janela, deslocamento relativo no eixo Y.

11.196.1 Comandos

Este filtro é compatível com os mesmos comandos que as opções.

11.197 pp7

Aplica o filtro de pós-processamento 7. É uma variante do filtro spp, semelhante a spp = 6 com DCT de 7 pontos, em que apenas a amostra central é usada após a IDCT.

O filtro aceita as seguintes opções:

qp

Força um parâmetro de quantização constante. Aceita um número inteiro no intervalo de 0 a 63. Se não for definida, o filtro usa o QP do fluxo de vídeo (se disponível).

mode

Define o modo de limiarização. Os modos disponíveis são:

‘hard’

Define a limiarização rígida (hard).

‘soft’

Define a limiarização suave (soft) (melhor efeito de redução de ringing, mas provavelmente mais borrado).

‘medium’

Define a limiarização média (medium) (bons resultados, padrão).

11.198 premultiply

Aplica o efeito de pré-multiplicação alfa (premultiply) ao fluxo de vídeo de entrada, usando o primeiro plano do segundo fluxo como alfa.

Ambos os fluxos devem ter as mesmas dimensões e o mesmo pixel format.

O filtro aceita a seguinte opção:

planes

Define quais planos serão processados; os planos não processados são copiados. Com o valor padrão 0xf, todos os planos são processados.

inplace

Não exige uma segunda entrada para o processamento; em vez disso, usa o plano alfa do próprio fluxo de entrada.

11.199 premultiply_dynamic

Pré-multiplica ou desfaz a pré-multiplicação do fluxo de vídeo de entrada dinamicamente, conforme necessário, para atender aos requisitos do grafo de filtros a jusante. Isso equivale, de forma aproximada, a premultiply:inplace=yes ou unpremultiply:inplace=yes, ou então a nenhuma operação.

O filtro aceita a seguinte opção:

planes

Define quais planos serão processados; os planos não processados são copiados. Com o valor padrão 0xf, todos os planos são processados.

11.200 prewitt

Aplica o operador de Prewitt ao fluxo de vídeo de entrada.

O filtro aceita a seguinte opção:

planes

Define quais planos serão processados; os planos não processados são copiados. Com o valor padrão 0xf, todos os planos são processados.

scale

Define o valor pelo qual o resultado filtrado será multiplicado.

delta

Define o valor que será somado ao resultado filtrado.

11.200.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.201 pseudocolor

Altera as cores dos quadros do vídeo com pseudocores.

Este filtro aceita as seguintes opções:

c0

define a expressão do primeiro componente do pixel

c1

define a expressão do segundo componente do pixel

c2

define a expressão do terceiro componente do pixel

c3

define a expressão do quarto componente do pixel, correspondente ao componente alfa

index, i

define o componente a usar como base para alterar as cores

preset, p

Escolhe uma das LUTs internas. Por padrão está definido como none.

LUTs disponíveis:

‘magma’ ‘inferno’ ‘plasma’ ‘viridis’ ‘turbo’ ‘cividis’ ‘range1’ ‘range2’ ‘shadows’ ‘highlights’ ‘solar’ ‘nominal’ ‘preferred’ ‘total’ ‘spectral’ ‘cool’ ‘heat’ ‘fiery’ ‘blues’ ‘green’ ‘helix’ opacity

Define a opacidade das cores de saída. O intervalo permitido é de 0 a 1. O valor padrão é definido como 1.

Cada uma das opções de expressão especifica a expressão usada para calcular a tabela de consulta (lookup table) para os valores do componente de pixel correspondente.

As expressões podem conter as seguintes constantes e funções:

w h

A largura e a altura de entrada.

val

O valor de entrada do componente de pixel.

ymin, umin, vmin, amin

O valor mínimo permitido para o componente.

ymax, umax, vmax, amax

O valor máximo permitido para o componente.

Todas as expressões têm como padrão "val".

11.201.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.201.2 Exemplos

  • Transforma valores de luma muito altos em um gradiente:
    pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
    

11.202 psnr

Obtém a PSNR (Peak Signal to Noise Ratio, relação sinal-ruído de pico) média, máxima e mínima entre dois vídeos de entrada.

Este filtro recebe duas entradas de vídeo; a primeira entrada é considerada a fonte "principal" e é repassada sem alterações para a saída. A segunda entrada é usada como vídeo de "referência" para o cálculo da PSNR.

Para que este filtro funcione corretamente, ambas as entradas de vídeo devem ter a mesma resolução e o mesmo pixel format. Além disso, presume-se que ambas as entradas tenham o mesmo número de quadros, que são comparados um a um.

A PSNR média obtida é impressa pelo sistema de log.

O filtro armazena o MSE (erro quadrático médio) acumulado de cada quadro; ao final do processamento, ele é calculado como média entre todos os quadros de forma equitativa, e a seguinte fórmula é aplicada para obter a PSNR:

PSNR = 10*log10(MAX^2/MSE)

Onde MAX é a média dos valores máximos de cada componente da imagem.

Segue a descrição dos parâmetros aceitos.

stats_file, f

Se especificado, o filtro usa o arquivo indicado para salvar a PSNR de cada quadro individual. Quando o nome do arquivo é igual a "-", os dados são enviados para a saída padrão.

stats_version

Especifica qual versão do formato do arquivo de estatísticas usar. Os detalhes de cada formato estão descritos abaixo. O valor padrão é 1.

output_max

Determina se o valor máximo é gravado no log de estatísticas. O valor padrão é 0. Requer stats_version >= 2. Se esta opção estiver definida e stats_version < 2, o filtro retorna um erro.

Este filtro também é compatível com as opções de framesync.

O arquivo gerado quando stats_file é selecionado contém uma sequência de pares chave/valor no formato key:value para cada par de quadros comparado.

Se for especificado um stats_version maior que 1, uma linha de cabeçalho precede a lista de estatísticas por par de quadros, com pares chave-valor que seguem o formato de quadro, com os seguintes parâmetros:

psnr_log_version

A versão do formato do arquivo de log. Corresponde a stats_version.

fields

Uma lista separada por vírgulas dos parâmetros por par de quadros incluídos no log.

Segue a descrição de cada parâmetro por par de quadros exibido:

n

número sequencial do quadro de entrada, começando em 1

mse_avg

Erro quadrático médio, diferença média pixel a pixel entre os quadros comparados, calculada em média sobre todos os componentes da imagem.

mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a

Erro quadrático médio, diferença média pixel a pixel entre os quadros comparados para o componente especificado pelo sufixo.

psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a

Relação sinal-ruído de pico dos quadros comparados para o componente especificado pelo sufixo.

max_avg, max_y, max_u, max_v

Valor máximo permitido para cada canal, e a média entre todos os canais.

11.202.1 Exemplos

  • Por exemplo:
    movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
    [main][ref] psnr="stats_file=stats.log" [out]
    

Neste exemplo, o arquivo de entrada processado é comparado com o arquivo de referência ref_movie.mpg. A PSNR de cada quadro individual é armazenada em stats.log.

  • Outro exemplo com containers diferentes:
    ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
    

11.203 pullup

Filtro de reversão de pulldown (telecine inverso), capaz de lidar com conteúdo misto de telecine rígido, progressivo a 24000/1001 fps e progressivo a 30000/1001 fps.

O filtro pullup é projetado para aproveitar o contexto futuro na hora de tomar suas decisões. Este filtro não tem estado, no sentido de que não trava em um padrão para segui-lo; em vez disso, ele olha adiante para os campos seguintes a fim de identificar correspondências e reconstruir quadros progressivos.

Para produzir conteúdo com uma taxa de quadros uniforme, insira o filtro fps depois do pullup; use fps=24000/1001 se a taxa de quadros de entrada for 29.97fps, fps=24 para 30fps e para a (rara) entrada telecinada de 25fps.

O filtro aceita as seguintes opções:

jl jr jt jb

Estas opções definem a quantidade de "lixo" a ignorar, respectivamente, à esquerda, à direita, no topo e na base da imagem. Esquerda e direita são medidas em unidades de 8 pixels, enquanto topo e base são medidas em unidades de 2 linhas. O padrão é 8 pixels em cada lado.

sb

Define as quebras rígidas. Definir esta opção como 1 reduz as chances de o filtro gerar ocasionalmente um quadro incompatível, mas também pode fazer com que um número excessivo de quadros seja descartado durante sequências de muito movimento. Por outro lado, definir como -1 faz o filtro combinar campos com mais facilidade. Isso pode ajudar no processamento de vídeo em que há um leve desfoque entre os campos, mas também pode fazer com que haja quadros entrelaçados na saída. O valor padrão é 0.

mp

Define o plano métrico a usar. Aceita os seguintes valores:

‘l’

Usa o plano de luma.

‘u’

Usa o plano de croma azul.

‘v’

Usa o plano de croma vermelho.

Esta opção pode ser definida para usar um plano de croma em vez do plano de luma padrão nos cálculos do filtro. Isso pode melhorar a precisão em material de origem muito limpo, mas é mais provável que reduza a precisão, especialmente se houver ruído de croma (efeito arco-íris) ou algum vídeo em tons de cinza. O principal objetivo de definir mp para um plano de croma é reduzir a carga de CPU e tornar o pullup utilizável em tempo real em máquinas lentas.

Para obter os melhores resultados (sem quadros duplicados no arquivo de saída), é necessário alterar a taxa de quadros de saída. Por exemplo, para fazer o telecine inverso de uma entrada NTSC:

ffmpeg -i input -vf pullup -r 24000/1001 ...

11.204 qp

Altera os parâmetros de quantização de vídeo (QP).

O filtro aceita a seguinte opção:

qp

Define a expressão para o parâmetro de quantização.

A expressão é avaliada pela API eval e pode conter, entre outras, as seguintes constantes:

known

1 se o índice não for 129, 0 caso contrário.

qp

Índice sequencial de -129 a 128.

11.204.1 Exemplos

  • Alguma equação do tipo:
    qp=2+2*sin(PI*qp)
    

11.205 qrencode

Gera um código QR usando a biblioteca libqrencode (veja https://fukuchi.org/works/qrencode/) e o sobrepõe à parte superior do quadro atual.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libqrencode.

O código QR é gerado a partir do texto ou padrão de texto fornecido. O código QR correspondente é dimensionado e sobreposto à saída de vídeo de acordo com as opções especificadas.

Caso nenhum texto seja especificado, nenhum código QR é sobreposto.

Este filtro aceita as seguintes opções:

qrcode_width, q padded_qrcode_width, Q

Especifica uma expressão para a largura do código QR renderizado, com e sem preenchimento. A expressão qrcode_width pode referenciar o valor definido pela expressão padded_qrcode_width, e vice-versa. Por padrão, padded_qrcode_width é definido como qrcode_width, ou seja, não há preenchimento.

Essas expressões são avaliadas a cada novo quadro.

Veja a seção qrencode Expressions para mais detalhes.

x y

Especifica uma expressão para posicionar o canto superior esquerdo do código QR com preenchimento. A expressão x pode referenciar o valor definido pela expressão y, e vice-versa.

Por padrão, x e y são definidos como 0, o que significa que o código QR é posicionado no canto superior esquerdo da entrada.

Essas expressões são avaliadas a cada novo quadro.

Veja a seção qrencode Expressions para mais detalhes.

case_sensitive, cs

Instrui a libqrencode a usar codificação sensível a maiúsculas e minúsculas. Isso é habilitado por padrão. Pode ser desabilitado para reduzir o tamanho da codificação QR.

level, l

Especifica o nível de correção de erro da codificação QR. Com um nível de correção mais alto, o tamanho da codificação aumenta, mas o código fica mais robusto a corrupção. O nível mais baixo é L.

Aceita os seguintes valores:

‘L’ ‘M’ ‘Q’ ‘H’ expansion

Seleciona como o texto de entrada é expandido. Pode ser none ou normal (padrão). Veja a seção qrencode Text expansion abaixo para mais detalhes.

text textfile

Define o texto a ser renderizado. Caso nenhum dos dois seja especificado, nenhum QR é codificado (apenas um quadro colorido vazio).

Caso expansion esteja habilitado, o texto é tratado como um modelo de texto, usando o mecanismo de expansão do qrencode. Veja a seção qrencode Text expansion abaixo para mais detalhes.

background_color, bc foreground_color, fc

Define a cor do código QR e do plano de fundo. O valor padrão de foreground_color é "black"; o valor padrão de background_color é "white".

Para a sintaxe das opções de cor, consulte a seção "Color" do manual ffmpeg-utils.

11.205.1 qrencode Expressions

As expressões definidas pelas opções contêm as seguintes constantes e funções.

dar

proporção de aspecto de exibição da entrada, o mesmo que (w / h) * sar

duration

a duração do quadro atual, em segundos

hsub vsub

valores de subamostragem de croma horizontal e vertical. Por exemplo, para o pixel format "yuv422p", hsub é 2 e vsub é 1.

main_h, H

a altura da entrada

main_w, W

a largura da entrada

n

o número do quadro de entrada, começando em 0

pict_type

um número que representa o tipo de imagem

qr_w, w

a largura do código QR codificado

rendered_qr_w, q rendered_padded_qr_w, Q

a largura do código QR renderizado, sem e com preenchimento.

Esses parâmetros permitem que as expressões q e Q façam referência uma à outra, de modo que é possível, por exemplo, especificar q=3/4*Q.

rand(min, max)

retorna um número aleatório entre min e max

sar

a proporção de aspecto de amostra da entrada

t

marca de tempo expressa em segundos, NAN se a marca de tempo de entrada for desconhecida

x y

as coordenadas de deslocamento x e y onde o texto é desenhado.

Esses parâmetros permitem que as expressões x e y façam referência uma à outra, de modo que é possível, por exemplo, especificar y=x/dar.

11.205.2 qrencode Text expansion

Se expansion for definido como none, o texto é impresso literalmente.

Se expansion for definido como normal (o padrão), o seguinte mecanismo de expansão é usado.

O caractere de barra invertida ‘\’, seguido de qualquer caractere, sempre se expande para o segundo caractere.

Sequências no formato %{...} são expandidas. O texto entre as chaves é um nome de função, possivelmente seguido de argumentos separados por ’:’. Se os argumentos contiverem caracteres especiais ou delimitadores (’:’ ou ’}’), eles devem ser escapados.

Observe que provavelmente também precisam ser escapados como valor da opção text na string de argumentos do filtro e como argumento do filtro na descrição do filtergraph, e possivelmente também para o shell, o que totaliza até quatro níveis de escape; usar um arquivo de texto com a opção textfile evita esses problemas.

As seguintes funções estão disponíveis:

n, frame_num

retorna o número do quadro

pts

Retorna o presentation timestamp do quadro atual.

Pode receber até dois argumentos.

O primeiro argumento é o formato da marca de tempo; o padrão é flt, para segundos como número decimal com precisão de microssegundos; hms representa uma marca de tempo formatada [-]HH:MM:SS.mmm com precisão de milissegundos. gmtime representa a marca de tempo do quadro formatada como horário UTC; localtime representa a marca de tempo do quadro formatada como horário do fuso horário local. Se o formato for definido como hms24hh, o horário é formatado no padrão 24h (00-23).

O segundo argumento é um deslocamento somado à marca de tempo.

Se o formato for definido como localtime ou gmtime, um terceiro argumento pode ser fornecido: uma string de formato da função C strftime. Por padrão, é usado o formato YYYY-MM-DD HH:MM:SS.

expr, e

Avalia o valor da expressão e o gera como um double.

Deve receber um argumento especificando a expressão a ser avaliada, aceitando as constantes e funções definidas em qrencode_expressions.

expr_formatted, ef

Avalia o valor da expressão e o gera como uma string formatada.

O primeiro argumento é a expressão a ser avaliada, assim como na função expr. O segundo argumento especifica o formato de saída. Os valores permitidos são ‘x’, ‘X’, ‘d’ e ‘u’. Eles são tratados exatamente como na função printf. O terceiro parâmetro é opcional e define o número de posições ocupadas pela saída. Pode ser usado para preencher com zeros à esquerda.

gmtime

O horário em que o filtro está em execução, expresso em UTC. Pode aceitar um argumento: uma string de formato da função C strftime. A string de formato é estendida para oferecer suporte à variável %[1-6]N, que imprime frações do segundo com número de dígitos opcionalmente especificado.

localtime

O horário em que o filtro está em execução, expresso no fuso horário local. Pode aceitar um argumento: uma string de formato da função C strftime. A string de formato é estendida para oferecer suporte à variável %[1-6]N, que imprime frações do segundo com número de dígitos opcionalmente especificado.

metadata

Metadados do quadro. Recebe um ou dois argumentos.

O primeiro argumento é obrigatório e especifica a chave de metadados.

O segundo argumento é opcional e especifica um valor padrão, usado quando a chave de metadados não é encontrada ou está vazia.

Os metadados disponíveis podem ser identificados inspecionando as entradas iniciadas por TAG incluídas em cada seção de quadro impressa ao executar ffprobe -show_frames.

Metadados de string gerados nos filtros que antecedem o filtro qrencode também estão disponíveis.

rand(min, max)

retorna um número aleatório entre min e max

11.205.3 Exemplos

  • Gera um código QR codificando o texto especificado com o tamanho padrão, sobreposto no canto superior esquerdo do vídeo de entrada, com o tamanho padrão:

    qrencode=text=www.ffmpeg.org
    
  • O mesmo que abaixo, mas selecionando as cores azul sobre rosa:

    qrencode=text=www.ffmpeg.org:bc=pink@0.5:fc=blue
    
  • Posiciona o código QR no canto inferior direito do vídeo de entrada:

    qrencode=text=www.ffmpeg.org:x=W-Q:y=H-Q
    
  • Gera um código QR com largura de 200 pixels e preenchimento, tornando a largura preenchida igual a 4/3 da largura do código QR:

    qrencode=text=www.ffmpeg.org:q=200:Q=4/3*q
    
  • Gera um código QR com largura preenchida de 200 pixels e preenchimento, tornando a largura do código QR igual a 3/4 da largura preenchida:

    qrencode=text=www.ffmpeg.org:Q=200:q=3/4*Q
    
  • Torna o código QR uma fração da largura do vídeo de entrada:

    qrencode=text=www.ffmpeg.org:q=W/5
    
  • Gera um código QR codificando o número do quadro:

    qrencode=text=%{n}
    
  • Gera um código QR codificando a marca de tempo GMT:

    qrencode=text=%{gmtime}
    
  • Gera um código QR codificando a marca de tempo expressa como ponto flutuante:

    qrencode=text=%{pts}
    

11.206 quirc

Identifica e decodifica um código QR usando a biblioteca libquirc (veja https://github.com/dlbeer/quirc/) e imprime as posições e o payload dos códigos QR identificados como metadados.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libquirc.

Para cada código QR encontrado no vídeo de entrada, são adicionadas algumas entradas de metadados com o prefixo lavfi.quirc.N, em que N é o índice, começando em 0, associado ao código QR.

Segue a descrição de cada valor de metadado:

lavfi.quirc.count

o número de códigos QR encontrados; não é definido caso nenhum tenha sido encontrado

lavfi.quirc.N.corner.M.x lavfi.quirc.N.coreer.M.y

as posições x/y dos quatro cantos do quadrado que contém o código QR, em que M é o índice do canto, começando em 0

lavfi.quirc.N.payload

o payload do código QR

11.207 random

Descarrega os quadros de vídeo do cache interno de quadros em uma ordem aleatória. Nenhum quadro é descartado. Inspirado no filtro nervous do frei0r.

frames

Define o tamanho, em número de quadros, do cache interno, no intervalo de 2 a 512. O padrão é 30.

seed

Define a semente do gerador de números aleatórios; deve ser um número inteiro entre 0 e UINT32_MAX. Se não for especificada, ou se for definida explicitamente com um valor menor que 0, o filtro tentará usar uma boa semente aleatória com base no melhor esforço possível.

11.208 readeia608

Lê informações de closed captions (EIA-608) das linhas superiores de um quadro de vídeo.

Este filtro adiciona metadados de quadro para lavfi.readeia608.X.cc e lavfi.readeia608.X.line, em que X é o número da linha identificada com dados EIA-608 (começando em 0). Segue a descrição de cada valor de metadado:

lavfi.readeia608.X.cc

Os dois bytes armazenados como dados EIA-608 (impressos em hexadecimal).

lavfi.readeia608.X.line

O número da linha na qual os dados EIA-608 foram identificados e lidos.

Este filtro aceita as seguintes opções:

scan_min

Define a linha onde começar a varredura de dados EIA-608. O padrão é 0.

scan_max

Define a linha onde terminar a varredura de dados EIA-608. O padrão é 29.

spw

Define a proporção da largura reservada para a detecção do código de sincronismo. O padrão é 0.27. O intervalo permitido é [0.1 - 0.7].

chp

Habilita a verificação do bit de paridade. Em caso de erro de paridade, o filtro produzirá 0x00 para esse caractere. O padrão é false.

lp

Aplica um filtro passa-baixa nas linhas antes de processamentos posteriores. O padrão é habilitado.

11.208.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.208.2 Exemplos

  • Gera um csv com o tempo de apresentação e as duas primeiras linhas de dados de legenda EIA-608 identificados.
    ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
    

11.209 readvitc

Lê informações de código de tempo de intervalo vertical (VITC) das linhas superiores de um quadro de vídeo.

O filtro adiciona a chave de metadados de quadro lavfi.readvitc.tc_str com o valor do código de tempo, caso um código de tempo válido tenha sido detectado. A chave de metadados adicional lavfi.readvitc.found é definida como 0/1, dependendo se os dados de código de tempo foram encontrados ou não.

Este filtro aceita as seguintes opções:

scan_max

Define o número máximo de linhas a varrer em busca de dados VITC. Se o valor for definido como -1, o quadro de vídeo completo é varrido. O padrão é 45.

thr_b

Define o limiar de luma para o preto. Aceita números de ponto flutuante no intervalo [0.0,1.0]; o valor padrão é 0.2. O valor deve ser igual ou menor que thr_w.

thr_w

Define o limiar de luma para o branco. Aceita números de ponto flutuante no intervalo [0.0,1.0]; o valor padrão é 0.6. O valor deve ser igual ou maior que thr_b.

11.209.1 Exemplos

  • Detecta e desenha dados VITC no quadro de vídeo; se nenhum VITC válido for detectado, desenha --:--:--:-- como um espaço reservado:
    ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--}:x=(w-tw)/2:y=400-ascent'
    

11.210 remap

Remapeia pixels usando o 2º fluxo de vídeo de entrada (Xmap) e o 3º (Ymap).

O pixel de destino na posição (X, Y) será obtido da posição (x, y) da origem, em que x = Xmap(X, Y) e y = Ymap(X, Y). Se os valores de mapeamento estiverem fora do intervalo, será usado o valor zero para o pixel de destino.

Os fluxos de vídeo de entrada Xmap e Ymap devem ter as mesmas dimensões. O fluxo de vídeo de saída terá as dimensões dos fluxos de vídeo Xmap/Ymap. Os fluxos de vídeo de entrada Xmap e Ymap têm profundidade de 16 bits, canal único.

format

Especifica o pixel format da saída deste filtro. Pode ser color ou gray. O padrão é color.

fill

Especifica a cor dos pixels não mapeados. Para a sintaxe desta opção, consulte a seção "Color" do manual ffmpeg-utils. A cor padrão é black.

11.211 removegrain

O filtro removegrain é um redutor de ruído espacial para vídeo progressivo.

m0

Define o modo do primeiro plano.

m1

Define o modo do segundo plano.

m2

Define o modo do terceiro plano.

m3

Define o modo do quarto plano.

O intervalo do modo vai de 0 a 24. Segue a descrição de cada modo:

0

Deixa o plano de entrada inalterado. Padrão.

1

Recorta o pixel com o mínimo e o máximo dos 8 pixels vizinhos.

2

Recorta o pixel com o segundo mínimo e máximo dos 8 pixels vizinhos.

3

Recorta o pixel com o terceiro mínimo e máximo dos 8 pixels vizinhos.

4

Recorta o pixel com o quarto mínimo e máximo dos 8 pixels vizinhos. Isso equivale a um filtro de mediana.

5

Recorte sensível à linha, produzindo a mudança mínima.

6

Recorte sensível à linha, intermediário.

7

Recorte sensível à linha, intermediário.

8

Recorte sensível à linha, intermediário.

9

Recorte sensível à linha, na linha onde os pixels vizinhos são os mais próximos.

10

Substitui o pixel alvo pelo vizinho mais próximo.

11

Desfoque com kernel [1 2 1] horizontal e vertical.

12

O mesmo que o modo 11.

13

Modo bob; interpola o campo superior a partir da linha onde os pixels vizinhos são os mais próximos.

14

Modo bob; interpola o campo inferior a partir da linha onde os pixels vizinhos são os mais próximos.

15

Modo bob; interpola o campo superior. O mesmo que 13, mas com uma fórmula de interpolação mais complexa.

16

Modo bob; interpola o campo inferior. O mesmo que 14, mas com uma fórmula de interpolação mais complexa.

17

Recorta o pixel com o mínimo e o máximo, respectivamente, do máximo e do mínimo de cada par de pixels vizinhos opostos.

18

Recorte sensível à linha, usando vizinhos opostos cuja maior distância em relação ao pixel atual é mínima.

19

Substitui o pixel pela média de seus 8 vizinhos.

20

Calcula a média dos 9 pixels (desfoque [1 1 1] horizontal e vertical).

21

Recorta pixels usando as médias dos vizinhos opostos.

22

O mesmo que o modo 21, porém mais simples e rápido.

23

Remoção de pequenas bordas e halos, mas considerada inútil.

24

Similar a 23.

Suprime o logotipo de uma emissora de TV, usando um arquivo de imagem para determinar quais pixels compõem o logotipo. Funciona preenchendo os pixels que compõem o logotipo com pixels vizinhos.

O filtro aceita as seguintes opções:

filename, f

Define o arquivo de bitmap do filtro, que pode ser em qualquer formato de imagem compatível com a libavformat. A largura e a altura do arquivo de imagem devem corresponder às do fluxo de vídeo em processamento.

Os pixels da imagem de bitmap fornecida com valor zero não são considerados parte do logotipo; os pixels diferentes de zero são considerados parte do logotipo. Usar branco (255) para o logotipo e preto (0) para o restante é uma escolha segura. Para criar o bitmap do filtro, recomenda-se capturar a tela de um quadro preto com o logotipo visível e, em seguida, aplicar um filtro threshold seguido do filtro erode uma ou duas vezes.

Se necessário, pequenas manchas podem ser corrigidas manualmente. Lembre-se de que, se os pixels do logotipo não forem cobertos, a qualidade do filtro será bastante reduzida. Marcar pixels demais como parte do logotipo não prejudica tanto, mas aumentará a quantidade de desfoque necessária para cobrir a imagem e destruirá mais informação do que o necessário; além disso, pixels extras tornarão o processamento mais lento em um logotipo grande.

11.213 repeatfields

Este filtro usa a flag repeat_field dos cabeçalhos Video ES e repete fisicamente os campos com base em seu valor.

11.214 reverse

Reverte um clipe de vídeo.

Aviso: este filtro requer memória para armazenar em buffer o clipe inteiro, portanto aparar é recomendado.

11.214.1 Exemplos

  • Pega os primeiros 5 segundos de um clipe e o reverte.
    trim=end=5,reverse
    

11.215 rgbashift

Desloca pixels R/G/B/A horizontal e/ou verticalmente.

O filtro aceita as seguintes opções:

rh

Define a quantidade de deslocamento horizontal do vermelho.

rv

Define a quantidade de deslocamento vertical do vermelho.

gh

Define a quantidade de deslocamento horizontal do verde.

gv

Define a quantidade de deslocamento vertical do verde.

bh

Define a quantidade de deslocamento horizontal do azul.

bv

Define a quantidade de deslocamento vertical do azul.

ah

Define a quantidade de deslocamento horizontal do alfa.

av

Define a quantidade de deslocamento vertical do alfa.

edge

Define o modo de borda; pode ser smear, default ou warp.

11.215.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.216 roberts

Aplica o operador cruzado de Roberts ao fluxo de vídeo de entrada.

O filtro aceita a seguinte opção:

planes

Define quais planos serão processados; os planos não processados serão copiados. Com o valor padrão 0xf, todos os planos serão processados.

scale

Define o valor que será multiplicado pelo resultado filtrado.

delta

Define o valor que será somado ao resultado filtrado.

11.216.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.217 rotate

Gira o vídeo por um ângulo arbitrário expresso em radianos.

O filtro aceita as seguintes opções:

Segue a descrição dos parâmetros opcionais.

angle, a

Define uma expressão para o ângulo em que o vídeo de entrada será girado no sentido horário, expresso em radianos. Um valor negativo resultará em uma rotação no sentido anti-horário. Por padrão, é definido como "0".

Esta expressão é avaliada a cada quadro.

out_w, ow

Define a expressão da largura de saída; o valor padrão é "iw". Esta expressão é avaliada apenas uma vez durante a configuração.

out_h, oh

Define a expressão da altura de saída; o valor padrão é "ih". Esta expressão é avaliada apenas uma vez durante a configuração.

bilinear

Habilita a interpolação bilinear se definido como 1; um valor de 0 a desabilita. O valor padrão é 1.

fillcolor, c

Define a cor usada para preencher a área de saída não coberta pela imagem girada. Para a sintaxe geral desta opção, consulte a (ffmpeg-utils)seção "Color" do manual ffmpeg-utils. Se o valor especial "none" for selecionado, nenhum fundo é desenhado (útil, por exemplo, se o fundo nunca for exibido).

O valor padrão é "black".

As expressões do ângulo e do tamanho de saída podem conter as seguintes constantes e funções:

n

número sequencial do quadro de entrada, começando em 0. É sempre NAN antes que o primeiro quadro seja filtrado.

t

tempo em segundos do quadro de entrada; é definido como 0 quando o filtro é configurado. É sempre NAN antes que o primeiro quadro seja filtrado.

hsub vsub

valores de subamostragem de croma horizontal e vertical. Por exemplo, para o pixel format "yuv422p", hsub é 2 e vsub é 1.

in_w, iw in_h, ih

a largura e a altura do vídeo de entrada

out_w, ow out_h, oh

a largura e a altura de saída, ou seja, o tamanho da área preenchida conforme especificado pelas expressões width e height

rotw(a) roth(a)

a largura/altura mínima necessária para conter completamente o vídeo de entrada girado por a radianos.

Estas só estão disponíveis ao calcular as expressões out_w e out_h.

11.217.1 Exemplos

  • Gira a entrada em PI/6 radianos no sentido horário:

    rotate=PI/6
    
  • Gira a entrada em PI/6 radianos no sentido anti-horário:

    rotate=-PI/6
    
  • Gira a entrada em 45 graus no sentido horário:

    rotate=45*PI/180
    
  • Aplica uma rotação constante com período T, começando em um ângulo de PI/3:

    rotate=PI/3+2*PI*t/T
    
  • Faz a rotação do vídeo de entrada oscilar com um período de T segundos e uma amplitude de A radianos:

    rotate=A*sin(2*PI/T*t)
    
  • Gira o vídeo; o tamanho de saída é escolhido de modo que todo o vídeo de entrada em rotação esteja sempre completamente contido na saída:

    rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
    
  • Gira o vídeo, reduzindo o tamanho de saída para que nenhum fundo seja exibido:

    rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
    

11.217.2 Comandos

O filtro aceita os seguintes comandos:

a, angle

Define a expressão do ângulo. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.218 sab

Aplica o Shape Adaptive Blur (desfoque adaptativo de forma).

O filtro aceita as seguintes opções:

luma_radius, lr

Define a intensidade do desfoque de luma; deve ser um valor no intervalo 0.1-4.0, com valor padrão 1.0. Um valor maior resultará em uma imagem mais desfocada e em um processamento mais lento.

luma_pre_filter_radius, lpfr

Define o raio do pré-filtro de luma; deve ser um valor no intervalo 0.1-2.0, com valor padrão 1.0.

luma_strength, ls

Define a diferença máxima de luma entre pixels para que ainda sejam considerados; deve ser um valor no intervalo 0.1-100.0, com valor padrão 1.0.

chroma_radius, cr

Define a intensidade do desfoque de croma; deve ser um valor no intervalo -0.9-4.0. Um valor maior resultará em uma imagem mais desfocada e em um processamento mais lento.

chroma_pre_filter_radius, cpfr

Define o raio do pré-filtro de croma; deve ser um valor no intervalo -0.9-2.0.

chroma_strength, cs

Define a diferença máxima de croma entre pixels para que ainda sejam considerados; deve ser um valor no intervalo -0.9-100.0.

Cada valor de opção de croma, se não for explicitamente especificado, é definido com o valor da opção de luma correspondente.

11.219 scale

Escala (redimensiona) o vídeo de entrada, usando a biblioteca libswscale.

O filtro scale força a proporção de aspecto de exibição de saída a ser igual à da entrada, alterando a proporção de aspecto de amostra de saída.

Se o formato de imagem de entrada for diferente do formato solicitado pelo próximo filtro, o filtro scale converterá a entrada para o formato solicitado.

11.219.1 Opções

O filtro aceita as seguintes opções, quaisquer opções compatíveis com o escalador libswscale, bem como quaisquer opções de framesync.

Consulte o (ffmpeg-scaler)manual ffmpeg-scaler para a lista completa de opções do escalador.

width, w height, h

Define a expressão de dimensão do vídeo de saída. O valor padrão é a dimensão da entrada.

Se o valor de width ou w for 0, a largura da entrada é usada na saída. Se o valor de height ou h for 0, a altura da entrada é usada na saída.

Se um, e apenas um, dos valores for -n com n >= 1, o filtro scale usará um valor que mantém a proporção de aspecto da imagem de entrada, calculado a partir da outra dimensão especificada. Depois disso, porém, garantirá que a dimensão calculada seja divisível por n, ajustando o valor se necessário.

Se ambos os valores forem -n com n >= 1, o comportamento será idêntico ao de ambos os valores definidos como 0, conforme detalhado anteriormente.

Veja abaixo a lista de constantes aceitas para uso na expressão de dimensão.

eval

Especifica quando avaliar a expressão de width e height. Aceita os seguintes valores:

‘init’

Avalia as expressões apenas uma vez durante a inicialização do filtro ou quando um comando é processado.

‘frame’

Avalia as expressões a cada quadro recebido.

O valor padrão é ‘init’.

interl

Define o modo de entrelaçamento. Aceita os seguintes valores:

‘1’

Força a escala com reconhecimento de entrelaçamento.

‘0’

Não aplica escala com reconhecimento de entrelaçamento.

‘-1’

Seleciona a escala com reconhecimento de entrelaçamento dependendo se os quadros de origem estão sinalizados como entrelaçados ou não.

O valor padrão é ‘0’.

flags

Define as flags de escala da libswscale. Consulte o (ffmpeg-scaler)manual ffmpeg-scaler para a lista completa de valores. Se não for especificado explicitamente, o filtro aplica as flags padrão.

param0, param1

Define os parâmetros de entrada da libswscale para os algoritmos de escala que os exigem. Consulte o (ffmpeg-scaler)manual ffmpeg-scaler para a documentação completa. Se não for especificado explicitamente, o filtro aplica parâmetros vazios.

intent

Define a intenção de renderização ICC a ser usada ao transformar entre diferentes espaços de cor. Aceita os seguintes valores:

‘perceptual’

Usa uma curva de mapeamento de tom e gamut guiada perceptualmente. Os detalhes exatos do mapeamento usado podem mudar a qualquer momento e não devem ser considerados estáveis. Esta intenção é recomendada para a visualização final de conteúdo de imagem/vídeo em configurações típicas de visualização.

‘relative_colorimetric’

Recorta estaticamente as cores fora do gamute usando uma curva de recorte colorimétrico que tenta encontrar a cor dentro do gamute colorimetricamente menos dissimilar. Esta intenção realiza adaptação de ponto branco e de ponto preto. Esta é a opção padrão. Esta intenção é recomendada sempre que a reprodução fiel de cores for de máxima importância, mesmo ao custo de recorte.

‘absolute_colorimetric’

Recorta abruptamente as cores fora do gamute, sem tentar reproduzir o ponto branco ou o ponto preto. Esta intenção reproduzirá as cores dentro do gamute em 1:1 no display de saída, tal como apareceriam no display de referência, supondo que o display de saída esteja devidamente calibrado.

‘saturation’

Realiza o mapeamento de saturação, ou seja, estica o volume de cor de entrada diretamente sobre o volume de cor de saída, de forma não linear, preservando ao máximo a aparência original do sinal. Esta intenção é recomendada para a avaliação de conteúdo de sinal, pois não provoca nenhum recorte. É aproximadamente análoga a não realizar nenhum mapeamento de cor, embora ainda leve em conta as primárias do display de masterização e quaisquer diferenças na TRC de codificação.

size, s

Define o tamanho do vídeo. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils.

in_color_matrix out_color_matrix

Define o tipo de espaço de cor YCbCr de entrada/saída.

Isso permite substituir o valor detectado automaticamente, bem como forçar um valor específico usado para a saída e o encoder.

Se não for especificado, o tipo de espaço de cor depende do pixel format.

Valores possíveis:

‘auto’

Escolhe automaticamente.

‘bt709’

Formato conforme a Recomendação BT.709 da União Internacional de Telecomunicações (ITU).

‘fcc’

Define um espaço de cor conforme o Título 47 (2003) 73.682(a) do Code of Federal Regulations (CFR) da Federal Communications Commission (FCC) dos Estados Unidos.

‘bt601’ ‘bt470’ ‘smpte170m’

Define um espaço de cor conforme:

  • Recomendação BT.601 do setor de radiocomunicações da ITU (ITU-R)
  • ITU-R Rec. BT.470-6 (1998), sistemas B, B1 e G
  • SMPTE (Society of Motion Picture and Television Engineers) ST 170:2004

‘smpte240m’

Define um espaço de cor conforme SMPTE ST 240:1999.

‘bt2020’

Define um espaço de cor conforme o sistema de luminância não constante ITU-R BT.2020.

in_range out_range

Define o intervalo de amostra YCbCr de entrada/saída.

Isso permite substituir o valor detectado automaticamente, bem como forçar um valor específico usado para a saída e o encoder. Se não for especificado, o intervalo depende do pixel format. Valores possíveis:

‘auto/unknown’

Escolhe automaticamente.

‘jpeg/full/pc’

Define o intervalo completo (0-255 no caso de luma de 8 bits).

‘mpeg/limited/tv’

Define o intervalo "MPEG" (16-235 no caso de luma de 8 bits).

in_chroma_loc out_chroma_loc

Define a posição de amostra de croma de entrada/saída. Se não for especificado, a croma centralizada é usada por padrão. Valores possíveis:

‘auto, unknown’ ‘left’ ‘center’ ‘topleft’ ‘top’ ‘bottomleft’ ‘bottom’ in_primaries out_primaries

Define as primárias RGB de entrada/saída.

Isso permite substituir o valor detectado automaticamente, bem como forçar um valor específico usado para a saída e o encoder. Valores possíveis:

‘auto’

Escolhe automaticamente. Esta é a opção padrão.

‘bt709’ ‘bt470m’ ‘bt470bg’ ‘smpte170m’ ‘smpte240m’ ‘film’ ‘bt2020’ ‘smpte428’ ‘smpte431’ ‘smpte432’ ‘jedec-p22’ ‘ebu3213’ in_transfer out_transfer

Define a curva de resposta de transferência (TRC) de entrada/saída.

Isso permite substituir o valor detectado automaticamente, além de permitir forçar um valor específico usado para a saída e o encoder. Valores possíveis:

‘auto’

Escolhe automaticamente. Este é o padrão.

‘bt709’ ‘bt470m’ ‘gamma22’ ‘bt470bg’ ‘gamma28’ ‘smpte170m’ ‘smpte240m’ ‘linear’ ‘iec61966-2-1’ ‘srgb’ ‘iec61966-2-4’ ‘xvycc’ ‘bt1361e’ ‘bt2020-10’ ‘bt2020-12’ ‘smpte2084’ ‘smpte428’ ‘arib-std-b67’ force_original_aspect_ratio

Permite diminuir ou aumentar a largura ou a altura do vídeo de saída, se necessário, para manter a proporção de aspecto original. Valores possíveis:

‘disable’

Escala o vídeo conforme especificado e desativa esse recurso.

‘decrease’

As dimensões do vídeo de saída serão diminuídas automaticamente, se necessário.

‘increase’

As dimensões do vídeo de saída serão aumentadas automaticamente, se necessário.

Um uso útil desta opção é que, quando você sabe a resolução máxima permitida de um determinado dispositivo, pode usá-la para limitar o vídeo de saída a esse valor, mantendo a proporção de aspecto. Por exemplo, o dispositivo A permite reprodução em 1280x720, e o seu vídeo é 1920x800. Usando essa opção (definida como decrease) e especificando 1280x720 na linha de comando, a saída fica em 1280x533.

Observe que isso é diferente de especificar -1 para w ou h; ainda é necessário especificar a resolução de saída para que essa opção funcione.

force_divisible_by

Garante que ambas as dimensões de saída, largura e altura, sejam divisíveis pelo número inteiro informado quando usada em conjunto com force_original_aspect_ratio. Isso funciona de modo semelhante ao uso de -n nas opções w e h.

Essa opção respeita o valor definido em force_original_aspect_ratio, aumentando ou diminuindo a resolução de acordo. A proporção de aspecto do vídeo pode ser levemente modificada.

Essa opção pode ser útil quando você precisa que um vídeo caiba dentro de uma resolução definida (ou a ultrapasse) usando force_original_aspect_ratio, mas também tem restrições do encoder quanto à divisibilidade da largura ou da altura.

reset_sar

Ativar essa opção faz com que o SAR de saída seja redefinido para 1. Além disso, se o usuário solicitar redimensionamento proporcional por meio das expressões de largura ou altura, por exemplo w=-4:h=360 ou w=iw/2:h=-1, ou ativando force_original_aspect_ratio, o DAR de entrada é levado em conta e a saída é redimensionada para produzir pixels quadrados. O padrão é false.

Os valores das opções w e h são expressões que contêm as seguintes constantes:

in_w in_h

A largura e a altura de entrada

iw ih

São o mesmo que in_w e in_h.

out_w out_h

A largura e a altura de saída (escalonadas)

ow oh

São o mesmo que out_w e out_h

a

O mesmo que iw / ih

sar

proporção de aspecto de amostra de entrada

dar

A proporção de aspecto de exibição de entrada. Calculada a partir de (iw / ih) * sar.

hsub vsub

valores de subamostragem de croma horizontal e vertical de entrada. Por exemplo, para o pixel format "yuv422p", hsub é 2 e vsub é 1.

ohsub ovsub

valores de subamostragem de croma horizontal e vertical de saída. Por exemplo, para o pixel format "yuv422p", hsub é 2 e vsub é 1.

n

O número (sequencial) do quadro de entrada, começando em 0. Disponível apenas com eval=frame.

t

O presentation timestamp do quadro de entrada, expresso como um número de segundos. Disponível apenas com eval=frame.

pos

A posição (deslocamento em bytes) do quadro no fluxo de entrada, ou NaN se essa informação não estiver disponível e/ou não fizer sentido (por exemplo, no caso de vídeo sintético). Disponível apenas com eval=frame. Obsoleto, não utilize.

ref_w, rw ref_h, rh ref_a ref_dar, rdar ref_n ref_t ref_pos

Equivalente ao anterior, mas para uma segunda entrada de referência. Se qualquer uma dessas variáveis estiver presente, este filtro aceita duas entradas.

11.219.2 Exemplos

  • Redimensiona o vídeo de entrada para um tamanho de 200x100
    scale=w=200:h=100
    

Isso é equivalente a:

    scale=200:100

ou:

    scale=200x100
  • Especifica uma abreviação de tamanho para o tamanho de saída:
    scale=qcif
    

que também pode ser escrito como:

    scale=size=qcif
  • Redimensiona a entrada em 2x:

    scale=w=2*iw:h=2*ih
    
  • O exemplo acima é o mesmo que:

    scale=2*in_w:2*in_h
    
  • Redimensiona a entrada em 2x com redimensionamento entrelaçado forçado:

    scale=2*iw:2*ih:interl=1
    
  • Redimensiona a entrada para a metade do tamanho:

    scale=w=iw/2:h=ih/2
    
  • Aumenta a largura e define a altura para o mesmo tamanho:

    scale=3/2*iw:ow
    
  • Em busca da harmonia grega:

    scale=iw:1/PHI*iw
    scale=ih*PHI:ih
    
  • Aumenta a altura e define a largura como 3/2 da altura:

    scale=w=3/2*oh:h=3/5*ih
    
  • Aumenta o tamanho, fazendo com que o tamanho seja um múltiplo dos valores de subamostragem de croma:

    scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
    
  • Aumenta a largura até no máximo 500 pixels, mantendo a mesma proporção de aspecto da entrada:

    scale=w='min(500\, iw*3/2):h=-1'
    
  • Torna os pixels quadrados combinando scale e setsar:

    scale='trunc(ih*dar):ih',setsar=1/1
    
  • Torna os pixels quadrados usando reset_sar, garantindo que a resolução resultante seja par (exigido por alguns codecs):

    scale='-2:ih-mod(ih,2):reset_sar=1'
    
  • Redimensiona exatamente para o alvo, mas redefine o SAR para 1:

    scale='400:300:reset_sar=1'
    
  • Redimensiona para dimensões pares que caibam em 400x300, preservando o SAR de entrada:

    scale='400:300:force_original_aspect_ratio=decrease:force_divisible_by=2'
    
  • Redimensiona para produzir pixels quadrados com dimensões pares que caibam em 400x300:

    scale='400:300:force_original_aspect_ratio=decrease:force_divisible_by=2:reset_sar=1'
    
  • Redimensiona um fluxo de legenda (sub) para corresponder ao tamanho do vídeo principal (main) antes de sobrepor. ("scale2ref")

    '[main]split[a][b]; [ref][a]scale=rw:rh[c]; [b][c]overlay'
    
  • Redimensiona um logotipo para 1/10 da altura de um vídeo, preservando sua proporção de aspecto de exibição.

    [logo-in][video-in]scale=w=oh*dar:h=rh/10[logo-out]
    

11.219.3 Comandos

Este filtro é compatível com os seguintes comandos:

width, w height, h

Define a expressão de dimensão do vídeo de saída. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

11.220 scharr

Aplica o operador scharr ao fluxo de vídeo de entrada.

O filtro aceita a seguinte opção:

planes

Define quais planos serão processados; os planos não processados serão copiados. Por padrão, com valor 0xf, todos os planos são processados.

scale

Define o valor que será multiplicado pelo resultado filtrado.

delta

Define o valor que será somado ao resultado filtrado.

11.220.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.221 scroll

Rola o vídeo de entrada horizontal e/ou verticalmente a uma velocidade constante.

O filtro aceita as seguintes opções:

horizontal, h

Define a velocidade de rolagem horizontal. O padrão é 0. O intervalo permitido é de -1 a 1. Valores negativos invertem a direção da rolagem.

vertical, v

Define a velocidade de rolagem vertical. O padrão é 0. O intervalo permitido é de -1 a 1. Valores negativos invertem a direção da rolagem.

hpos

Define a posição inicial de rolagem horizontal. O padrão é 0. O intervalo permitido é de 0 a 1.

vpos

Define a posição inicial de rolagem vertical. O padrão é 0. O intervalo permitido é de 0 a 1.

11.221.1 Comandos

Este filtro é compatível com os seguintes comandos:

horizontal, h

Define a velocidade de rolagem horizontal.

vertical, v

Define a velocidade de rolagem vertical.

11.222 scdet

Detecta mudança de cena no vídeo.

Este filtro define nos metadados do quadro o mafd entre quadros e a pontuação de cena, e encaminha o quadro ao filtro seguinte, para que ele possa usar esses metadados para detectar mudança de cena, entre outros usos.

Além disso, este filtro registra uma mensagem no log e define metadados do quadro quando detecta uma mudança de cena por meio do limiar.

A chave de metadados lavfi.scd.mafd é definida com o mafd de cada quadro.

A chave de metadados lavfi.scd.score é definida com a pontuação de mudança de cena de cada quadro, para detectar a mudança de cena.

A chave de metadados lavfi.scd.time é definida com o tempo do quadro filtrado atual em que a mudança de cena foi detectada pelo limiar.

O filtro aceita as seguintes opções:

threshold, t

Define o limiar de detecção de mudança de cena como uma porcentagem da alteração máxima. Bons valores ficam no intervalo [8.0, 14.0]. O intervalo de threshold é [0., 100.].

O valor padrão é 10..

sc_pass, s

Define a flag para passar os quadros de mudança de cena ao filtro seguinte. O valor padrão é 0. É possível ativá-la caso você queira obter instantâneos apenas dos quadros de mudança de cena.

11.223 selectivecolor

Ajusta ciano, magenta, amarelo e preto (CMYK) em determinadas faixas de cores (como "reds", "yellows", "greens", "cyans", ...). A faixa de ajuste é definida pela "pureza" da cor (ou seja, o quão saturada ela já é).

Este filtro é semelhante à ferramenta Selective Color do Adobe Photoshop.

O filtro aceita as seguintes opções:

correction_method

Seleciona o método de correção de cor.

Os valores disponíveis são:

‘absolute’

Os ajustes especificados são aplicados "como estão" (somados/subtraídos ao valor original do componente do pixel).

‘relative’

Os ajustes especificados são relativos ao valor original do componente.

O padrão é absolute.

reds

Ajustes para pixels vermelhos (pixels em que o componente vermelho é o máximo)

yellows

Ajustes para pixels amarelos (pixels em que o componente azul é o mínimo)

greens

Ajustes para pixels verdes (pixels em que o componente verde é o máximo)

cyans

Ajustes para pixels ciano (pixels em que o componente vermelho é o mínimo)

blues

Ajustes para pixels azuis (pixels em que o componente azul é o máximo)

magentas

Ajustes para pixels magenta (pixels em que o componente verde é o mínimo)

whites

Ajustes para pixels brancos (pixels em que todos os componentes são maiores que 128)

neutrals

Ajustes para todos os pixels, exceto o preto puro e o branco puro

blacks

Ajustes para pixels pretos (pixels em que todos os componentes são menores que 128)

psfile

Especifica um arquivo de cor seletiva do Photoshop (.asv) do qual importar as configurações.

Todas as configurações de ajuste (reds, yellows, ...) aceitam até 4 valores de ajuste em ponto flutuante separados por espaço, no intervalo [-1,1], para ajustar, respectivamente, a quantidade de ciano, magenta, amarelo e preto dos pixels dessa faixa.

11.223.1 Exemplos

  • Aumenta o ciano em 50% e reduz o amarelo em 33% em todas as áreas verdes, e aumenta o magenta em 27% nas áreas azuis:

    selectivecolor=greens=.5 0 -.33 0:blues=0 .27
    
  • Usa uma predefinição de cor seletiva do Photoshop:

    selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
    

11.224 separatefields

O separatefields recebe uma entrada de vídeo baseada em quadros e divide cada quadro em seus campos componentes, produzindo um novo clipe com metade da altura, o dobro da taxa de quadros e o dobro da quantidade de quadros.

Este filtro usa a informação de dominância de campo (field-dominance) do quadro para decidir qual dos dois campos de cada par colocar primeiro na saída. Se a decisão estiver errada, use o filtro setfield antes do filtro separatefields.

11.225 setdar, setsar

O filtro setdar define a proporção de aspecto de exibição (Display Aspect Ratio) do vídeo de saída do filtro.

Isso é feito alterando a proporção de aspecto de amostra especificada (também chamada de pixel), de acordo com a seguinte equação:

DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR

Tenha em mente que o filtro setdar não modifica as dimensões em pixels do quadro de vídeo. Além disso, a proporção de aspecto de exibição definida por este filtro pode ser alterada por filtros posteriores na cadeia de filtros, por exemplo em caso de redimensionamento ou se outro filtro "setdar" ou "setsar" for aplicado.

O filtro setsar define a proporção de aspecto de amostra (também chamada de pixel) do vídeo de saída do filtro.

Observe que, como consequência da aplicação deste filtro, a proporção de aspecto de exibição de saída mudará de acordo com a equação acima.

Tenha em mente que a proporção de aspecto de amostra definida pelo filtro setsar pode ser alterada por filtros posteriores na cadeia de filtros, por exemplo se outro filtro "setsar" ou "setdar" for aplicado.

Ele aceita os seguintes parâmetros:

r, ratio, dar (setdar only), sar (setsar only)

Define a proporção de aspecto usada pelo filtro.

O parâmetro pode ser uma string de número em ponto flutuante ou uma expressão. Se o parâmetro não for especificado, é assumido o valor "0", o que significa que é usado o mesmo valor da entrada.

max

Define o valor inteiro máximo a usar para expressar numerador e denominador ao reduzir a proporção de aspecto expressa a um número racional. O valor padrão é 100.

O parâmetro sar é uma expressão que contém as seguintes constantes:

w, h

A largura e a altura de entrada.

a

O mesmo que w / h.

sar

A proporção de aspecto de amostra de entrada.

dar

A proporção de aspecto de exibição de entrada. É o mesmo que (w / h) * sar.

hsub, vsub

Valores de subamostragem de croma horizontal e vertical. Por exemplo, para o pixel format "yuv422p", hsub é 2 e vsub é 1.

11.225.1 Exemplos

  • Para alterar a proporção de aspecto de exibição para 16:9, especifique uma das opções a seguir:

    setdar=dar=1.77777
    setdar=dar=16/9
    
  • Para alterar a proporção de aspecto de amostra para 10:11, especifique:

    setsar=sar=10/11
    
  • Para definir uma proporção de aspecto de exibição de 16:9 e especificar um valor inteiro máximo de 1000 na redução da proporção de aspecto, use o comando:

    setdar=ratio=16/9:max=1000
    

11.226 setfield

Força o campo do quadro de vídeo de saída.

O filtro setfield marca o campo de tipo de entrelaçamento dos quadros de saída. Ele não altera o quadro de entrada, apenas define a propriedade correspondente, o que afeta como o quadro é tratado pelos filtros seguintes (por exemplo, fieldorder ou yadif).

O filtro aceita as seguintes opções:

mode

Os valores disponíveis são:

‘auto’

Mantém a mesma propriedade de campo.

‘bff’

Marca o quadro como bottom-field-first.

‘tff’

Marca o quadro como top-field-first.

‘prog’

Marca o quadro como progressivo.

11.227 setparams

Força o parâmetro de quadro do quadro de vídeo de saída.

O filtro setparams marca o entrelaçamento e a faixa de cor (color range) dos quadros de saída. Ele não altera o quadro de entrada, apenas define a propriedade correspondente, o que afeta como o quadro é tratado por filtros/encoders.

field_mode

Os valores disponíveis são:

‘auto’

Mantém a mesma propriedade de campo (padrão).

‘bff’

Marca o quadro como bottom-field-first.

‘tff’

Marca o quadro como top-field-first.

‘prog’

Marca o quadro como progressivo.

range

Os valores disponíveis são:

‘auto’

Mantém a mesma propriedade de faixa de cor (padrão).

‘unspecified, unknown’

Marca o quadro com faixa de cor não especificada.

‘limited, tv, mpeg’

Marca o quadro com faixa limitada (limited range).

‘full, pc, jpeg’

Marca o quadro com faixa completa (full range).

color_primaries

Define as primárias de cor (color primaries). Os valores disponíveis são:

‘auto’

Mantém a mesma propriedade de primárias de cor (padrão).

‘bt709’ ‘unknown’ ‘bt470m’ ‘bt470bg’ ‘smpte170m’ ‘smpte240m’ ‘film’ ‘bt2020’ ‘smpte428’ ‘smpte431’ ‘smpte432’ ‘jedec-p22’ color_trc

Define a transferência de cor (color transfer). Os valores disponíveis são:

‘auto’

Mantém a mesma propriedade color trc (padrão).

‘bt709’ ‘unknown’ ‘bt470m’ ‘bt470bg’ ‘smpte170m’ ‘smpte240m’ ‘linear’ ‘log100’ ‘log316’ ‘iec61966-2-4’ ‘bt1361e’ ‘iec61966-2-1’ ‘bt2020-10’ ‘bt2020-12’ ‘smpte2084’ ‘smpte428’ ‘arib-std-b67’ colorspace

Define o espaço de cor (colorspace). Os valores disponíveis são:

‘auto’

Mantém a mesma propriedade de espaço de cor (padrão).

‘gbr’ ‘bt709’ ‘unknown’ ‘fcc’ ‘bt470bg’ ‘smpte170m’ ‘smpte240m’ ‘ycgco’ ‘bt2020nc’ ‘bt2020c’ ‘smpte2085’ ‘chroma-derived-nc’ ‘chroma-derived-c’ ‘ictcp’ chroma_location

Define a localização da amostra de croma. Os valores disponíveis são:

‘auto’

Mantém a mesma localização de croma (padrão).

‘unspecified, unknown’ ‘left’ ‘center’ ‘topleft’ ‘top’ ‘bottomleft’ ‘bottom’ alpha_mode

Define o modo alfa. Os valores disponíveis são:

‘auto’

Mantém o mesmo modo alfa (padrão).

‘unspecified, unknown’ ‘premultiplied’ ‘straight’

11.228 shear

Aplica uma transformação de cisalhamento (shear) ao vídeo de entrada.

Este filtro é compatível com as seguintes opções:

shx

Fator de cisalhamento na direção X. O valor padrão é 0. O intervalo permitido é de -2 a 2.

shy

Fator de cisalhamento na direção Y. O valor padrão é 0. O intervalo permitido é de -2 a 2.

fillcolor, c

Define a cor usada para preencher a área de saída não coberta pelo vídeo transformado. Para a sintaxe geral desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils. Se o valor especial "none" for selecionado, nenhum plano de fundo será desenhado (útil, por exemplo, se o plano de fundo nunca for exibido).

O valor padrão é "black".

interp

Define o tipo de interpolação. Pode ser bilinear ou nearest. O padrão é bilinear.

11.228.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.229 showinfo

Exibe uma linha contendo várias informações sobre cada quadro de vídeo de entrada. O vídeo de entrada não é modificado.

Este filtro é compatível com as seguintes opções:

checksum

Calcula os checksums de cada plano. Ativado por padrão.

udu_sei_as_ascii

Tenta exibir o user data unregistered SEI como caractere ASCII quando possível; caso contrário, em formato hexadecimal.

A linha exibida contém uma sequência de pares chave/valor no formato key:value.

Os seguintes valores são exibidos na saída:

n

O número (sequencial) do quadro de entrada, começando em 0.

pts

O Presentation TimeStamp do quadro de entrada, expresso como um número de unidades de time base. A unidade de time base depende do pad de entrada do filtro.

pts_time

O Presentation TimeStamp do quadro de entrada, expresso como um número de segundos.

fmt

O nome do pixel format.

sar

A proporção de aspecto de amostra do quadro de entrada, expressa na forma num/den.

s

O tamanho do quadro de entrada. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils.

i

O tipo de modo entrelaçado ("P" para "progressive", "T" para top field first, "B" para bottom field first).

iskey

É 1 se o quadro for um key frame, e 0 caso contrário.

type

O tipo de imagem do quadro de entrada ("I" para um quadro I, "P" para um quadro P, "B" para um quadro B, ou "?" para um tipo desconhecido). Consulte também a documentação da enum AVPictureType e da função av_get_picture_type_char, definidas em libavutil/avutil.h.

checksum

O checksum Adler-32 (exibido em hexadecimal) de todos os planos do quadro de entrada.

plane_checksum

O checksum Adler-32 (exibido em hexadecimal) de cada plano do quadro de entrada, expresso na forma "[c0 c1 c2 c3]".

mean

O valor médio dos pixels em cada plano do quadro de entrada, expresso na forma "[mean0 mean1 mean2 mean3]".

stdev

O desvio padrão dos valores de pixel em cada plano do quadro de entrada, expresso na forma "[stdev0 stdev1 stdev2 stdev3]".

11.230 showpalette

Exibe a paleta de 256 cores de cada quadro. Este filtro só é relevante para quadros no pixel format pal8.

Ele aceita a seguinte opção:

s

Define o tamanho da caixa usada para representar uma entrada de cor da paleta. O padrão é 30 (para uma caixa de 30x30 pixels).

11.231 shuffleframes

Reordena e/ou duplica e/ou descarta quadros de vídeo.

Ele aceita os seguintes parâmetros:

mapping

Define os índices de destino dos quadros de entrada. Trata-se de uma lista de índices separados por espaço ou por ’|’ que mapeia os quadros de entrada para os quadros de saída. O número de índices também define o valor máximo que cada índice pode ter. O índice ’-1’ tem um significado especial: descartar o quadro.

O primeiro quadro tem índice 0. O padrão é manter a entrada inalterada.

11.231.1 Exemplos

  • Troca o segundo e o terceiro quadro a cada três quadros da entrada:

    ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
    
  • Troca o 10º e o 1º quadro a cada dez quadros da entrada:

    ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
    

11.232 shufflepixels

Reordena os pixels nos quadros de vídeo.

Este filtro aceita as seguintes opções:

direction, d

Define a direção do embaralhamento. Pode ser forward ou inverse. A direção padrão é forward.

mode, m

Define o modo de embaralhamento. Pode ser horizontal, vertical ou block.

width, w height, h

Define o block_size do embaralhamento. No modo de embaralhamento horizontal, apenas a parte width do tamanho é usada; no modo de embaralhamento vertical, apenas a parte height do tamanho é usada.

seed, s

Define a semente aleatória usada no embaralhamento dos pixels. É útil principalmente para poder reverter o processo de filtragem e recuperar a entrada original. Por exemplo, para reverter um embaralhamento forward, é necessário usar os mesmos parâmetros e exatamente a mesma semente, além de definir direction como inverse.

11.233 shuffleplanes

Reordena e/ou duplica os planos de vídeo.

Aceita os seguintes parâmetros:

map0

O índice do plano de entrada a ser usado como o primeiro plano de saída.

map1

O índice do plano de entrada a ser usado como o segundo plano de saída.

map2

O índice do plano de entrada a ser usado como o terceiro plano de saída.

map3

O índice do plano de entrada a ser usado como o quarto plano de saída.

O primeiro plano tem o índice 0. O padrão é manter a entrada inalterada.

11.233.1 Exemplos

  • Troca o segundo e o terceiro plano da entrada:
    ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
    

11.234 signalstats

Avalia diversas métricas visuais que ajudam a determinar problemas associados à digitalização de mídia de vídeo analógica.

Por padrão, o filtro registra os seguintes valores de metadados:

YMIN

Exibe o valor Y mínimo contido no quadro de entrada. Expresso no intervalo [0-255].

YLOW

Exibe o valor Y correspondente ao percentil de 10% dentro do quadro de entrada. Expresso no intervalo [0-255].

YAVG

Exibe o valor Y médio dentro do quadro de entrada. Expresso no intervalo [0-255].

YHIGH

Exibe o valor Y correspondente ao percentil de 90% dentro do quadro de entrada. Expresso no intervalo [0-255].

YMAX

Exibe o valor Y máximo contido no quadro de entrada. Expresso no intervalo [0-255].

UMIN

Exibe o valor U mínimo contido no quadro de entrada. Expresso no intervalo [0-255].

ULOW

Exibe o valor U correspondente ao percentil de 10% dentro do quadro de entrada. Expresso no intervalo [0-255].

UAVG

Exibe o valor U médio dentro do quadro de entrada. Expresso no intervalo [0-255].

UHIGH

Exibe o valor U correspondente ao percentil de 90% dentro do quadro de entrada. Expresso no intervalo [0-255].

UMAX

Exibe o valor U máximo contido no quadro de entrada. Expresso no intervalo [0-255].

VMIN

Exibe o valor V mínimo contido no quadro de entrada. Expresso no intervalo [0-255].

VLOW

Exibe o valor V correspondente ao percentil de 10% dentro do quadro de entrada. Expresso no intervalo [0-255].

VAVG

Exibe o valor V médio dentro do quadro de entrada. Expresso no intervalo [0-255].

VHIGH

Exibe o valor V correspondente ao percentil de 90% dentro do quadro de entrada. Expresso no intervalo [0-255].

VMAX

Exibe o valor V máximo contido no quadro de entrada. Expresso no intervalo [0-255].

SATMIN

Exibe o valor de saturação mínimo contido no quadro de entrada. Expresso no intervalo [0-~181.02].

SATLOW

Exibe o valor de saturação correspondente ao percentil de 10% dentro do quadro de entrada. Expresso no intervalo [0-~181.02].

SATAVG

Exibe o valor médio de saturação dentro do quadro de entrada. Expresso no intervalo [0-~181.02].

SATHIGH

Exibe o valor de saturação correspondente ao percentil de 90% dentro do quadro de entrada. Expresso no intervalo [0-~181.02].

SATMAX

Exibe o valor de saturação máximo contido no quadro de entrada. Expresso no intervalo [0-~181.02].

HUEMED

Exibe o valor mediano do matiz dentro do quadro de entrada. Expresso no intervalo [0-360].

HUEAVG

Exibe o valor médio do matiz dentro do quadro de entrada. Expresso no intervalo [0-360].

YDIF

Exibe a média da diferença de valores de amostra entre todos os valores do plano Y no quadro atual e os valores correspondentes do quadro de entrada anterior. Expresso no intervalo [0-255].

UDIF

Exibe a média da diferença de valores de amostra entre todos os valores do plano U no quadro atual e os valores correspondentes do quadro de entrada anterior. Expresso no intervalo [0-255].

VDIF

Exibe a média da diferença de valores de amostra entre todos os valores do plano V no quadro atual e os valores correspondentes do quadro de entrada anterior. Expresso no intervalo [0-255].

YBITDEPTH

Exibe a profundidade de bits do plano Y no quadro atual. Expresso no intervalo [0-16].

UBITDEPTH

Exibe a profundidade de bits do plano U no quadro atual. Expresso no intervalo [0-16].

VBITDEPTH

Exibe a profundidade de bits do plano V no quadro atual. Expresso no intervalo [0-16].

O filtro aceita as seguintes opções:

stat out

stat especifica uma forma adicional de análise de imagem; out gera um vídeo de saída com o tipo de pixel especificado destacado.

Ambas as opções aceitam os seguintes valores:

‘tout’

Identifica pixels que são valores atípicos temporais (temporal outliers). Um valor atípico temporal é um pixel diferente dos pixels vizinhos do mesmo campo. Exemplos de valores atípicos temporais incluem os resultados de interrupções de vídeo (dropouts), obstrução do cabeçote ou problemas de rastreamento de fita.

‘vrep’

Identifica repetição de linhas verticais. A repetição de linhas verticais consiste em linhas semelhantes de pixels dentro de um quadro. Em vídeos digitais nativos (born-digital), a repetição de linhas verticais é comum, mas esse padrão é incomum em vídeos digitalizados a partir de uma fonte analógica. Quando ocorre em vídeo resultante da digitalização de uma fonte analógica, pode indicar mascaramento realizado por um compensador de dropout.

‘brng’

Identifica os pixels que ficam fora da faixa de transmissão permitida.

color, c

Define a cor de destaque para a opção out. A cor padrão é amarelo.

11.234.1 Exemplos

  • Gera dados de diversas métricas de vídeo:

    ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
    
  • Gera dados específicos sobre os valores mínimo e máximo do plano Y por quadro:

    ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
    
  • Reproduz o vídeo destacando em vermelho os pixels que estão fora da faixa de transmissão permitida.

    ffplay example.mov -vf signalstats="out=brng:color=red"
    
  • Reproduz o vídeo com os metadados do signalstats desenhados sobre o quadro.

    ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
    

O conteúdo do arquivo signalstat_drawtext.txt usado no comando é o seguinte:

    time %{pts:hms}
    Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YMAX})
    U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.UMAX})
    V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VMAX})
    saturation maximum: %{metadata:lavfi.signalstats.SATMAX}

11.235 signature

Calcula a assinatura de vídeo MPEG-7 (MPEG-7 Video Signature). O filtro pode lidar com mais de uma entrada. Nesse caso, a correspondência entre as entradas também pode ser calculada. O filtro sempre repassa a primeira entrada sem alterações. A assinatura de cada fluxo pode ser gravada em um arquivo.

Aceita as seguintes opções:

detectmode

Ativa ou desativa o processo de correspondência.

Os valores disponíveis são:

‘off’

Desativa o cálculo de correspondência (padrão).

‘full’

Calcula a correspondência para o vídeo inteiro e indica se o vídeo inteiro corresponde ou apenas partes dele.

‘fast’

Calcula somente até encontrar uma correspondência ou até o vídeo terminar. Em alguns casos, pode ser mais rápido.

nb_inputs

Define o número de entradas. O valor da opção deve ser um número inteiro não negativo. O valor padrão é 1.

filename

Define o caminho no qual a saída será gravada. Se houver mais de uma entrada, o caminho deve ser um protótipo, ou seja, deve conter %d ou %0nd (em que n é um número inteiro positivo), que será substituído pelo número da entrada. Se filename não for especificado, nenhuma saída será gravada. Esse é o comportamento padrão.

format

Escolhe o formato de saída.

Os valores disponíveis são:

‘binary’

Usa a representação binária especificada (padrão).

‘xml’

Usa a representação xml especificada.

th_d

Define o limiar para detectar uma palavra como semelhante. O valor da opção deve ser um número inteiro maior que zero. O valor padrão é 9000.

th_dc

Define o limiar para detectar todas as palavras como semelhantes. O valor da opção deve ser um número inteiro maior que zero. O valor padrão é 60000.

th_xh

Define o limiar para detectar quadros como semelhantes. O valor da opção deve ser um número inteiro maior que zero. O valor padrão é 116.

th_di

Define o comprimento mínimo, em quadros, de uma sequência para que ela seja reconhecida como uma sequência correspondente. O valor da opção deve ser um número inteiro não negativo. O valor padrão é 0.

th_it

Define a relação mínima que os quadros correspondentes devem ter em relação a todos os quadros. O valor da opção deve ser um valor double entre 0 e 1. O valor padrão é 0.5.

11.235.1 Exemplos

  • Calcula a assinatura de um vídeo de entrada e a armazena em signature.bin:

    ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
    
  • Detecta se dois vídeos correspondem e armazena as assinaturas em formato XML em signature0.xml e signature1.xml:

    ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
    

11.236 siti

Calcula as pontuações de Spatial Information (SI) e Temporal Information (TI) de um vídeo, conforme definido em ITU-T Rec. P.910 (11/21): Subjective video quality assessment methods for multimedia applications. O PDF está disponível em https://www.itu.int/rec/T-REC-P.910-202111-S/en. Observe que esta é uma implementação legada que corresponde a uma recomendação já substituída. Consulte a ITU-T Rec. P.910 (07/22) para a versão mais recente: https://www.itu.int/rec/T-REC-P.910-202207-I/en

Aceita a seguinte opção:

print_summary

Se definido como 1, as estatísticas de resumo serão impressas no console. O padrão é 0.

11.236.1 Exemplos

  • Calcula as métricas de SI/TI e exibe o resumo:
    ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
    

11.237 smartblur

Desfoca o vídeo de entrada sem afetar os contornos.

Aceita as seguintes opções:

luma_radius, lr

Define o raio da luma. O valor da opção deve ser um número de ponto flutuante no intervalo [0.1,5.0] que especifica a variância do filtro gaussiano usado para desfocar a imagem (mais lento quanto maior). O valor padrão é 1.0.

luma_strength, ls

Define a intensidade da luma. O valor da opção deve ser um número de ponto flutuante no intervalo [-1.0,1.0] que configura o desfoque. Um valor no intervalo [0.0,1.0] desfoca a imagem, enquanto um valor no intervalo [-1.0,0.0] aumenta a nitidez da imagem. O valor padrão é 1.0.

luma_threshold, lt

Define o limiar da luma usado como coeficiente para determinar se um pixel deve ser desfocado ou não. O valor da opção deve ser um número inteiro no intervalo [-30,30]. Um valor 0 filtra toda a imagem, um valor no intervalo [0,30] filtra áreas planas e um valor no intervalo [-30,0] filtra bordas. O valor padrão é 0.

chroma_radius, cr

Define o raio da croma. O valor da opção deve ser um número de ponto flutuante no intervalo [0.1,5.0] que especifica a variância do filtro gaussiano usado para desfocar a imagem (mais lento quanto maior). O valor padrão é luma_radius.

chroma_strength, cs

Define a intensidade da croma. O valor da opção deve ser um número de ponto flutuante no intervalo [-1.0,1.0] que configura o desfoque. Um valor no intervalo [0.0,1.0] desfoca a imagem, enquanto um valor no intervalo [-1.0,0.0] aumenta a nitidez da imagem. O valor padrão é luma_strength.

chroma_threshold, ct

Define o limiar da croma usado como coeficiente para determinar se um pixel deve ser desfocado ou não. O valor da opção deve ser um número inteiro no intervalo [-30,30]. Um valor 0 filtra toda a imagem, um valor no intervalo [0,30] filtra áreas planas e um valor no intervalo [-30,0] filtra bordas. O valor padrão é luma_threshold.

alpha_radius, ar

Define o raio do alfa. O valor da opção deve ser um número de ponto flutuante no intervalo [0.1,5.0] que especifica a variância do filtro gaussiano usado para desfocar a imagem (mais lento quanto maior). O valor padrão é luma_radius.

alpha_strength, as

Define a intensidade do alfa. O valor da opção deve ser um número de ponto flutuante no intervalo [-1.0,1.0] que configura o desfoque. Um valor no intervalo [0.0,1.0] desfoca a imagem, enquanto um valor no intervalo [-1.0,0.0] aumenta a nitidez da imagem. O valor padrão é luma_strength.

alpha_threshold, at

Define o limiar do alfa usado como coeficiente para determinar se um pixel deve ser desfocado ou não. O valor da opção deve ser um número inteiro no intervalo [-30,30]. Um valor 0 filtra toda a imagem, um valor no intervalo [0,30] filtra áreas planas e um valor no intervalo [-30,0] filtra bordas. O valor padrão é luma_threshold.

Se uma opção de croma ou de alfa não for definida explicitamente, o valor correspondente de luma é usado.

11.238 sobel

Aplica o operador sobel ao fluxo de vídeo de entrada.

O filtro aceita a seguinte opção:

planes

Define quais planos serão processados; os planos não processados serão copiados. Por padrão, o valor é 0xf, e todos os planos serão processados.

scale

Define o valor que será multiplicado pelo resultado filtrado.

delta

Define o valor que será somado ao resultado filtrado.

11.238.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.239 spp

Aplica um filtro de pós-processamento simples que comprime e descomprime a imagem em vários (ou - no caso do nível de qualidade 6 - todos) deslocamentos e calcula a média dos resultados.

O filtro aceita as seguintes opções:

quality

Define a qualidade. Esta opção define o número de níveis para a média. Aceita um número inteiro no intervalo 0-6. Se definida como 0, o filtro não terá efeito. Um valor 6 significa a qualidade mais alta. A cada incremento desse valor, a velocidade cai por um fator de aproximadamente 2. O valor padrão é 3.

qp

Força um parâmetro de quantização constante. Se não for definida, o filtro usará o QP do fluxo de vídeo (se disponível).

mode

Define o modo de limiarização. Os modos disponíveis são:

‘hard’

Define a limiarização rígida (padrão).

‘soft’

Define a limiarização suave (melhor efeito de redução de ringing, mas provavelmente mais borrado).

use_bframe_qp

Ativa o uso do QP dos quadros B se definida como 1. Usar esta opção pode causar cintilação, já que os quadros B costumam ter QP maior. O padrão é 0 (desativado).

11.239.1 Comandos

Este filtro é compatível com os seguintes comandos:

quality, level

Define o nível de qualidade. O valor max pode ser usado para definir o nível máximo, atualmente 6.

11.240 sr

Escala a entrada aplicando um dos métodos de super-resolução baseados em redes neurais convolucionais. Modelos compatíveis:

Os scripts de treinamento, bem como os scripts para salvar o arquivo de modelo (.pb), podem ser encontrados em https://github.com/XueweiMeng/sr/tree/sr_dnn_native. O repositório original está em https://github.com/HighVoltageRocknRoll/sr.git.

O filtro aceita as seguintes opções:

dnn_backend

Especifica qual backend de DNN usar para o carregamento e a execução do modelo. Esta opção aceita os seguintes valores:

‘tensorflow’

Backend do TensorFlow. Para ativar este backend, é necessário instalar a biblioteca TensorFlow for C (consulte https://www.tensorflow.org/install/lang_c) e configurar o FFmpeg com --enable-libtensorflow

model

Define o caminho para o arquivo de modelo que especifica a arquitetura da rede e seus parâmetros. Observe que diferentes backends usam formatos de arquivo diferentes. Os backends TensorFlow e OpenVINO só conseguem carregar arquivos no seu próprio formato.

scale_factor

Define o fator de escala para o modelo SRCNN. Os valores permitidos são 2, 3 e 4. O valor padrão é 2. O fator de escala é necessário para o modelo SRCNN, pois ele aceita uma entrada ampliada por meio de ampliação bicúbica com o fator de escala apropriado.

Para obter a funcionalidade completa (como execução assíncrona), use o filtro dnn_processing.

11.241 sr_amf

Amplia (aumenta o tamanho) o vídeo de entrada usando a biblioteca AMD Advanced Media Framework para aceleração por hardware. Usa algoritmos avançados de ampliação para gerar uma saída de maior qualidade. A definição da largura e da altura de saída funciona da mesma forma que no filtro scale.

O filtro aceita as seguintes opções:

w h

Define a expressão da dimensão do vídeo de saída. O valor padrão é a dimensão da entrada.

Permite as mesmas expressões que o filtro scale.

algorithm

Define o algoritmo usado para o redimensionamento:

bilinear

Bilinear

bicubic

Bicúbica

sr1-0

Video SR1.0. Este é o valor padrão

point

Ponto

sr1-1

Video SR1.1

sharpness

Controla a nitidez do escalador hq. O valor é um número de ponto flutuante no intervalo [0.0, 2.0]

format

Controla o pixel format de saída. Por padrão, ou se nenhum for especificado, é usado o pixel format da entrada.

keep-ratio

Força o escalador a manter a proporção de aspecto da imagem de entrada quando o tamanho de saída tem uma proporção de aspecto diferente. O valor padrão é false.

fill

Especifica se a parte da imagem de saída fora da região de interesse, que não preenche toda a superfície de saída, deve ser preenchida com uma cor sólida.

11.241.1 Exemplos

  • Escala a entrada para 720p, mantendo a proporção de aspecto e garantindo que a saída seja yuv420p.

    sr_amf=-2:720:format=yuv420p
    
  • Amplia para 4K com o algoritmo video SR1.1.

    sr_amf=4096:2160:algorithm=sr1-1
    

11.242 ssim

Obtém o SSIM (Structural SImilarity Metric) entre dois vídeos de entrada.

Este filtro recebe dois vídeos como entrada; a primeira entrada é considerada a fonte "principal" e é repassada sem alterações para a saída. A segunda entrada é usada como vídeo de "referência" para o cálculo do SSIM.

Ambas as entradas de vídeo devem ter a mesma resolução e o mesmo pixel format para que este filtro funcione corretamente. Além disso, presume-se que as duas entradas tenham o mesmo número de quadros, que são comparados um a um.

O filtro armazena o SSIM calculado de cada quadro.

A seguir, a descrição dos parâmetros aceitos.

stats_file, f

Se especificada, o filtro usa o arquivo indicado para salvar o SSIM de cada quadro individual. Quando o nome do arquivo é "-", os dados são enviados para a saída padrão.

O arquivo gerado quando stats_file é selecionada contém uma sequência de pares chave/valor no formato chave:valor para cada par de quadros comparado.

A seguir, a descrição de cada parâmetro exibido:

n

número sequencial do quadro de entrada, começando em 1

Y, U, V, R, G, B

SSIM dos quadros comparados para o componente especificado pelo sufixo.

All

SSIM dos quadros comparados para o quadro inteiro.

dB

O mesmo que o anterior, mas em representação em dB.

Este filtro também é compatível com as opções de framesync.

11.242.1 Exemplos

  • Por exemplo:
    movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
    [main][ref] ssim="stats_file=stats.log" [out]
    

Neste exemplo, o arquivo de entrada processado é comparado com o arquivo de referência ref_movie.mpg. O SSIM de cada quadro individual é armazenado em stats.log.

  • Outro exemplo com psnr e ssim ao mesmo tempo:

    ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
    
  • Outro exemplo com containers diferentes:

    ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
    

11.243 stereo3d

Converte entre diferentes formatos de imagem estereoscópica.

Os filtros aceitam as seguintes opções:

in

Define o formato de imagem estereoscópica da entrada.

Os valores disponíveis para os formatos de imagem de entrada são:

‘sbsl’

lado a lado paralelo (olho esquerdo à esquerda, olho direito à direita)

‘sbsr’

lado a lado com olhos cruzados (olho direito à esquerda, olho esquerdo à direita)

‘sbs2l’

lado a lado paralelo com metade da resolução de largura (olho esquerdo à esquerda, olho direito à direita)

‘sbs2r’

lado a lado com olhos cruzados e metade da resolução de largura (olho direito à esquerda, olho esquerdo à direita)

‘abl’ ‘tbl’

acima e abaixo (olho esquerdo acima, olho direito abaixo)

‘abr’ ‘tbr’

acima e abaixo (olho direito acima, olho esquerdo abaixo)

‘ab2l’ ‘tb2l’

acima e abaixo com metade da resolução de altura (olho esquerdo acima, olho direito abaixo)

‘ab2r’ ‘tb2r’

acima e abaixo com metade da resolução de altura (olho direito acima, olho esquerdo abaixo)

‘al’

quadros alternados (olho esquerdo primeiro, olho direito depois)

‘ar’

quadros alternados (olho direito primeiro, olho esquerdo depois)

‘irl’

linhas intercaladas (o olho esquerdo ocupa a linha superior, o olho direito começa na linha seguinte)

‘irr’

linhas intercaladas (o olho direito ocupa a linha superior, o olho esquerdo começa na linha seguinte)

‘icl’

colunas intercaladas, olho esquerdo primeiro

‘icr’

colunas intercaladas, olho direito primeiro

O valor padrão é ‘sbsl’.

out

Define o formato de imagem estereoscópica da saída.

‘sbsl’

lado a lado paralelo (olho esquerdo à esquerda, olho direito à direita)

‘sbsr’

lado a lado com olhos cruzados (olho direito à esquerda, olho esquerdo à direita)

‘sbs2l’

lado a lado paralelo com metade da resolução de largura (olho esquerdo à esquerda, olho direito à direita)

‘sbs2r’

lado a lado com olhos cruzados e metade da resolução de largura (olho direito à esquerda, olho esquerdo à direita)

‘abl’ ‘tbl’

acima e abaixo (olho esquerdo acima, olho direito abaixo)

‘abr’ ‘tbr’

acima e abaixo (olho direito acima, olho esquerdo abaixo)

‘ab2l’ ‘tb2l’

acima e abaixo com metade da resolução de altura (olho esquerdo acima, olho direito abaixo)

‘ab2r’ ‘tb2r’

acima e abaixo com metade da resolução de altura (olho direito acima, olho esquerdo abaixo)

‘al’

quadros alternados (olho esquerdo primeiro, olho direito depois)

‘ar’

quadros alternados (olho direito primeiro, olho esquerdo depois)

‘irl’

linhas intercaladas (o olho esquerdo ocupa a linha superior, o olho direito começa na linha seguinte)

‘irr’

linhas intercaladas (o olho direito ocupa a linha superior, o olho esquerdo começa na linha seguinte)

‘arbg’

anáglifo vermelho/azul em tons de cinza (filtro vermelho no olho esquerdo, filtro azul no olho direito)

‘argg’

anáglifo vermelho/verde em tons de cinza (filtro vermelho no olho esquerdo, filtro verde no olho direito)

‘arcg’

anáglifo vermelho/ciano em tons de cinza (filtro vermelho no olho esquerdo, filtro ciano no olho direito)

‘arch’

anáglifo vermelho/ciano semicolorido (filtro vermelho no olho esquerdo, filtro ciano no olho direito)

‘arcc’

anáglifo vermelho/ciano colorido (filtro vermelho no olho esquerdo, filtro ciano no olho direito)

‘arcd’

anáglifo vermelho/ciano colorido, otimizado com a projeção de mínimos quadrados de Dubois (filtro vermelho no olho esquerdo, filtro ciano no olho direito)

‘agmg’

anáglifo verde/magenta em tons de cinza (filtro verde no olho esquerdo, filtro magenta no olho direito)

‘agmh’

anáglifo verde/magenta semicolorido (filtro verde no olho esquerdo, filtro magenta no olho direito)

‘agmc’

anáglifo verde/magenta colorido (filtro verde no olho esquerdo, filtro magenta no olho direito)

‘agmd’

anáglifo verde/magenta colorido, otimizado com a projeção de mínimos quadrados de Dubois (filtro verde no olho esquerdo, filtro magenta no olho direito)

‘aybg’

anáglifo amarelo/azul em tons de cinza (filtro amarelo no olho esquerdo, filtro azul no olho direito)

‘aybh’

anáglifo amarelo/azul semicolorido (filtro amarelo no olho esquerdo, filtro azul no olho direito)

‘aybc’

anáglifo amarelo/azul colorido (filtro amarelo no olho esquerdo, filtro azul no olho direito)

‘aybd’

anáglifo amarelo/azul colorido, otimizado com a projeção de mínimos quadrados de Dubois (filtro amarelo no olho esquerdo, filtro azul no olho direito)

‘ml’

saída mono (somente o olho esquerdo)

‘mr’

saída mono (somente o olho direito)

‘chl’

tabuleiro de xadrez, olho esquerdo primeiro

‘chr’

tabuleiro de xadrez, olho direito primeiro

‘icl’

colunas intercaladas, olho esquerdo primeiro

‘icr’

colunas intercaladas, olho direito primeiro

‘hdmi’

empacotamento de quadros HDMI

O valor padrão é ‘arcd’.

11.243.1 Exemplos

  • Converte o vídeo de entrada de lado a lado em paralelo para anáglifo amarelo/azul dubois:

    stereo3d=sbsl:aybd
    
  • Converte o vídeo de entrada de cima para baixo (olho esquerdo em cima, olho direito embaixo) para lado a lado com cruzamento de olhos.

    stereo3d=abl:sbsr
    

11.244 streamselect, astreamselect

Seleciona fluxos de vídeo ou de áudio.

O filtro aceita as seguintes opções:

inputs

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

map

Define os índices de entrada a serem remapeados para as saídas.

11.244.1 Comandos

Os filtros streamselect e astreamselect aceitam os seguintes comandos:

map

Define os índices de entrada a serem remapeados para as saídas.

11.244.2 Exemplos

  • Seleciona o primeiro fluxo nos primeiros 5 segundos e o segundo fluxo no restante do tempo:

    sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
    
  • O mesmo que o exemplo acima, mas para áudio:

    asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
    

11.245 subtitles

Desenha legendas sobre o vídeo de entrada usando a biblioteca libass.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libass. Este filtro também requer uma compilação com libavcodec e libavformat para converter o arquivo de legendas informado para o formato de legendas ASS (Advanced Substation Alpha).

O filtro aceita as seguintes opções:

filename, f

Define o nome do arquivo de legendas a ser lido. Deve ser especificado.

original_size

Especifica o tamanho do vídeo original, o vídeo para o qual o arquivo ASS foi composto. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils. Devido a um erro de projeto na aritmética de proporção de aspecto do ASS, isso é necessário para dimensionar corretamente as fontes caso a proporção de aspecto tenha sido alterada.

fontsdir

Define um caminho de diretório contendo fontes que podem ser usadas pelo filtro. Essas fontes serão usadas além das que o provedor de fontes utilizar.

alpha

Processa o canal alfa; por padrão, o canal alfa não é alterado.

charenc

Define a codificação de caracteres de entrada das legendas. Apenas para o filtro subtitles. Só é útil se não for UTF-8.

stream_index, si

Define o índice do fluxo de legendas. Apenas para o filtro subtitles.

force_style

Sobrescreve o estilo padrão ou os parâmetros de informação do script das legendas. Aceita uma string contendo pares KEY=VALUE no formato de estilo ASS separados por ",".

wrap_unicode

Quebra as linhas de acordo com o Unicode Line Breaking Algorithm. A disponibilidade requer no mínimo a versão 0.17.0 do libass (ou LIBASS_VERSION 0x01600010) e que o libass tenha sido compilado com libunibreak.

A opção é habilitada por padrão, exceto para ASS nativo.

shaping

Define o mecanismo de shaping.

Os valores disponíveis são:

‘auto’

O mecanismo de shaping padrão do libass, que é o melhor disponível.

‘simple’

Um shaper rápido e independente de fonte, capaz de realizar apenas substituições.

‘complex’

Um shaper mais lento que usa OpenType para substituições e posicionamento. Necessário para renderizar corretamente escritas complexas como árabe, hebraico, devanágari e tailandês. Requer que o libass tenha sido compilado com HarfBuzz.

O padrão é auto.

Se a primeira chave não for especificada, presume-se que o primeiro valor especifica o nome do arquivo.

Por exemplo, para renderizar o arquivo sub.srt sobre o vídeo de entrada, use o comando:

subtitles=sub.srt

o que equivale a:

subtitles=filename=sub.srt

Para renderizar o fluxo de legendas padrão do arquivo video.mkv, use:

subtitles=video.mkv

Para renderizar o segundo fluxo de legendas desse arquivo, use:

subtitles=video.mkv:si=1

Para fazer o fluxo de legendas de sub.srt aparecer em DejaVu Serif azul com 80% de transparência, use:

subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'

11.246 super2xsai

Dimensiona a entrada em 2x e suaviza usando o algoritmo de redimensionamento de pixel art Super2xSaI (Scale and Interpolate).

Útil para ampliar imagens em pixel art sem reduzir a nitidez.

11.247 swaprect

Troca dois objetos retangulares no vídeo.

Este filtro aceita as seguintes opções:

w

Define a largura do objeto.

h

Define a altura do objeto.

x1

Define a coordenada x do primeiro retângulo.

y1

Define a coordenada y do primeiro retângulo.

x2

Define a coordenada x do segundo retângulo.

y2

Define a coordenada y do segundo retângulo.

Todas as expressões são avaliadas uma vez para cada quadro.

Todas as opções são expressões contendo as seguintes constantes:

w h

A largura e a altura da entrada.

a

o mesmo que w / h

sar

proporção de aspecto da amostra de entrada

dar

proporção de aspecto de exibição da entrada; é o mesmo que (w / h) * sar

n

O número do quadro de entrada, começando em 0.

t

A marca de tempo expressa em segundos. É NAN se a marca de tempo de entrada for desconhecida.

pos

a posição do quadro de entrada dentro do arquivo; NAN se desconhecida; obsoleto, não usar

11.247.1 Comandos

Este filtro aceita todas as opções acima como comandos.

11.248 swapuv

Troca os planos U e V.

11.249 tblend

Mescla quadros de vídeo sucessivos.

Consulte blend

11.250 telecine

Aplica o processo de telecine ao vídeo.

Este filtro aceita as seguintes opções:

first_field

‘top, t’

campo superior primeiro

‘bottom, b’

campo inferior primeiro. O valor padrão é top.

pattern

Uma string de números representando o padrão de pulldown que se deseja aplicar. O valor padrão é 23.

Some typical patterns:

NTSC output (30i):
27.5p: 32222
24p: 23 (classic)
24p: 2332 (preferred)
20p: 33
18p: 334
16p: 3444

PAL output (25i):
27.5p: 12222
24p: 222222222223 ("Euro pulldown")
16.67p: 33
16p: 33333334

11.251 thistogram

Calcula e desenha um histograma de distribuição de cores do vídeo de entrada ao longo do tempo.

Ao contrário do filtro de vídeo histogram, que mostra apenas o histograma de um único quadro de entrada em um determinado instante, este filtro também mostra os histogramas passados do número de quadros definido pela opção width.

O histograma calculado é uma representação da distribuição dos componentes de cor em uma imagem.

O filtro aceita as seguintes opções:

width, w

Define a largura da saída de um único componente de cor. O valor padrão é 0. O valor 0 significa que a largura será obtida do vídeo de entrada. Isso também define o número de histogramas passados a manter. O intervalo permitido é [0, 8192].

display_mode, d

Define o modo de exibição. Aceita os seguintes valores:

‘stack’

Os gráficos de cada componente de cor são colocados um abaixo do outro.

‘parade’

Os gráficos de cada componente de cor são colocados lado a lado.

‘overlay’

Apresenta informação idêntica à de parade, exceto que os gráficos que representam os componentes de cor são sobrepostos diretamente uns sobre os outros.

O padrão é stack.

levels_mode, m

Define o modo. Pode ser linear ou logarithmic. O padrão é linear.

components, c

Define quais componentes de cor exibir. O padrão é 7.

bgopacity, b

Define a opacidade do plano de fundo. O padrão é 0.9.

envelope, e

Exibe a envoltória. Desabilitada por padrão.

ecolor, ec

Define a cor da envoltória. O padrão é gold.

slide

Define o modo de deslizamento.

Os valores disponíveis para slide são:

‘frame’

Desenha um novo quadro quando a borda direita é atingida.

‘replace’

Substitui as colunas antigas por novas.

‘scroll’

Rola da direita para a esquerda.

‘rscroll’

Rola da esquerda para a direita.

‘picture’

Desenha uma única imagem.

O padrão é replace.

11.252 threshold

Aplica um efeito de limiar ao fluxo de vídeo.

Este filtro precisa de quatro fluxos de vídeo para realizar a limiarização. O primeiro fluxo é o fluxo que está sendo filtrado. O segundo fluxo contém os valores de limiar, o terceiro contém os valores mínimos e, por último, o quarto contém os valores máximos.

O filtro aceita a seguinte opção:

planes

Define quais planos serão processados; os planos não processados serão copiados. Com o valor padrão 0xf, todos os planos são processados.

Por exemplo, se o valor do componente de pixel do primeiro fluxo for menor que o valor de limiar do componente de pixel do 2º fluxo de limiar, o valor do terceiro fluxo será escolhido; caso contrário, será escolhido o valor do componente de pixel do quarto fluxo.

Usando o filtro de fonte color, é possível realizar vários tipos de limiarização:

11.252.1 Comandos

Este filtro aceita todas as opções como comandos.

11.252.2 Exemplos

  • Limiar binário, usando a cor cinza como limiar:

    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
    
  • Limiar binário invertido, usando a cor cinza como limiar:

    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
    
  • Limiar binário de truncamento, usando a cor cinza como limiar:

    ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
    
  • Limiar para zero, usando a cor cinza como limiar:

    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
    
  • Limiar para zero invertido, usando a cor cinza como limiar:

    ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
    

11.253 thumbnail

Seleciona o quadro mais representativo em uma dada sequência de quadros consecutivos.

O filtro aceita as seguintes opções:

n

Define o tamanho do lote de quadros a analisar; em um conjunto de n quadros, o filtro escolhe um deles e, em seguida, processa o próximo lote de n quadros até o final. O padrão é 100.

log

Define o nível de log para exibir as estatísticas do quadro escolhido. O padrão é info.

Como o filtro mantém o controle de toda a sequência de quadros, um valor de n maior resulta em maior uso de memória; portanto, não é recomendável usar um valor alto.

11.253.1 Exemplos

  • Extrai uma imagem a cada 50 quadros:

    thumbnail=50
    
  • Exemplo completo de criação de miniatura com ffmpeg:

    ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
    

11.254 tile

Organiza vários quadros sucessivos em mosaico.

O filtro untile pode fazer o inverso.

O filtro aceita as seguintes opções:

layout

Define o tamanho da grade no formato COLUMNSxROWS. O intervalo vai até UINT_MAX células. O padrão é 6x5.

nb_frames

Define o número máximo de quadros a renderizar na área dada. Deve ser menor ou igual a wxh. O valor padrão é 0, o que significa que toda a área será usada.

margin

Define a margem externa em pixels. O intervalo vai de 0 a 1024. O padrão é 0.

padding

Define a espessura da borda interna (ou seja, o número de pixels entre os quadros). Para opções de preenchimento mais avançadas (como usar valores diferentes para cada borda), consulte o filtro de vídeo pad. O intervalo vai de 0 a 1024. O padrão é 0.

color

Especifica a cor da área não utilizada. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils. O valor padrão de color é "black".

overlap

Define o número de quadros a sobrepor ao organizar vários quadros sucessivos em mosaico. O valor deve estar entre 0 e nb_frames - 1. O padrão é 0.

init_padding

Define o número de quadros que ficam vazios inicialmente antes da exibição do primeiro quadro de saída. Isso controla quão rápido se obtém o primeiro quadro de saída. O valor deve estar entre 0 e nb_frames - 1. O padrão é 0.

11.254.1 Exemplos

  • Produz mosaicos PNG 8x8 de todos os keyframes (-skip_frame nokey) de um filme:
    ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -fps_mode passthrough keyframes%03d.png
    

A opção -fps_mode passthrough é necessária para evitar que o ffmpeg duplique cada quadro de saída para se ajustar à taxa de quadros originalmente detectada.

  • Exibe 5 imagens em uma área de 3x2 quadros, com 7 pixels entre elas e 2 pixels de margem inicial, misturando opções na forma simples e nomeada:
    tile=3x2:nb_frames=5:padding=7:margin=2
    

11.255 tiltandshift

Aplica o efeito tilt-and-shift.

O que acontece quando invertemos o tempo e o espaço?

Normalmente, um vídeo é composto por vários quadros que representam um instante de tempo diferente e mostram uma cena que evolui no espaço capturado pelo quadro. Este filtro é o antípoda desse conceito, inspirando-se na fotografia tilt-shift.

Um quadro filtrado contém toda a linha do tempo dos eventos que compõem a sequência, o que é obtido colocando uma fatia de pixels de cada quadro em um único quadro. No entanto, como não existem quadros de largura infinita, isso é feito dentro dos limites da largura do quadro de entrada, e o vídeo é recomposto deslocando uma coluna a cada quadro subsequente. Para mapear o espaço no tempo, o filtro também inclina cada quadro de entrada, de modo que o movimento seja preservado. Isso é obtido selecionando progressivamente uma coluna diferente de cada quadro de entrada.

O resultado final é uma espécie de paralaxe invertida, de modo que objetos distantes se movem muito mais rápido que os que estão em primeiro plano. As condições ideais para este efeito de vídeo ocorrem quando há muito pouco movimento e o plano de fundo é estático, ou quando há muito movimento e uma profundidade de campo muito ampla (por exemplo, um panorama amplo enquanto se viaja de trem).

O filtro aceita os seguintes parâmetros:

tilt

Inclina o vídeo enquanto desloca (padrão). Quando não definido, o vídeo desliza uma imagem estática, composta pela primeira coluna de cada quadro.

start

O que fazer no início da filtragem (ver abaixo).

end

O que fazer no final da filtragem (ver abaixo).

hold

Quantas colunas devem passar antes do início da filtragem.

pad

Quantas colunas devem ser inseridas antes do final da filtragem.

Normalmente, o filtro desloca e inclina a partir do primeiríssimo quadro e para quando o último é recebido. No entanto, antes do início da filtragem, o vídeo normal pode ser preservado, de modo que o efeito seja deslocado lentamente até seu lugar. Da mesma forma, o último quadro de vídeo pode ser reconstruído no final. Alternativamente, é possível simplesmente começar e terminar com preto.

‘none’

A filtragem começa imediatamente e termina quando o último quadro é recebido.

‘frame’

Os primeiros quadros, ou o último quadro, são mantidos intactos durante o processamento.

‘black’

Preto é usado como preenchimento no início ou no final da filtragem.

11.256 tinterlace

Realiza vários tipos de entrelaçamento temporal de campos.

Os quadros são contados a partir de 1; portanto, o primeiro quadro de entrada é considerado ímpar.

O filtro aceita as seguintes opções:

mode

Especifica o modo de entrelaçamento. Esta opção também pode ser especificada apenas com o valor. Veja abaixo a lista de valores para esta opção.

Os valores disponíveis são:

‘merge, 0’

Move os quadros ímpares para o campo superior e os pares para o campo inferior, gerando um quadro com o dobro da altura à metade da taxa de quadros.

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444

‘drop_even, 1’

Emite apenas os quadros ímpares; os quadros pares são descartados, gerando um quadro com altura inalterada à metade da taxa de quadros.

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
11111                           33333
11111                           33333
11111                           33333

‘drop_odd, 2’

Emite apenas os quadros pares; os quadros ímpares são descartados, gerando um quadro com altura inalterada à metade da taxa de quadros.

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
                22222                           44444
                22222                           44444
                22222                           44444
                22222                           44444

‘pad, 3’

Expande cada quadro para a altura total, mas preenche linhas alternadas com preto, gerando um quadro com o dobro da altura na mesma taxa de quadros de entrada.

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444

‘interleave_top, 4’

Intercala o campo superior dos quadros ímpares com o campo inferior dos quadros pares, gerando um quadro com altura inalterada à metade da taxa de quadros.

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444

‘interleave_bottom, 5’

Intercala o campo inferior dos quadros ímpares com o campo superior dos quadros pares, gerando um quadro com altura inalterada à metade da taxa de quadros.

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444

Output:
22222                           44444
11111                           33333
22222                           44444
11111                           33333

‘interlacex2, 6’

Dobra a taxa de quadros mantendo a altura inalterada. Os quadros inseridos contêm, cada um, o segundo campo temporal do quadro de entrada anterior e o primeiro campo temporal do próximo quadro de entrada. Este modo depende da flag top_field_first. Útil para telas de vídeo entrelaçado sem sincronização de campos.

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
 11111           22222           33333           44444
11111           22222           33333           44444
 11111           22222           33333           44444

Output:
11111   22222   22222   33333   33333   44444   44444
 11111   11111   22222   22222   33333   33333   44444
11111   22222   22222   33333   33333   44444   44444
 11111   11111   22222   22222   33333   33333   44444

‘mergex2, 7’

Move os quadros ímpares para o campo superior e os pares para o campo inferior, gerando um quadro com o dobro da altura na mesma taxa de quadros.

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444

Os valores numéricos são obsoletos, mas são aceitos por motivos de compatibilidade com versões anteriores.

O modo padrão é merge.

flags

Especifica as flags que influenciam o processo do filtro.

O valor disponível para flags é:

low_pass_filter, vlpf

Habilita a filtragem passa-baixa vertical linear no filtro. A filtragem passa-baixa vertical é necessária ao criar um destino entrelaçado a partir de uma fonte progressiva que contém detalhes verticais de alta frequência. A filtragem reduz a ’tremulação’ do entrelaçamento e o padrão moiré.

complex_filter, cvlpf

Habilita a filtragem passa-baixa vertical complexa. Isso reduz um pouco menos a ’tremulação’ do entrelaçamento e o padrão moiré, mas preserva melhor os detalhes e a sensação subjetiva de nitidez.

bypass_il

Ignora os quadros já entrelaçados, ajustando apenas a taxa de quadros.

A filtragem passa-baixa vertical e a omissão de quadros já entrelaçados só podem ser habilitadas para os modos interleave_top e interleave_bottom.

11.257 tmedian

Escolhe os pixels medianos de vários quadros de vídeo de entrada sucessivos.

O filtro aceita as seguintes opções:

radius

Define o raio do filtro de mediana. O padrão é 1. O intervalo permitido é de 1 a 127.

planes

Define quais planos filtrar. O valor padrão é 15, com o qual todos os planos são processados.

percentile

Define o percentil da mediana. O valor padrão é 0.5. Com o valor padrão de 0.5, sempre são escolhidos os valores medianos, enquanto 0 escolhe os valores mínimos e 1 os máximos.

11.257.1 Comandos

Este filtro aceita todas as opções acima como comandos, exceto a opção radius.

11.258 tmidequalizer

Aplica o efeito Temporal Midway Video Equalization.

O Midway Video Equalization ajusta uma sequência de quadros de vídeo para que tenham o mesmo histograma, mantendo ao máximo possível sua dinâmica. É útil, por exemplo, para equalizar as exposições de uma sequência de quadros de vídeo.

Este filtro aceita a seguinte opção:

radius

Define o raio de filtragem. O padrão é 5. O intervalo permitido é de 1 a 127.

sigma

Define o sigma de filtragem. O padrão é 0.5. Isso controla a intensidade da filtragem. Definir esta opção como 0 efetivamente não faz nada.

planes

Define quais planos processar. O padrão é 15, que corresponde a todos os planos disponíveis.

11.259 tmix

Mescla quadros de vídeo sucessivos.

A seguir, a descrição das opções aceitas.

frames

O número de quadros sucessivos a mesclar. Se não especificado, o padrão é 3.

weights

Especifica o peso de cada quadro de vídeo de entrada. Cada peso é separado por espaço. Se o número de pesos for menor que o número de quadros, o último peso especificado será usado para todos os pesos restantes não definidos.

scale

Especifica a escala; se definida, será multiplicada pela soma de cada peso multiplicado pelos valores de pixel para obter o valor de pixel de destino final. Por padrão, a escala é ajustada automaticamente à soma dos pesos.

planes

Define quais planos filtrar. O padrão é todos. O intervalo permitido é de 0 a 15.

11.259.1 Exemplos

  • Calcular a média de 7 quadros sucessivos:

    tmix=frames=7:weights="1 1 1 1 1 1 1"
    
  • Aplicar uma convolução temporal simples:

    tmix=frames=3:weights="-1 3 -1"
    
  • Semelhante ao anterior, mas mostrando apenas as diferenças temporais:

    tmix=frames=3:weights="-1 2 -1":scale=1
    

11.259.2 Comandos

Este filtro é compatível com os seguintes comandos:

weights scale planes

A sintaxe é a mesma da opção de mesmo nome.

11.260 tonemap

Aplica mapeamento de tons a cores de diferentes faixas dinâmicas.

Este filtro espera dados em ponto flutuante de precisão simples, pois precisa operar sobre valores fora do intervalo (e pode gerá-los na saída). É necessário outro filtro, como zscale, para converter o quadro resultante em um formato utilizável.

Os algoritmos de mapeamento de tons implementados funcionam apenas com luz linear, portanto os dados de entrada devem ser linearizados previamente (e, se possível, corretamente rotulados).

ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT

11.260.1 Opções

O filtro aceita as seguintes opções.

tonemap

Define o algoritmo de mapeamento de tons a ser usado.

Os valores possíveis são:

none

Não aplica nenhum mapeamento de tons; apenas dessatura os pixels superexpostos.

clip

Faz um recorte abrupto (hard-clip) de quaisquer valores fora do intervalo. Use-o para obter precisão de cor perfeita nos valores dentro do intervalo, embora distorça os valores fora do intervalo.

linear

Estica toda a gama de referência para um múltiplo linear da tela.

gamma

Ajusta uma função de transferência logarítmica entre as curvas de tom.

reinhard

Preserva o brilho geral da imagem com uma curva simples, usando contraste não linear, o que resulta em achatamento de detalhes e redução da precisão de cor.

hable

Preserva os detalhes escuros e claros melhor que reinhard, ao custo de escurecer ligeiramente tudo. Use-o quando a preservação de detalhes for mais importante que a precisão de cor e brilho.

mobius

Mapeia suavemente os valores fora do intervalo, preservando ao máximo o contraste e as cores do material dentro do intervalo. Use-o quando a precisão de cor for mais importante que a preservação de detalhes.

O padrão é none.

param

Ajusta o algoritmo de mapeamento de tons.

Isso afeta os seguintes algoritmos:

none

Ignorado.

linear

Especifica o fator de escala a usar durante o esticamento. O padrão é 1.0.

gamma

Especifica o expoente da função. O padrão é 1.8.

clip

Especifica um coeficiente linear extra a multiplicar pelo sinal antes do recorte. O padrão é 1.0.

reinhard

Especifica o coeficiente de contraste local no pico da tela. O padrão é 0.5, o que significa que os valores dentro da gama terão cerca de metade do brilho em relação ao recorte.

hable

Ignorado.

mobius

Especifica o ponto de transição da transformação linear para a mobius. Todo valor abaixo desse ponto é garantidamente mapeado 1:1. Quanto maior o valor, mais preciso será o resultado, ao custo de perder detalhes claros. O padrão é 0.3, que, devido à inclinação inicial acentuada, ainda preserva com bastante precisão as cores dentro do intervalo.

desat

Aplica dessaturação aos realces que excedem esse nível de brilho. Quanto maior o parâmetro, mais informação de cor será preservada. Esse ajuste ajuda a evitar cores estouradas de forma antinatural nos realces extremos, fazendo-as (suavemente) tender ao branco. Isso torna as imagens mais naturais, ao custo de reduzir a informação sobre as cores fora do intervalo.

O padrão de 2.0 é um tanto conservador e, na prática, costuma se aplicar apenas a céus ou superfícies diretamente iluminadas pelo sol. Um valor de 0.0 desativa esta opção.

Esta opção só funciona se o quadro de entrada tiver uma tag de cor compatível.

peak

Substitui o pico de sinal/nominal/referência por este valor. Útil quando a informação de pico incorporada nos metadados de exibição não é confiável, ou ao mapear tons de uma faixa mais baixa para uma mais alta.

11.261 tpad

Adiciona preenchimento temporal aos quadros de vídeo.

O filtro aceita as seguintes opções:

start

Especifica o número de quadros de atraso antes do fluxo de vídeo de entrada. O padrão é 0.

stop

Especifica o número de quadros de preenchimento após o fluxo de vídeo de entrada. Defina como -1 para preencher indefinidamente. O padrão é 0.

start_mode

Define o tipo de quadros adicionados ao início do fluxo. Pode ser add ou clone. Com add, são adicionados quadros de cor sólida. Com clone, os quadros adicionados são cópias do primeiro quadro. O padrão é add.

stop_mode

Define o tipo de quadros adicionados ao final do fluxo. Pode ser add ou clone. Com add, são adicionados quadros de cor sólida. Com clone, os quadros adicionados são cópias do último quadro. O padrão é add.

start_duration, stop_duration

Especifica a duração do atraso inicial/final. Consulte a (ffmpeg-utils)seção Time duration do manual ffmpeg-utils(1) para a sintaxe aceita. Essas opções têm prioridade sobre start e stop. O padrão é 0.

color

Especifica a cor da área de preenchimento. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Color" do manual ffmpeg-utils.

O valor padrão de color é "black".

11.262 transpose

Transpõe linhas e colunas no vídeo de entrada e, opcionalmente, o inverte.

Aceita os seguintes parâmetros:

dir

Especifica a direção da transposição.

Pode assumir os seguintes valores:

‘0, 4, cclock_flip’

Gira 90 graus no sentido anti-horário e inverte verticalmente (padrão), ou seja:

L.R     L.l
. . ->  . .
l.r     R.r

‘1, 5, clock’

Gira 90 graus no sentido horário, ou seja:

L.R     l.L
. . ->  . .
l.r     r.R

‘2, 6, cclock’

Gira 90 graus no sentido anti-horário, ou seja:

L.R     R.r
. . ->  . .
l.r     L.l

‘3, 7, clock_flip’

Gira 90 graus no sentido horário e inverte verticalmente, ou seja:

L.R     r.R
. . ->  . .
l.r     l.L

Para valores entre 4 e 7, a transposição só é feita se a geometria do vídeo de entrada for retrato, e não paisagem. Esses valores são obsoletos; em vez disso, deve-se usar a opção passthrough.

Os valores numéricos são obsoletos e devem ser abandonados em favor de constantes simbólicas.

passthrough

Não aplica a transposição se a geometria de entrada corresponder à especificada pelo valor indicado. Aceita os seguintes valores:

‘none’

Aplica sempre a transposição.

‘portrait’

Preserva a geometria retrato (quando altura >= largura).

‘landscape’

Preserva a geometria paisagem (quando largura >= altura).

O valor padrão é none.

Por exemplo, para girar 90 graus no sentido horário e preservar o layout retrato:

transpose=dir=1:passthrough=portrait

O comando acima também pode ser especificado como:

transpose=1:portrait

11.263 trim

Apara a entrada de forma que a saída contenha uma única subparte contínua da entrada.

Aceita os seguintes parâmetros:

start

Especifica o instante de início da seção mantida, ou seja, o quadro com a marca de tempo start será o primeiro quadro da saída.

end

Especifica o instante do primeiro quadro que será descartado, ou seja, o quadro imediatamente anterior ao que tem a marca de tempo end será o último quadro da saída.

start_pts

É o mesmo que start, exceto que esta opção define a marca de tempo inicial em unidades de timebase em vez de segundos.

end_pts

É o mesmo que end, exceto que esta opção define a marca de tempo final em unidades de timebase em vez de segundos.

duration

A duração máxima da saída, em segundos.

start_frame

O número do primeiro quadro que deve ser repassado à saída.

end_frame

O número do primeiro quadro que deve ser descartado.

start, end e duration são expressos como especificações de duração de tempo; consulte a (ffmpeg-utils)seção Time duration do manual ffmpeg-utils(1) para a sintaxe aceita.

Observe que os dois primeiros pares de opções start/end e a opção duration consideram a marca de tempo do quadro, enquanto as variantes _frame simplesmente contam os quadros que passam pelo filtro. Observe também que este filtro não modifica as marcas de tempo. Se desejar que as marcas de tempo de saída comecem em zero, insira um filtro setpts após o filtro trim.

Se várias opções start ou end forem definidas, este filtro tenta ser guloso e manter todos os quadros que correspondam a pelo menos uma das restrições especificadas. Para manter apenas a parte que corresponde a todas as restrições ao mesmo tempo, encadeie vários filtros trim.

Os padrões são definidos de forma que toda a entrada seja mantida. Assim, é possível, por exemplo, definir apenas os valores de end para manter tudo antes do instante especificado.

Exemplos:

  • Descartar tudo, exceto o segundo minuto da entrada:

    ffmpeg -i INPUT -vf trim=60:120
    
  • Manter apenas o primeiro segundo:

    ffmpeg -i INPUT -vf trim=duration=1
    

11.264 unpremultiply

Aplica o efeito de desmultiplicação de alfa (unpremultiply) ao fluxo de vídeo de entrada, usando o primeiro plano do segundo fluxo como alfa.

Ambos os fluxos devem ter as mesmas dimensões e o mesmo pixel format.

O filtro aceita a seguinte opção:

planes

Define quais planos serão processados; os planos não processados serão copiados. Com o valor padrão 0xf, todos os planos serão processados.

Se o formato tiver 1 ou 2 componentes, luma é o bit 0. Se o formato tiver 3 ou 4 componentes: em formatos RGB, o bit 0 é verde, o bit 1 é azul e o bit 2 é vermelho; em formatos YUV, o bit 0 é luma, o bit 1 é croma-U e o bit 2 é croma-V. Se presente, o canal alfa é sempre o último bit.

inplace

Não exige uma segunda entrada para o processamento; em vez disso, usa o plano alfa do próprio fluxo de entrada.

11.265 unsharp

Aumenta a nitidez ou desfoca o vídeo de entrada.

Aceita os seguintes parâmetros:

luma_msize_x, lx

Define o tamanho horizontal da matriz de luma. Deve ser um inteiro ímpar entre 3 e 23. O valor padrão é 5.

luma_msize_y, ly

Define o tamanho vertical da matriz de luma. Deve ser um inteiro ímpar entre 3 e 23. O valor padrão é 5.

luma_amount, la

Define a intensidade do efeito sobre a luma. Deve ser um número de ponto flutuante; valores razoáveis situam-se entre -1.5 e 1.5.

Valores negativos desfocam o vídeo de entrada, valores positivos aumentam a nitidez, e um valor zero desativa o efeito.

O valor padrão é 1.0.

chroma_msize_x, cx

Define o tamanho horizontal da matriz de croma. Deve ser um inteiro ímpar entre 3 e 23. O valor padrão é 5.

chroma_msize_y, cy

Define o tamanho vertical da matriz de croma. Deve ser um inteiro ímpar entre 3 e 23. O valor padrão é 5.

chroma_amount, ca

Define a intensidade do efeito sobre o croma. Deve ser um número de ponto flutuante; valores razoáveis situam-se entre -1.5 e 1.5.

Valores negativos desfocam o vídeo de entrada, valores positivos aumentam a nitidez, e um valor zero desativa o efeito.

O valor padrão é 0.0.

alpha_msize_x, ax

Define o tamanho horizontal da matriz alfa. Deve ser um inteiro ímpar entre 3 e 23. O valor padrão é 5.

alpha_msize_y, ay

Define o tamanho vertical da matriz alfa. Deve ser um inteiro ímpar entre 3 e 23. O valor padrão é 5.

alpha_amount, aa

Define a intensidade do efeito sobre o alfa. Deve ser um número de ponto flutuante; valores razoáveis situam-se entre -1.5 e 1.5.

Valores negativos desfocam o vídeo de entrada, valores positivos aumentam a nitidez, e um valor zero desativa o efeito.

O valor padrão é 0.0.

Todos os parâmetros são opcionais, e o padrão equivale à string ’5:5:1.0:5:5:0.0’.

11.265.1 Exemplos

  • Aplicar um forte efeito de nitidez sobre a luma:

    unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
    
  • Aplicar um forte desfoque nos parâmetros de luma e croma:

    unsharp=7:7:-2:7:7:-2
    

11.266 untile

Decompõe um vídeo composto por imagens em mosaico (tiles) nas imagens individuais que o formam.

A taxa de quadros do vídeo de saída é a taxa de quadros do vídeo de entrada multiplicada pelo número de blocos (tiles).

Este filtro faz o inverso de tile.

O filtro aceita as seguintes opções:

layout

Define o tamanho da grade (ou seja, o número de linhas e colunas). Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils.

11.266.1 Exemplos

  • Produzir um vídeo de 1 segundo a partir de um arquivo de imagem estática composto por 25 quadros empilhados verticalmente, como um rolo de filme analógico:
    ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
    

11.267 uspp

Aplica um filtro de pós-processamento ultralento/simples que comprime e descomprime a imagem em vários deslocamentos (ou, no caso do nível de qualidade 8, em todos) e calcula a média dos resultados.

A diferença em relação ao comportamento de spp é que o uspp de fato codifica e decodifica cada caso com o Snow do libavcodec, enquanto o spp usa uma DCT 8x8 intra simplificada, semelhante à do MJPEG.

Este filtro não está disponível nas versões do ffmpeg entre 5.0 e 6.0.

O filtro aceita as seguintes opções:

quality

Define a qualidade. Esta opção define o número de níveis para o cálculo da média. Aceita um número inteiro no intervalo de 0 a 8. Se definido como 0, o filtro não terá efeito. Um valor de 8 significa a maior qualidade. A cada incremento desse valor, a velocidade cai por um fator de aproximadamente 2. O valor padrão é 3.

qp

Força um parâmetro de quantização constante. Se não for definido, o filtro usará o QP do fluxo de vídeo (se disponível).

codec

Usa o codec especificado em vez de snow.

11.268 v360

Converte vídeos de 360 graus entre vários formatos.

O filtro aceita as seguintes opções:

input output

Define o formato do vídeo de entrada/saída.

Formatos disponíveis:

‘e’ ‘equirect’

Projeção equirretangular.

‘c3x2’ ‘c6x1’ ‘c1x6’

Cubemap com layout 3x2/6x1/1x6.

Opções específicas do formato:

in_pad out_pad

Define a proporção de preenchimento do cubemap de entrada/saída. Valores em decimais.

Valores de exemplo:

‘0’

Sem preenchimento.

‘0.01’

1% da face é preenchimento. Por exemplo, com resolução de 1920x1280, o tamanho da face seria 640x640 e o preenchimento seria de 3 pixels de cada lado. (640 * 0.01 = 6 pixels)

O valor padrão é ‘ 0’. O valor máximo é ‘ 0.1’.

fin_pad fout_pad

Define o preenchimento fixo do cubemap de entrada/saída. Valores em pixels.

O valor padrão é ‘ 0’. Se for maior que zero, substitui as demais opções de preenchimento.

in_forder out_forder

Define a ordem das faces do cubemap de entrada/saída. Escolha uma direção para cada posição.

Designação das direções:

‘r’

direita

‘l’

esquerda

‘u’

cima

‘d’

baixo

‘f’

frente

‘b’

trás

O valor padrão é ‘ rludfb’.

in_frot out_frot

Define a rotação das faces do cubemap de entrada/saída. Escolha um ângulo para cada posição.

Designação dos ângulos:

‘0’

0 graus no sentido horário

‘1’

90 graus no sentido horário

‘2’

180 graus no sentido horário

‘3’

270 graus no sentido horário

O valor padrão é ‘ 000000’.

‘eac’

Cubemap equiangular (Equi-Angular Cubemap).

‘flat’ ‘gnomonic’ ‘rectilinear’

Vídeo comum.

Opções específicas do formato:

h_fov v_fov d_fov

Define o campo de visão horizontal/vertical/diagonal de saída. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

ih_fov iv_fov id_fov

Define o campo de visão horizontal/vertical/diagonal de entrada. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

‘dfisheye’

Fisheye duplo.

Opções específicas do formato:

h_fov v_fov d_fov

Define o campo de visão horizontal/vertical/diagonal de saída. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

ih_fov iv_fov id_fov

Define o campo de visão horizontal/vertical/diagonal de entrada. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

‘barrel’ ‘fb’ ‘barrelsplit’

Formatos 360 do Facebook.

‘sg’

Formato estereográfico.

Opções específicas do formato:

h_fov v_fov d_fov

Define o campo de visão horizontal/vertical/diagonal de saída. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

ih_fov iv_fov id_fov

Define o campo de visão horizontal/vertical/diagonal de entrada. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

‘mercator’

Formato de Mercator.

‘ball’

Formato ball (bola), que gera distorção significativa na parte de trás.

‘hammer’

Formato de projeção cartográfica de Hammer-Aitoff.

‘sinusoidal’

Formato de projeção cartográfica sinusoidal.

‘fisheye’

Projeção fisheye.

Opções específicas do formato:

h_fov v_fov d_fov

Define o campo de visão horizontal/vertical/diagonal de saída. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

ih_fov iv_fov id_fov

Define o campo de visão horizontal/vertical/diagonal de entrada. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

‘pannini’

Projeção de Pannini.

Opções específicas do formato:

h_fov

Define o parâmetro de Pannini de saída.

ih_fov

Define o parâmetro de Pannini de entrada.

‘cylindrical’

Projeção cilíndrica.

Opções específicas do formato:

h_fov v_fov d_fov

Define o campo de visão horizontal/vertical/diagonal de saída. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

ih_fov iv_fov id_fov

Define o campo de visão horizontal/vertical/diagonal de entrada. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

‘perspective’

Projeção em perspectiva. (somente saída)

Opções específicas do formato:

v_fov

Define o parâmetro de perspectiva.

‘tetrahedron’

Projeção de tetraedro.

‘tsp’

Projeção de pirâmide quadrangular truncada.

‘he’ ‘hequirect’

Projeção semiequirretangular.

‘equisolid’

Formato equissólido (equisolid).

Opções específicas do formato:

h_fov v_fov d_fov

Define o campo de visão horizontal/vertical/diagonal de saída. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

ih_fov iv_fov id_fov

Define o campo de visão horizontal/vertical/diagonal de entrada. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

‘og’

Formato ortográfico.

Opções específicas do formato:

h_fov v_fov d_fov

Define o campo de visão horizontal/vertical/diagonal de saída. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

ih_fov iv_fov id_fov

Define o campo de visão horizontal/vertical/diagonal de entrada. Valores em graus.

Se o campo de visão diagonal for definido, ele substitui os campos de visão horizontal e vertical.

‘octahedron’

Projeção de octaedro.

‘cylindricalea’

Projeção cilíndrica de área equivalente.

interp

Define o método de interpolação.
Nota: métodos de interpolação mais complexos exigem muito mais memória para executar.

Métodos disponíveis:

‘near’ ‘nearest’

Vizinho mais próximo.

‘line’ ‘linear’

Interpolação bilinear.

‘lagrange9’

Interpolação Lagrange9.

‘cube’ ‘cubic’

Interpolação bicúbica.

‘lanc’ ‘lanczos’

Interpolação de Lanczos.

‘sp16’ ‘spline16’

Interpolação Spline16.

‘gauss’ ‘gaussian’

Interpolação gaussiana.

‘mitchell’

Interpolação de Mitchell.

O valor padrão é ‘ line’.

w h

Define a resolução do vídeo de saída.

A resolução padrão depende do formato.

in_stereo out_stereo

Define o formato estéreo de entrada/saída.

‘2d’

2D mono

‘sbs’

Lado a lado

‘tb’

Topo e base

O valor padrão é ‘ 2d’ para os formatos de entrada e saída.

yaw pitch roll

Define a rotação do vídeo de saída. Valores em graus.

rorder

Define a ordem de rotação do vídeo de saída. Escolha um item para cada posição.

‘y, Y’

yaw

‘p, P’

pitch

‘r, R’

roll

O valor padrão é ‘ ypr’.

h_flip v_flip d_flip

Inverte o vídeo de saída horizontalmente (troca esquerda-direita)/verticalmente (troca cima-baixo)/em profundidade (troca trás-frente). Valores booleanos.

ih_flip iv_flip

Define se o vídeo de entrada está invertido horizontal/verticalmente. Valores booleanos.

in_trans

Define se o vídeo de entrada está transposto. Valor booleano; desativado por padrão.

out_trans

Define se o vídeo de saída precisa ser transposto. Valor booleano; desativado por padrão.

h_offset v_offset

Define o deslocamento fora de eixo horizontal/vertical de saída. O padrão é 0. O intervalo permitido vai de -1 a 1.

alpha_mask

Cria uma máscara no plano alfa para todos os pixels não mapeados, marcando-os como totalmente transparentes. Valor booleano; desativado por padrão.

reset_rot

Reinicia a rotação do vídeo de saída. Valor booleano; desativado por padrão.

11.268.1 Exemplos

  • Converter vídeo equirretangular em cubemap com layout 3x2 e 1% de preenchimento usando interpolação bicúbica:

    ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
    
  • Extrair a vista traseira do Equi-Angular Cubemap:

    ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
    
  • Converter um Equi-Angular Cubemap transposto e invertido horizontalmente no formato estéreo lado a lado para o formato estéreo superior-inferior equirretangular:

    v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
    

11.268.2 Comandos

Este filtro admite um subconjunto das opções acima como comandos.

11.269 vaguedenoiser

Aplica um removedor de ruído baseado em wavelet.

Transforma cada quadro do vídeo de entrada para o domínio wavelet, usando Cohen-Daubechies-Feauveau 9/7. Em seguida, aplica alguma filtragem aos coeficientes obtidos. Depois, realiza uma transformada wavelet inversa. Graças às propriedades das wavelets, o resultado deve ficar bem suavizado e com ruído reduzido, sem borrar os detalhes da imagem.

Este filtro aceita as seguintes opções:

threshold

A intensidade da filtragem. Quanto maior, mais filtrado o vídeo ficará. O processamento por limiar rígido pode usar um limiar mais alto que o processamento por limiar suave antes que o vídeo pareça superfiltrado. O valor padrão é 2.

method

O método de filtragem que o filtro usará.

Aceita os seguintes valores:

‘hard’

Todos os valores abaixo do limiar serão zerados.

‘soft’

Todos os valores abaixo do limiar serão zerados. Todos os valores acima serão reduzidos pelo limiar.

‘garrote’

Escala ou anula coeficientes - posição intermediária entre uma limiarização (mais) suave e (menos) rígida.

O padrão é garrote.

nsteps

Número de vezes que a wavelet decompõe a imagem. A imagem não pode ser decomposta além de um determinado ponto (tipicamente, 8 para um quadro de 640x480, já que 2^9 = 512 > 480). Os valores válidos são inteiros entre 1 e 32. O valor padrão é 6.

percent

Proporção da redução de ruído completa (redução limitada dos coeficientes), de 0 a 100. O valor padrão é 85.

planes

Uma lista dos planos a processar. Por padrão, todos os planos são processados.

type

O tipo de limiar que o filtro usará.

Aceita os seguintes valores:

‘universal’

O limiar usado é o mesmo para todas as decomposições.

‘bayes’

O limiar usado também depende dos coeficientes de cada decomposição.

O padrão é universal.

11.270 varblur

Aplica um filtro de desfoque variável usando um segundo fluxo de vídeo para definir o raio do desfoque. O segundo fluxo deve ter as mesmas dimensões.

Este filtro aceita as seguintes opções:

min_r

Define o raio mínimo permitido. O intervalo permitido vai de 0 a 254. O padrão é 0.

max_r

Define o raio máximo permitido. O intervalo permitido vai de 1 a 255. O padrão é 8.

planes

Define quais planos processar. Por padrão, todos são usados.

O filtro varblur também admite as opções de framesync.

11.270.1 Comandos

Este filtro admite todas as opções acima como comandos.

11.271 vectorscope

Exibe 2 valores de componentes de cor em um gráfico bidimensional (chamado de vetorscópio).

Este filtro aceita as seguintes opções:

mode, m

Define o modo do vetorscópio.

Aceita os seguintes valores:

‘gray’ ‘tint’

Valores de cinza são exibidos no gráfico; um brilho maior significa que mais pixels têm o mesmo valor de componente de cor naquela posição do gráfico. Este é o modo padrão.

‘color’

Valores de cinza são exibidos no gráfico. Os valores dos pixels ao redor que não estão presentes no quadro de vídeo são desenhados em um gradiente dos 2 componentes de cor definidos pelas opções x e y. O terceiro componente de cor é estático.

‘color2’

Os valores reais dos componentes de cor presentes no quadro de vídeo são exibidos no gráfico.

‘color3’

Similar a color2, mas uma frequência maior dos mesmos valores x e y no gráfico aumenta o valor de outro componente de cor, que por padrão é a luminância dos valores x e y.

‘color4’

As cores reais presentes no quadro de vídeo são exibidas no gráfico. Se duas cores diferentes correspondem à mesma posição no gráfico, é escolhida a cor com o valor mais alto do componente não presente no gráfico.

‘color5’

Valores de cinza são exibidos no gráfico. Similar a color, mas com o terceiro componente de cor escolhido a partir de um gradiente radial.

x

Define qual componente de cor será representado no eixo X. O padrão é 1.

y

Define qual componente de cor será representado no eixo Y. O padrão é 2.

intensity, i

Define a intensidade, usada pelos modos gray, color, color3 e color5 para aumentar o brilho do componente de cor que representa a frequência da posição (X, Y) no gráfico.

envelope, e

‘none’

Sem envelope; este é o padrão.

‘instant’

Envelope instantâneo; até o pixel isolado mais escuro será claramente destacado.

‘peak’

Mantém ao longo do tempo os valores máximo e mínimo apresentados no gráfico. Assim, é possível identificar valores fora do intervalo sem observar o vetorscópio constantemente.

‘peak+instant’

Combinação dos envelopes peak e instant.

graticule, g

Define que tipo de retícula desenhar.

‘none’ ‘green’ ‘color’ ‘invert’ opacity, o

Define a opacidade da retícula.

flags, f

Define as flags da retícula.

‘white’

Desenha a retícula para o ponto branco.

‘black’

Desenha a retícula para o ponto preto.

‘name’

Desenha os nomes curtos dos pontos de cor.

bgopacity, b

Define a opacidade do fundo.

lthreshold, l

Define o limiar baixo para o componente de cor não representado no eixo X ou Y. Valores menores que este serão ignorados. O padrão é 0. Observe que este valor é multiplicado pelo valor máximo real que um componente de pixel pode ter. Assim, para uma entrada de 8 bits e um limiar baixo de 0.1, o limiar real é 0.1 * 255 = 25.

hthreshold, h

Define o limiar alto para o componente de cor não representado no eixo X ou Y. Valores maiores que este serão ignorados. O padrão é 1. Observe que este valor é multiplicado pelo valor máximo real que um componente de pixel pode ter. Assim, para uma entrada de 8 bits e um limiar alto de 0.9, o limiar real é 0.9 * 255 = 230.

colorspace, c

Define que tipo de espaço de cor usar ao desenhar a retícula.

‘auto’ ‘601’ ‘709’

O padrão é auto.

tint0, t0 tint1, t1

Define o matiz de cor para o modo gray/tint do vetorscópio. Por padrão, ambas as opções são zero. Isso significa nenhum matiz, e a saída permanecerá em cinza.

11.272 vidstabdetect

Analisa a estabilização/remoção de tremor do vídeo (deshaking). Realiza o passo 1 de 2; veja vidstabtransform para o passo 2.

Este filtro gera um arquivo com informações de transformação de translação e rotação relativas sobre os quadros subsequentes, que é então usado pelo filtro vidstabtransform.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libvidstab.

Este filtro aceita as seguintes opções:

result

Define o caminho do arquivo usado para gravar as informações das transformações. O valor padrão é transforms.trf.

shakiness

Define o quanto o vídeo treme e a rapidez da câmera. Aceita um inteiro no intervalo de 1 a 10; um valor de 1 significa pouco tremor, e um valor de 10, tremor forte. O valor padrão é 5.

accuracy

Define a precisão do processo de detecção. Deve ser um valor no intervalo de 1 a 15. Um valor de 1 significa baixa precisão, e um valor de 15, alta precisão. O valor padrão é 15.

stepsize

Define o tamanho do passo do processo de busca. A região ao redor do mínimo é varrida com resolução de 1 pixel. O valor padrão é 6.

mincontrast

Define o contraste mínimo. Abaixo deste valor, um campo de medição local é descartado. Deve ser um valor de ponto flutuante no intervalo de 0 a 1. O valor padrão é 0.3.

tripod

Define o número do quadro de referência para o modo tripé.

Se habilitado, o movimento dos quadros é comparado a um quadro de referência no fluxo filtrado, identificado pelo número especificado. A ideia é compensar todos os movimentos em uma cena mais ou menos estática e manter a visão da câmera absolutamente parada.

Se definido como 0, é desabilitado. Os quadros são contados a partir de 1.

show

Mostra campos e transformações nos quadros resultantes. Aceita um inteiro no intervalo de 0 a 2. O valor padrão é 0, que desabilita qualquer visualização.

fileformat

Formato do arquivo de dados das transformações a ser gravado. Os valores aceitáveis são

‘ascii’

Texto simples legível por humanos

‘binary’

Formato binário, cerca de 40% menor que ascii. (padrão)

11.272.1 Exemplos

  • Usar os valores padrão:

    vidstabdetect
    
  • Analisar um filme com forte tremor e gravar os resultados no arquivo mytransforms.trf:

    vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
    
  • Visualizar o resultado das transformações internas no vídeo resultante:

    vidstabdetect=show=1
    
  • Analisar um vídeo com tremor médio usando o ffmpeg:

    ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
    

11.273 vidstabtransform

Estabilização/remoção de tremor de vídeo (deshaking): passo 2 de 2; veja vidstabdetect para o passo 1.

Lê um arquivo com informações de transformação para cada quadro e as aplica/compensa. Junto com o filtro vidstabdetect, isso pode ser usado para remover o tremor de vídeos. Veja também http://public.hronopik.de/vid.stab. Também é importante usar o filtro unsharp; veja abaixo.

Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libvidstab.

11.273.1 Opções

input

Define o caminho do arquivo usado para ler as transformações. O valor padrão é transforms.trf.

smoothing

Define o número de quadros (valor*2 + 1) usado para a filtragem passa-baixa dos movimentos da câmera. O valor padrão é 10.

Por exemplo, um valor de 10 significa que 21 quadros são usados (10 do passado e 10 do futuro) para suavizar o movimento no vídeo. Um valor maior resulta em um vídeo mais suave, mas limita a aceleração da câmera (movimentos de pan/tilt). 0 é um caso especial em que uma câmera estática é simulada.

optalgo

Define o algoritmo de otimização do trajeto da câmera.

Os valores aceitos são:

‘gauss’

filtro passa-baixa de kernel gaussiano sobre o movimento da câmera (padrão)

‘avg’

média das transformações

maxshift

Define o número máximo de pixels para transladar os quadros. O valor padrão é -1, o que significa sem limite.

maxangle

Define o ângulo máximo em radianos (grau*PI/180) para rotacionar os quadros. O valor padrão é -1, o que significa sem limite.

crop

Especifica como lidar com as bordas que podem ficar visíveis devido à compensação de movimento.

Os valores disponíveis são:

‘keep’

mantém as informações de imagem do quadro anterior (padrão)

‘black’

preenche a borda com preto

invert

Inverte as transformações se definido como 1. O valor padrão é 0.

relative

Considera as transformações relativas ao quadro anterior se definido como 1, ou absolutas se definido como 0. O valor padrão é 0.

zoom

Define a porcentagem de zoom. Um valor positivo resulta em um efeito de aproximação (zoom in), e um valor negativo, em um efeito de afastamento (zoom out). O valor padrão é 0 (sem zoom).

optzoom

Define o zoom ideal para evitar bordas.

Os valores aceitos são:

‘0’

desabilitado

‘1’

determina-se um valor de zoom estático ideal (apenas movimentos muito fortes resultarão em bordas visíveis) (padrão)

‘2’

determina-se um valor de zoom adaptativo ideal (nenhuma borda ficará visível); veja zoomspeed

Observe que o valor informado em zoom é somado ao valor calculado aqui.

zoomspeed

Define a porcentagem máxima de zoom por quadro (habilitado quando optzoom é definido como 2). O intervalo vai de 0 a 5; o valor padrão é 0.25.

interpol

Especifica o tipo de interpolação.

Os valores disponíveis são:

‘no’

sem interpolação

‘linear’

linear apenas horizontal

‘bilinear’

linear em ambas as direções (padrão)

‘bicubic’

cúbica em ambas as direções (lenta)

tripod

Habilita o modo de tripé virtual se definido como 1, o que equivale a relative=0:smoothing=0. O valor padrão é 0.

Use também a opção tripod de vidstabdetect.

debug

Aumenta a verbosidade do log se definido como 1. Além disso, os movimentos globais detectados são gravados no arquivo temporário global_motions.trf. O valor padrão é 0.

11.273.2 Exemplos

  • Usar o ffmpeg para uma estabilização típica com os valores padrão:
    ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
    

Observe o uso do filtro unsharp, que é sempre recomendado.

  • Aumentar um pouco mais o zoom e carregar os dados de transformação de um arquivo específico:

    vidstabtransform=zoom=5:input="mytransforms.trf"
    
  • Suavizar o vídeo ainda mais:

    vidstabtransform=smoothing=30
    

11.274 vflip

Inverte o vídeo de entrada verticalmente.

Por exemplo, para inverter um vídeo verticalmente com o ffmpeg:

ffmpeg -i in.avi -vf "vflip" out.avi

11.275 vfrdet

Detecta vídeo com taxa de quadros variável.

Este filtro tenta detectar se a entrada tem taxa de quadros variável ou constante.

Ao final, ele mostrará o número de quadros detectados com delta de pts variável e os detectados com delta de pts constante. Se houve quadros com delta variável, também mostrará o delta mínimo, máximo e médio encontrado.

11.276 vibrance

Realça ou altera a saturação.

O filtro aceita as seguintes opções:

intensity

Define a intensidade do realce se o valor for positivo, ou a intensidade da alteração se for negativo. O valor padrão é 0. O intervalo permitido vai de -2 a 2.

rbal

Define o balanço de vermelho. O valor padrão é 1. O intervalo permitido vai de -10 a 10.

gbal

Define o balanço de verde. O valor padrão é 1. O intervalo permitido vai de -10 a 10.

bbal

Define o balanço de azul. O valor padrão é 1. O intervalo permitido vai de -10 a 10.

rlum

Define o coeficiente de luma do vermelho.

glum

Define o coeficiente de luma do verde.

blum

Define o coeficiente de luma do azul.

alternate

Se intensity for negativo e isto for definido como 1, as cores mudarão; caso contrário, as cores ficarão menos saturadas, tendendo mais para o cinza.

11.276.1 Comandos

Este filtro admite todas as opções acima como comandos.

11.277 vif

Obtém o VIF (Visual Information Fidelity) médio entre dois vídeos de entrada.

Este filtro recebe dois vídeos de entrada.

Ambos os vídeos de entrada devem ter a mesma resolução e o mesmo pixel format para que este filtro funcione corretamente. Além disso, presume-se que ambas as entradas tenham o mesmo número de quadros, que são comparados um a um.

A pontuação VIF média obtida é impressa através do sistema de log.

O filtro armazena a pontuação VIF calculada de cada quadro.

Este filtro também admite as opções de framesync.

No exemplo abaixo, o arquivo de entrada main.mpg em processamento é comparado com o arquivo de referência ref.mpg.

ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -

11.278 vignette

Cria ou reverte um efeito natural de vinheta.

O filtro aceita as seguintes opções:

angle, a

Define a expressão do ângulo da lente como um número de radianos.

O valor é limitado ao intervalo [0,PI/2].

Valor padrão: "PI/5"

x0 y0

Define as expressões das coordenadas do centro. Respectivamente "w/2" e "h/2" por padrão.

mode

Define o modo forward/backward.

Os modos disponíveis são:

‘forward’

Quanto maior a distância do ponto central, mais escura a imagem fica.

‘backward’

Quanto maior a distância do ponto central, mais clara a imagem fica. Isso pode ser usado para reverter um efeito de vinheta, embora (ainda) não haja detecção automática para extrair o ângulo da lente e outras configurações. Também pode ser usado para criar um efeito de queima.

O valor padrão é ‘forward’.

eval

Define o modo de avaliação para as expressões (angle, x0, y0).

Aceita os seguintes valores:

‘init’

Avalia as expressões apenas uma vez durante a inicialização do filtro.

‘frame’

Avalia as expressões para cada quadro recebido. Isso é muito mais lento que o modo ‘init’, já que exige que todos os filtros scale sejam recalculados, mas permite expressões dinâmicas avançadas.

O valor padrão é ‘init’.

dither

Define o dithering para reduzir os efeitos de banding circular. O padrão é 1 (habilitado).

aspect

Define o aspecto da vinheta. Esta configuração permite ajustar o formato da vinheta. Definir este valor como o SAR da entrada produzirá uma vinheta retangular seguindo as dimensões do vídeo.

O padrão é 1/1.

11.278.1 Expressões

As expressões alpha, x0 e y0 podem conter os seguintes parâmetros.

w h

largura e altura da entrada

n

o número do quadro de entrada, começando em 0

pts

o instante PTS (Presentation TimeStamp) do quadro de vídeo filtrado, expresso em unidades TB; NAN se indefinido

r

a taxa de quadros do vídeo de entrada; NAN se a taxa de quadros de entrada for desconhecida

t

o PTS (Presentation TimeStamp) do quadro de vídeo filtrado, expresso em segundos; NAN se indefinido

tb

a base de tempo do vídeo de entrada

11.278.2 Exemplos

  • Aplicar um efeito de vinheta simples e forte:

    vignette=PI/4
    
  • Criar uma vinheta cintilante:

    vignette='PI/4+random(1)*PI/50':eval=frame
    

11.279 vmafmotion

Obtém a pontuação média de movimento VMAF de um vídeo. É uma das métricas componentes do VMAF.

A pontuação média de movimento obtida é impressa através do sistema de log.

O filtro aceita as seguintes opções:

stats_file

Se especificado, o filtro usará o arquivo indicado para salvar a pontuação de movimento de cada quadro em relação ao quadro anterior. Quando o nome do arquivo é "-", os dados são enviados para a saída padrão.

Exemplo:

ffmpeg -i ref.mpg -vf vmafmotion -f null -

11.280 vpp_amf

Escala (redimensiona) e converte o espaço de cor, as características de transferência ou as primárias de cor do vídeo de entrada, usando a biblioteca AMD Advanced Media Framework para aceleração por hardware. Definir a largura e a altura de saída funciona da mesma forma que no filtro scale.

O filtro aceita as seguintes opções:

w h

Define a expressão de dimensão do vídeo de saída. O valor padrão é a dimensão da entrada.

Permite as mesmas expressões que o filtro scale.

scale_type

Define o algoritmo usado no redimensionamento:

bilinear

Bilinear

Este é o padrão.

bicubic

Bicúbico

format

Controla o pixel format de saída. Por padrão, ou se nenhum for especificado, o pixel format da entrada é usado.

force_original_aspect_ratio force_divisible_by

Funcionam da mesma forma que as opções homônimas do filtro scale.

reset_sar

Funciona da mesma forma que a opção homônima do filtro scale.

in_color_range

Sobrescreve a faixa de cor da entrada.

out_color_range

Especifica a faixa de cor da saída.

Os valores aceitos para in_trc e out_trc são:

‘studio’

Faixa de cor de estúdio (ou restrita, ou MPEG).

‘full’

Faixa de cor completa (ou JPEG).

color_profile

Especifica todas as propriedades de cor de uma vez.

Os valores aceitos são:

‘bt601’

BT.601

‘bt709’

BT.709

‘bt2020’

BT.2020

in_trc

Sobrescreve as características de transferência da entrada.

out_trc

Especifica as características de transferência da saída.

Os valores aceitos para in_trc e out_trc são:

‘bt709’

BT.709

‘gamma22’

Gama constante de 2.2

‘gamma28’

Gama constante de 2.8

‘smpte170m’

SMPTE-170M

‘smpte240m’

SMPTE-240M

‘linear’

Linear

‘log’

LOG

‘log-sqrt’

LOG_SQRT

‘iec61966-2-4’

iec61966-2-4

‘bt1361-ecg’

BT1361_ECG

‘iec61966-2-1’

iec61966-2-1

‘bt2020-10’

BT.2020 para conteúdo de 10 bits

‘bt2020-12’

BT.2020 para conteúdo de 12 bits

‘smpte2084’

SMPTE2084

‘smpte428’

SMPTE428

‘arib-std-b67’

ARIB_STD_B67

in_primaries

Sobrescreve as primárias de cor da entrada.

out_primaries

Especifica as primárias de cor da saída.

Os valores aceitos para in_primaries e out_primaries são:

‘bt709’

BT.709

‘bt470m’

BT.470M

‘bt470bg’

BT.470BG ou BT.601-6 625

‘smpte170m’

SMPTE-170M ou BT.601-6 525

‘smpte240m’

SMPTE-240M

‘film’

film

‘bt2020’

BT.2020

‘smpte428’

SMPTE-428

‘smpte431’

SMPTE-431

‘smpte432’

SMPTE-432

‘jedec-p22’

Fósforos JEDEC P22

11.280.1 Exemplos

  • Escala a entrada para 720p, mantendo a proporção de aspecto e garantindo que a saída seja yuv420p.

    vpp_amf=-2:720:format=yuv420p
    
  • Amplia a resolução para 4K e altera o perfil de cor para bt2020.

    vpp_amf=4096:2160:color_profile=bt2020
    
  • Sobrescreve as primárias de entrada e as características de transferência de entrada, alterando ambas para bt709.

    vpp_amf=color_profile=bt2020:in_trc=smpte2084:in_primaries=bt2020:out_trc=bt709:out_primaries=bt709
    

11.281 vstack

Empilha os vídeos de entrada verticalmente.

Todos os fluxos devem ter o mesmo pixel format e a mesma largura.

Observe que este filtro é mais rápido do que usar os filtros overlay e pad para criar a mesma saída.

O filtro aceita as seguintes opções:

inputs

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

shortest

Se definido como 1, força o encerramento da saída quando a entrada mais curta terminar. O valor padrão é 0.

11.282 w3fdif

Desentrelaça o vídeo de entrada ("w3fdif" significa "Weston 3 Field Deinterlacing Filter").

Baseado no processo descrito por Martin Weston para a BBC R&D e implementado a partir do algoritmo de desentrelaçamento escrito por Jim Easterbrook para a BBC R&D, o filtro de desentrelaçamento Weston 3 field usa coeficientes de filtro calculados pela BBC R&D.

Este filtro usa a informação de dominância de campo presente no quadro para decidir qual dos dois campos de cada par deve ser colocado primeiro na saída. Se o resultado estiver incorreto, use o filtro setfield antes do filtro w3fdif.

Existem dois conjuntos de coeficientes de filtro, chamados "simple" e "complex". Qual conjunto de coeficientes é usado pode ser definido passando um parâmetro opcional:

filter

Define os coeficientes do filtro de entrelaçamento. Aceita um dos seguintes valores:

‘simple’

Conjunto de coeficientes de filtro simples.

‘complex’

Conjunto de coeficientes de filtro mais complexo.

O valor padrão é ‘complex’.

mode

O modo de entrelaçamento a adotar. Aceita um dos seguintes valores:

frame

Gera um quadro de saída para cada quadro.

field

Gera um quadro de saída para cada campo.

O valor padrão é field.

parity

A paridade de campo presumida para o vídeo entrelaçado de entrada. Aceita um dos seguintes valores:

tff

Presume que o campo superior vem primeiro.

bff

Presume que o campo inferior vem primeiro.

auto

Ativa a detecção automática da paridade de campo.

O valor padrão é auto. Se o entrelaçamento for desconhecido ou o decoder não exportar essa informação, será presumido que o campo superior vem primeiro.

deint

Especifica quais quadros desentrelaçar. Aceita um dos seguintes valores:

‘all’

Desentrelaça todos os quadros.

‘interlaced’

Desentrelaça apenas os quadros marcados como entrelaçados.

O valor padrão é ‘all’.

11.282.1 Comandos

Este filtro aceita os mesmos comandos que as opções.

11.283 waveform

Monitor de forma de onda de vídeo.

O monitor de forma de onda plota a intensidade dos componentes de cor. Por padrão, apenas a luma. Cada coluna da forma de onda corresponde a uma coluna de pixels do vídeo de origem.

Aceita as seguintes opções:

mode, m

Pode ser row ou column. O padrão é column. No modo row, o lado esquerdo do gráfico representa o valor 0 do componente de cor e o lado direito representa o valor = 255. No modo column, a parte superior representa o valor 0 do componente de cor e a parte inferior representa o valor = 255.

intensity, i

Define a intensidade. Valores menores são úteis para descobrir quantos valores da mesma luminância estão distribuídos pelas linhas/colunas de entrada. O valor padrão é 0.04. O intervalo permitido é [0, 1].

mirror, r

Define o modo de espelhamento. 0 significa sem espelhamento, 1 significa espelhado. No modo espelhado, os valores mais altos serão representados no lado esquerdo no modo row e na parte superior no modo column. O padrão é 1 (espelhado).

display, d

Define o modo de exibição. Aceita os seguintes valores:

‘overlay’

Apresenta informação idêntica à de parade, exceto que os gráficos que representam os componentes de cor são sobrepostos diretamente uns sobre os outros.

Este modo de exibição facilita identificar diferenças ou semelhanças relativas nas áreas sobrepostas dos componentes de cor que deveriam ser idênticos, como brancos, cinzas ou pretos neutros.

‘stack’

Exibe um gráfico separado para os componentes de cor, lado a lado no modo row ou um abaixo do outro no modo column.

‘parade’

Exibe um gráfico separado para os componentes de cor, lado a lado no modo column ou um abaixo do outro no modo row.

Usar este modo de exibição facilita identificar dominantes de cor nas áreas claras e escuras de uma imagem, comparando os contornos dos gráficos superior e inferior de cada forma de onda. Como brancos, cinzas e pretos se caracterizam por quantidades exatamente iguais de vermelho, verde e azul, as áreas neutras da imagem devem exibir três formas de onda com largura/altura aproximadamente iguais. Caso contrário, a correção é fácil de realizar ajustando o nível das três formas de onda.

O padrão é stack.

components, c

Define quais componentes de cor exibir. O padrão é 1, o que significa apenas a luma ou o componente de cor vermelho se a entrada estiver no espaço de cor RGB. Se definido, por exemplo, como 7, exibirá os 3 componentes de cor disponíveis (se houver).

envelope, e

‘none’

Sem envelope; este é o padrão.

‘instant’

Envelope instantâneo: os valores mínimo e máximo apresentados no gráfico ficarão facilmente visíveis mesmo com um valor step pequeno.

‘peak’

Mantém os valores mínimo e máximo apresentados no gráfico ao longo do tempo. Assim, é possível identificar valores fora do intervalo sem observar constantemente as formas de onda.

‘peak+instant’

Combina o envelope de pico e o instantâneo.

filter, f

‘lowpass’

Sem filtragem; este é o padrão.

‘flat’

Combina luma e croma.

‘aflat’

Semelhante ao anterior, mas mostra a diferença entre o croma azul e o croma vermelho.

‘xflat’

Semelhante ao anterior, mas usa cores diferentes.

‘yflat’

Semelhante ao anterior, mas novamente com cores diferentes.

‘chroma’

Exibe apenas o croma.

‘color’

Exibe o valor de cor real na forma de onda.

‘acolor’

Semelhante ao anterior, mas com a luma mostrando a frequência dos valores de croma.

graticule, g

Define qual retícula exibir.

‘none’

Não exibe a retícula.

‘green’

Exibe uma retícula verde mostrando os intervalos legais de transmissão.

‘orange’

Exibe uma retícula laranja mostrando os intervalos legais de transmissão.

‘invert’

Exibe uma retícula invertida mostrando os intervalos legais de transmissão.

opacity, o

Define a opacidade da retícula.

flags, fl

Define as flags da retícula.

‘numbers’

Desenha números acima das linhas. Ativado por padrão.

‘dots’

Desenha pontos em vez de linhas.

scale, s

Define a escala usada para exibir a retícula.

‘digital’ ‘millivolts’ ‘ire’

O padrão é digital.

bgopacity, b

Define a opacidade do plano de fundo.

tint0, t0 tint1, t1

Define o matiz para a saída. Usado apenas com o filtro lowpass e quando display não é overlay e os pixel formats de entrada não são RGB.

fitmode, fm

Define a proporção de aspecto de amostragem dos quadros de vídeo de saída. Pode ser usado para configurar a forma de onda de modo que não fique excessivamente esticada em uma das direções.

‘none’

Define a proporção de aspecto de amostragem como 1/1.

‘size’

Define a proporção de aspecto de amostragem para corresponder ao tamanho de entrada do vídeo

O padrão é ‘none’.

input

Define os formatos de entrada entre os quais o filtro pode escolher. Pode ser ‘all’, para selecionar entre todos os formatos disponíveis, ou ‘first’, para selecionar o primeiro formato disponível. O padrão é ‘first’.

11.284 weave, doubleweave

O weave recebe uma entrada de vídeo baseada em campos e une cada dois campos sequenciais em um único quadro, produzindo um novo clipe com o dobro da altura, metade da taxa de quadros e metade da contagem de quadros.

O doubleweave funciona da mesma forma que weave, mas sem reduzir a taxa de quadros e a contagem de quadros pela metade.

Aceita a seguinte opção:

first_field

Define o primeiro campo. Os valores disponíveis são:

‘top, t’

Define o quadro com o campo superior primeiro.

‘bottom, b’

Define o quadro com o campo inferior primeiro.

11.284.1 Exemplos

  • Entrelaça o vídeo usando os filtros select e separatefields:
    separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
    

11.285 xbr

Aplica o filtro de ampliação de alta qualidade xBR, projetado para pixel art. Segue um conjunto de regras de detecção de bordas; consulte https://forums.libretro.com/t/xbr-algorithm-tutorial/123.

Aceita a seguinte opção:

n

Define a dimensão de redimensionamento: 2 para 2xBR, 3 para 3xBR e 4 para 4xBR. O padrão é 3.

11.286 xcorrelate

Aplica correlação cruzada normalizada entre o primeiro e o segundo fluxo de vídeo de entrada.

As dimensões do segundo fluxo de vídeo de entrada devem ser menores que as do primeiro fluxo de vídeo de entrada.

O filtro aceita as seguintes opções:

planes

Define quais planos processar.

secondary

Define quais quadros de vídeo secundários serão processados a partir do segundo fluxo de vídeo de entrada; pode ser first ou all. O padrão é all.

O filtro xcorrelate também aceita as opções de framesync.

11.287 xfade

Aplica uma transição cruzada (cross fade) de um fluxo de vídeo de entrada para outro. A transição cruzada é aplicada durante a duração especificada.

Ambas as entradas devem ter taxa de quadros constante e a mesma resolução, pixel format, taxa de quadros e timebase.

O filtro aceita as seguintes opções:

transition

Define um dos efeitos de transição disponíveis:

‘custom’ ‘fade’ ‘wipeleft’ ‘wiperight’ ‘wipeup’ ‘wipedown’ ‘slideleft’ ‘slideright’ ‘slideup’ ‘slidedown’ ‘circlecrop’ ‘rectcrop’ ‘distance’ ‘fadeblack’ ‘fadewhite’ ‘radial’ ‘smoothleft’ ‘smoothright’ ‘smoothup’ ‘smoothdown’ ‘circleopen’ ‘circleclose’ ‘vertopen’ ‘vertclose’ ‘horzopen’ ‘horzclose’ ‘dissolve’ ‘pixelize’ ‘diagtl’ ‘diagtr’ ‘diagbl’ ‘diagbr’ ‘hlslice’ ‘hrslice’ ‘vuslice’ ‘vdslice’ ‘hblur’ ‘fadegrays’ ‘wipetl’ ‘wipetr’ ‘wipebl’ ‘wipebr’ ‘squeezeh’ ‘squeezev’ ‘zoomin’ ‘fadefast’ ‘fadeslow’ ‘hlwind’ ‘hrwind’ ‘vuwind’ ‘vdwind’ ‘coverleft’ ‘coverright’ ‘coverup’ ‘coverdown’ ‘revealleft’ ‘revealright’ ‘revealup’ ‘revealdown’

O efeito de transição padrão é fade.

duration

Define a duração da transição cruzada em segundos. O intervalo é de 0 a 60 segundos. A duração padrão é 1 segundo.

offset

Define o início da transição cruzada em segundos, em relação ao primeiro fluxo de entrada. O offset padrão é 0.

expr

Define a expressão do efeito de transição custom.

As expressões podem usar as seguintes variáveis e funções:

X Y

As coordenadas da amostra atual.

W H

A largura e a altura da imagem.

P

Progresso do efeito de transição.

PLANE

Plano processado atualmente.

A

Retorna o valor da primeira entrada na posição e no plano atuais.

B

Retorna o valor da segunda entrada na posição e no plano atuais.

a0(x, y) a1(x, y) a2(x, y) a3(x, y)

Retorna o valor do pixel na posição (x,y) do primeiro/segundo/terceiro/quarto componente da primeira entrada.

b0(x, y) b1(x, y) b2(x, y) b3(x, y)

Retorna o valor do pixel na posição (x,y) do primeiro/segundo/terceiro/quarto componente da segunda entrada.

11.287.1 Exemplos

  • Transição cruzada de um vídeo de entrada para outro, com transição fade e duração de 2 segundos, começando no offset de 5 segundos:
    ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
    

11.288 xmedian

Seleciona os pixels medianos de vários vídeos de entrada.

O filtro aceita as seguintes opções:

inputs

Define o número de entradas. O padrão é 3. O intervalo permitido é de 3 a 255. Se o número de entradas for par, o resultado será o valor médio entre os dois valores medianos.

planes

Define quais planos filtrar. O valor padrão é 15, com o qual todos os planos são processados.

percentile

Define o percentil da mediana. O valor padrão é 0.5. O valor padrão 0.5 sempre seleciona os valores medianos, enquanto 0 seleciona os valores mínimos e 1 os valores máximos.

11.288.1 Comandos

Este filtro aceita todas as opções acima como comandos, exceto a opção inputs.

11.289 xpsnr

Obtém a média (em todos os quadros de entrada) e o mínimo (em todas as médias dos planos de cor) da eXtended Perceptually weighted peak Signal-to-Noise Ratio (XPSNR) entre dois vídeos de entrada.

A XPSNR é um algoritmo de medição de distorção de baixa complexidade e motivação psicovisual, usado para avaliar a diferença entre dois fluxos de vídeo ou imagens. É especialmente útil para quantificar objetivamente as distorções causadas pelos codecs de vídeo e imagem, como alternativa a um teste subjetivo formal. Os valores de saída logarítmicos da XPSNR ficam em um intervalo semelhante ao das avaliações tradicionais de psnr, mas refletem melhor a impressão humana sobre a qualidade da codificação visual. Mais detalhes sobre a medida XPSNR, que essencialmente representa uma variante do PSNR ponderada por blocos, podem ser encontrados nos seguintes artigos disponíveis gratuitamente:

  • C. R. Helmrich, M. Siekmann, S. Becker, S. Bosse, D. Marpe, and T. Wiegand, "XPSNR: A Low-Complexity Extension of the Perceptually Weighted Peak Signal-to-Noise Ratio for High-Resolution Video Quality Assessment," in Proc. IEEE Int. Conf. Acoustics, Speech, Sig. Process. (ICASSP), virt./online, May 2020. www.ecodis.de/xpsnr.htm
  • C. R. Helmrich, S. Bosse, H. Schwarz, D. Marpe, and T. Wiegand, "A Study of the Extended Perceptually Weighted Peak Signal-to-Noise Ratio (XPSNR) for Video Compression with Different Resolutions and Bit Depths," ITU Journal: ICT Discoveries, vol. 3, no. 1, pp. 65 - 72, May 2020. http://handle.itu.int/11.1002/pub/8153d78b-en

Ao publicar os resultados de avaliações XPSNR obtidos, por exemplo, com este filtro do FFmpeg, é fortemente recomendável fazer referência aos artigos acima como forma de documentação. O filtro requer dois vídeos de entrada. A primeira entrada é considerada uma fonte de referência (geralmente sem distorção) e é passada sem alterações para a saída, enquanto a segunda entrada é um sinal de teste (distorcido). Exceto pela profundidade de bits, essas duas entradas de vídeo devem ter o mesmo pixel format. Além disso, para obter o melhor desempenho, ambos os vídeos de entrada comparados devem estar no formato de cor YCbCr.

Os valores globais de XPSNR obtidos mencionados acima são impressos pelo sistema de log. No caso de entrada com vários planos de cor, sugerimos relatar a média mínima de XPSNR.

É aceito o seguinte parâmetro, que se comporta como o do filtro psnr:

stats_file, f

Se especificado, o filtro usará o arquivo indicado para salvar o valor de XPSNR de cada quadro e plano de cor individuais. Quando o nome do arquivo é "-", esses dados são enviados para a saída padrão.

Este filtro também aceita as opções framesync.

11.289.1 Exemplos

  • Análise XPSNR de dois vídeos HD 1080p, ref_source.yuv e test_video.yuv, ambos a 24 quadros por segundo, com formato de cor 4:2:0, profundidade de bits 8, e saída de um arquivo de registro chamado "xpsnr.log":

    ffmpeg -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i ref_source.yuv -s 1920x1080 -framerate
    24 -pix_fmt yuv420p -i test_video.yuv -lavfi xpsnr="stats_file=xpsnr.log" -f null -
    
  • Análise XPSNR de dois vídeos UHD 2160p, ref_source.yuv com profundidade de bits 8 e test_video.yuv com profundidade de bits 10, ambos a 60 quadros por segundo com formato de cor 4:2:0, sem saída de arquivo de registro:

    ffmpeg -s 3840x2160 -framerate 60 -pix_fmt yuv420p -i ref_source.yuv -s 3840x2160 -framerate
    60 -pix_fmt yuv420p10le -i test_video.yuv -lavfi xpsnr="stats_file=-" -f null -
    

11.290 xstack

Empilha as entradas de vídeo em um layout personalizado.

Todos os fluxos devem ter o mesmo pixel format.

O filtro aceita as seguintes opções:

inputs

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

layout

Especifica o layout das entradas. Esta opção exige que a configuração de layout desejada seja definida explicitamente pelo usuário. Isso define a posição de cada entrada de vídeo na saída. Cada entrada é separada por ’|’. O primeiro número representa a coluna, e o segundo número representa a linha. Os números começam em 0 e são separados por ’_’. Opcionalmente é possível usar wX e hX, em que X é a entrada de vídeo da qual se obtém a largura ou a altura. É possível usar múltiplos valores separados por ’+’; nesse caso, os valores são somados.

Observe que, se as entradas tiverem tamanhos diferentes, podem aparecer lacunas, já que nem todo o quadro de vídeo de saída será preenchido. Da mesma forma, os vídeos podem se sobrepor caso sua posição não deixe espaço suficiente para o quadro completo dos vídeos adjacentes.

Para 2 entradas, é definido um layout padrão 0_0|w0_0 (equivalente a grid=2x1). Em todos os outros casos, o usuário deve definir um layout ou uma grade. Apenas grid ou layout pode ser especificado de cada vez. Especificar ambos resultará em erro.

grid

Especifica uma grade de tamanho fixo para as entradas. Esta opção é usada para criar uma grade de tamanho fixo com os fluxos de entrada. Define o tamanho da grade na forma COLUMNSxROWS. Deve haver ROWS * COLUMNS fluxos de entrada, que serão organizados em uma grade com ROWS linhas e COLUMNS colunas. Ao usar esta opção, cada fluxo de entrada dentro de uma linha deve ter a mesma altura, e todas as linhas devem ter a mesma largura.

Se grid for definido, a opção inputs é ignorada e definida implicitamente como ROWS * COLUMNS.

Para 2 entradas, é definida uma grade padrão 2x1 (equivalente a layout=0_0|w0_0). Em todos os outros casos, o usuário deve definir um layout ou uma grade. Apenas grid ou layout pode ser especificado de cada vez. Especificar ambos resultará em erro.

shortest

Se definido como 1, força o encerramento da saída quando a entrada mais curta terminar. O valor padrão é 0.

fill

Se definido como uma cor válida, todos os pixels não utilizados serão preenchidos com essa cor. Por padrão, fill é definido como none, ficando desativado.

11.290.1 Exemplos

  • Exibe 4 entradas em uma grade 2x2.

Layout:

    input1(0, 0)  | input3(w0, 0)
    input2(0, h0) | input4(w0, h0)


    xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0

Observe que, se as entradas tiverem tamanhos diferentes, podem ocorrer lacunas ou sobreposições.

  • Exibe 4 entradas em uma grade 1x4.

Layout:

    input1(0, 0)
    input2(0, h0)
    input3(0, h0+h1)
    input4(0, h0+h1+h2)


    xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2

Observe que, se as entradas tiverem larguras diferentes, aparecerá espaço não utilizado.

  • Exibe 9 entradas em uma grade 3x3.

Layout:

    input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
    input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
    input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)


    xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1

Observe que, se as entradas tiverem tamanhos diferentes, podem ocorrer lacunas ou sobreposições.

  • Exibe 16 entradas em uma grade 4x4.

Layout:

    input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
    input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
    input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
    input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)


    xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|
    w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2

Observe que, se as entradas tiverem tamanhos diferentes, podem ocorrer lacunas ou sobreposições.

11.291 yadif

Desentrelaça o vídeo de entrada ("yadif" significa "yet another deinterlacing filter").

Aceita os seguintes parâmetros:

mode

O modo de entrelaçamento a adotar. Aceita um dos seguintes valores:

0, send_frame

Gera um quadro de saída para cada quadro.

1, send_field

Gera um quadro de saída para cada campo.

2, send_frame_nospatial

Semelhante a send_frame, mas ignora a verificação espacial de entrelaçamento.

3, send_field_nospatial

Semelhante a send_field, mas ignora a verificação espacial de entrelaçamento.

O valor padrão é send_frame.

parity

A paridade de campo assumida para o vídeo entrelaçado de entrada. Aceita um dos seguintes valores:

0, tff

Presume que o campo superior vem primeiro.

1, bff

Presume que o campo inferior vem primeiro.

-1, auto

Ativa a detecção automática da paridade de campo.

O valor padrão é auto. Se o entrelaçamento for desconhecido ou o decoder não exportar essa informação, será presumido que o campo superior vem primeiro.

deint

Especifica quais quadros desentrelaçar. Aceita um dos seguintes valores:

0, all

Desentrelaça todos os quadros.

1, interlaced

Desentrelaça apenas os quadros marcados como entrelaçados.

O valor padrão é all.

11.292 yaepblur

Aplica um filtro de desfoque preservando as bordas ("yaepblur" significa "yet another edge preserving blur filter"). O algoritmo é descrito em "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."

Aceita os seguintes parâmetros:

radius, r

Define o raio da janela. O valor padrão é 3.

planes, p

Define quais planos filtrar. Por padrão, apenas o primeiro plano.

sigma, s

Define a intensidade do desfoque. O valor padrão é 128.

11.292.1 Comandos

Este filtro aceita os mesmos comandos que as opções.

11.293 zoompan

Aplica o efeito de zoom e panorâmica (Zoom & Pan).

Este filtro aceita as seguintes opções:

zoom, z

Define a expressão de zoom. O intervalo é 1-10. O padrão é 1.

x y

Define a expressão de x e y. O padrão é 0.

d

Define a expressão de duração em número de quadros. Isso determina por quantos quadros o efeito durará para uma única imagem de entrada. O padrão é 90.

s

Define o tamanho da imagem de saída; o padrão é ’hd720’.

fps

Define a taxa de quadros de saída; o padrão é ’25’.

Cada expressão pode conter as seguintes constantes:

in_w, iw

Largura da entrada.

in_h, ih

Altura da entrada.

out_w, ow

Largura da saída.

out_h, oh

Altura da saída.

in

Número de quadros de entrada.

on

Número de quadros de saída.

in_time, it

A marca de tempo de entrada expressa em segundos. É NAN se a marca de tempo de entrada for desconhecida.

out_time, time, ot

A marca de tempo de saída expressa em segundos.

x y

Última posição ’x’ e ’y’ calculada a partir das expressões ’x’ e ’y’ para o quadro de entrada atual.

px py

’x’ e ’y’ do último quadro de saída do quadro de entrada anterior, ou 0 quando ainda não existia tal quadro (primeiro quadro de entrada).

zoom

Último zoom calculado a partir da expressão ’z’ para o quadro de entrada atual.

pzoom

Último zoom calculado do último quadro de saída do quadro de entrada anterior.

duration

Número de quadros de saída para o quadro de entrada atual. Calculado a partir da expressão ’d’ para cada quadro de entrada.

pduration

número de quadros de saída criados para o quadro de entrada anterior

a

Número racional: largura da entrada / altura da entrada

sar

proporção de aspecto de amostragem

dar

proporção de aspecto de exibição

11.293.1 Exemplos

  • Aplica zoom até 1.5x e faz a panorâmica ao mesmo tempo para um ponto próximo do centro da imagem:

    zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
    
  • Aplica zoom até 1.5x e sempre faz a panorâmica no centro da imagem:

    zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    
  • O mesmo que acima, mas sem pausar:

    zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    
  • Aplica zoom de 2x no centro da imagem apenas durante o primeiro segundo do vídeo de entrada:

    zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    

11.294 zscale

Redimensiona o vídeo de entrada usando a biblioteca z.lib: https://github.com/sekrit-twc/zimg. Para habilitar a compilação deste filtro, é necessário configurar o FFmpeg com --enable-libzimg.

O filtro zscale força a proporção de aspecto de exibição de saída a ser igual à de entrada, alterando a proporção de aspecto de amostra de saída.

Se o formato da imagem de entrada for diferente do formato solicitado pelo próximo filtro, o filtro zscale converterá a entrada para o formato solicitado.

11.294.1 Opções

O filtro aceita as seguintes opções.

width, w height, h

Define a expressão da dimensão do vídeo de saída. O valor padrão é a dimensão de entrada.

Se o valor de width ou w for 0, a largura de entrada é usada para a saída. Se o valor de height ou h for 0, a altura de entrada é usada para a saída.

Se um, e apenas um, dos valores for -n com n >= 1, o filtro zscale usará um valor que preserve a proporção de aspecto da imagem de entrada, calculado a partir da outra dimensão especificada. Depois disso, no entanto, garantirá que a dimensão calculada seja divisível por n e ajustará o valor se necessário.

Se ambos os valores forem -n com n >= 1, o comportamento será idêntico a ambos os valores sendo definidos como 0, conforme detalhado anteriormente.

Veja abaixo a lista de constantes aceitas para uso na expressão de dimensão.

size, s

Define o tamanho do vídeo. Para a sintaxe desta opção, consulte a seção "Video size" no manual do ffmpeg-utils.

dither, d

Define o tipo de dithering.

Os valores possíveis são:

none ordered random error_diffusion

O padrão é none.

filter, f

Define o tipo de filtro de redimensionamento.

Os valores possíveis são:

point bilinear bicubic spline16 spline36 spline64 lanczos

O padrão é bilinear.

range, r

Define a faixa de cor.

Os valores possíveis são:

input limited full

O padrão é o mesmo da entrada.

primaries, p

Define as primárias de cor.

Os valores possíveis são:

input 709 unspecified 170m 240m 2020

O padrão é o mesmo da entrada.

transfer, t

Define as características de transferência.

Os valores possíveis são:

input 709 unspecified 601 linear 2020_10 2020_12 smpte2084 iec61966-2-1 arib-std-b67

O padrão é o mesmo da entrada.

matrix, m

Define a matriz do espaço de cor.

Os valores possíveis são:

input 709 unspecified 470bg 170m 2020_ncl 2020_cl

O padrão é o mesmo da entrada.

rangein, rin

Define a faixa de cor de entrada.

Os valores possíveis são:

input limited full

O padrão é o mesmo da entrada.

primariesin, pin

Define as primárias de cor de entrada.

Os valores possíveis são:

input 709 unspecified 170m 240m 2020

O padrão é o mesmo da entrada.

transferin, tin

Define as características de transferência de entrada.

Os valores possíveis são:

input 709 unspecified 601 linear 2020_10 2020_12

O padrão é o mesmo da entrada.

matrixin, min

Define a matriz do espaço de cor de entrada.

Os valores possíveis são:

input 709 unspecified 470bg 170m 2020_ncl 2020_cl chromal, c

Define a localização de croma de saída.

Os valores possíveis são:

input left center topleft top bottomleft bottom chromalin, cin

Define a localização de croma de entrada.

Os valores possíveis são:

input left center topleft top bottomleft bottom npl

Define a luminância de pico nominal.

param_a

Parâmetro A para os filtros de redimensionamento. Parâmetro "b" para bicubic e o número de taps do filtro para lanczos.

param_b

Parâmetro B para os filtros de redimensionamento. Parâmetro "c" para bicubic.

Os valores das opções w e h são expressões que contêm as seguintes constantes:

in_w in_h

A largura e a altura de entrada

iw ih

São o mesmo que in_w e in_h.

out_w out_h

A largura e a altura de saída (após o redimensionamento)

ow oh

São o mesmo que out_w e out_h

a

O mesmo que iw / ih

sar

proporção de aspecto de amostra de entrada

dar

A proporção de aspecto de exibição de entrada. Calculada a partir de (iw / ih) * sar.

hsub vsub

valores de subamostragem de croma de entrada horizontal e vertical. Por exemplo, para o pixel format "yuv422p" hsub é 2 e vsub é 1.

ohsub ovsub

valores de subamostragem de croma de saída horizontal e vertical. Por exemplo, para o pixel format "yuv422p" hsub é 2 e vsub é 1.

11.294.2 Comandos

Este filtro é compatível com os seguintes comandos:

width, w height, h

Define a expressão da dimensão do vídeo de saída. O comando aceita a mesma sintaxe da opção correspondente.

Se a expressão especificada não for válida, o valor atual é mantido.

12 Filtros de vídeo CUDA

Abaixo está uma descrição dos filtros de vídeo Nvidia CUDA atualmente disponíveis.

Pré-requisitos:

  • Instalar o Nvidia CUDA Toolkit

Observação: se o FFmpeg detectar o Nvidia CUDA Toolkit durante a configuração, ele habilitará os filtros CUDA automaticamente, sem exigir nenhuma flag adicional. Se você quiser habilitá-los explicitamente, use as seguintes opções:

  • Configure o FFmpeg com --enable-cuda-nvcc --enable-nonfree.
  • Configure o FFmpeg com --enable-cuda-llvm. Requisito adicional: a biblioteca llvm deve estar instalada.

Executar filtros CUDA exige inicializar um dispositivo de hardware e passar esse dispositivo para todos os filtros em qualquer grafo de filtros.

-init_hw_device cuda[=name][:device[,key=value...]]

Inicializa um novo dispositivo de hardware do tipo cuda chamado name, usando os parâmetros de dispositivo fornecidos.

-filter_hw_device name

Passa o dispositivo de hardware chamado name para todos os filtros em qualquer grafo de filtros.

Para informações mais detalhadas, consulte https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options

  • Exemplo de inicialização do segundo dispositivo CUDA no sistema e execução dos filtros scale_cuda e bilateral_cuda.
    ./ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -init_hw_device cuda:1 -filter_complex \
    "[0:v]scale_cuda=format=yuv444p[scaled_video];[scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \
    -an -sn -c:v h264_nvenc -cq 20 out.mp4
    

Como os filtros CUDA operam exclusivamente em memória de GPU, os dados dos quadros às vezes precisam ser enviados (hwupload) para superfícies de hardware associadas ao dispositivo CUDA apropriado antes do processamento e, depois, baixados (hwdownload) de volta para a memória normal, quando necessário. Se hwupload ou hwdownload é necessário depende do fluxo de trabalho específico:

  • Se os quadros de entrada já estiverem em memória de GPU (por exemplo, ao usar -hwaccel cuda ou -hwaccel_output_format cuda), não é necessário usar hwupload explicitamente, já que os dados já estão no espaço de memória apropriado.
  • Se os quadros de entrada estiverem em memória de CPU (por exemplo, quadros decodificados por software ou processados por filtros baseados em CPU), é necessário usar hwupload para transferir os dados para a memória de GPU para processamento CUDA.
  • Se a saída dos filtros CUDA precisar ser processada posteriormente por filtros baseados em software ou salva em um formato não compatível com encoders baseados em GPU, hwdownload é necessário para transferir os dados de volta para a memória de CPU.

Observe que hwupload envia os dados para uma superfície com o mesmo layout do quadro em software, portanto pode ser necessário adicionar um filtro format imediatamente antes do hwupload para garantir que a entrada esteja no formato correto. Da mesma forma, hwdownload pode não ser compatível com todos os formatos de saída, portanto pode ser necessário inserir um filtro format adicional imediatamente após o hwdownload no grafo de filtros para garantir a compatibilidade.

12.1 bilateral_cuda

Filtro bilateral acelerado por CUDA, um filtro que preserva bordas. Este filtro é matematicamente preciso graças ao uso de aceleração por GPU. Para obter a melhor qualidade de saída, use subamostragem de croma um-para-um, ou seja, o formato yuv444p.

O filtro aceita as seguintes opções:

sigmaS

Define o sigma da função gaussiana usada para calcular o peso espacial, também chamado de sigma space. A faixa permitida é de 0.1 a 512. O padrão é 0.1.

sigmaR

Define o sigma da função gaussiana usada para calcular o peso da faixa de cor, também chamado de sigma color. A faixa permitida é de 0.1 a 512. O padrão é 0.1.

window_size

Define o tamanho da janela da função bilateral para determinar o número de vizinhos sobre os quais realizar o loop. Se o número informado for par, 1 é somado automaticamente. A faixa permitida é de 1 a 255. O padrão é 1.

12.1.1 Exemplos

  • Aplica o filtro bilateral em um vídeo.
    ./ffmpeg -v verbose \
    -hwaccel cuda -hwaccel_output_format cuda -i input.mp4  \
    -init_hw_device cuda \
    -filter_complex \
    " \
    [0:v]scale_cuda=format=yuv444p[scaled_video];
    [scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \
    -an -sn -c:v h264_nvenc -cq 20 out.mp4
    

12.2 bwdif_cuda

Desentrelaça o vídeo de entrada usando o algoritmo bwdif, porém implementado em CUDA, de modo que pode funcionar como parte de um pipeline acelerado por GPU com nvdec e/ou nvenc.

Aceita os seguintes parâmetros:

mode

O modo de entrelaçamento a adotar. Aceita um dos seguintes valores:

0, send_frame

Produz um quadro para cada quadro.

1, send_field

Produz um quadro para cada campo.

O valor padrão é send_field.

parity

A paridade de campo da imagem assumida para o vídeo entrelaçado de entrada. Aceita um dos seguintes valores:

0, tff

Presume que o campo superior vem primeiro.

1, bff

Presume que o campo inferior vem primeiro.

-1, auto

Habilita a detecção automática da paridade de campo.

O valor padrão é auto. Se o entrelaçamento for desconhecido ou o decoder não exportar essa informação, será presumido que o campo superior vem primeiro.

deint

Especifica quais quadros desentrelaçar. Aceita um dos seguintes valores:

0, all

Desentrelaça todos os quadros.

1, interlaced

Desentrelaça apenas os quadros marcados como entrelaçados.

O valor padrão é all.

12.3 chromakey_cuda

Chroma key de cor no espaço de cor YUV acelerado por CUDA.

Este filtro funciona como o filtro chromakey comum, mas opera em quadros CUDA. Para mais detalhes e parâmetros, veja chromakey.

12.3.1 Exemplos

  • Torna transparentes todos os pixels verdes do vídeo de entrada e o usa como overlay para outro vídeo:

    ./ffmpeg \
        -hwaccel cuda -hwaccel_output_format cuda -i input_green.mp4  \
        -hwaccel cuda -hwaccel_output_format cuda -i base_video.mp4 \
        -init_hw_device cuda \
        -filter_complex \
        " \
            [0:v]chromakey_cuda=0x25302D:0.1:0.12:1[overlay_video]; \
            [1:v]scale_cuda=format=yuv420p[base]; \
            [base][overlay_video]overlay_cuda" \
        -an -sn -c:v h264_nvenc -cq 20 output.mp4
    
  • Processa duas fontes em software, enviando os quadros explicitamente:

    ./ffmpeg -init_hw_device cuda=cuda -filter_hw_device cuda \
        -f lavfi -i color=size=800x600:color=white,format=yuv420p \
        -f lavfi -i yuvtestsrc=size=200x200,format=yuv420p \
        -filter_complex \
        " \
            [0]hwupload[under]; \
            [1]hwupload,chromakey_cuda=green:0.1:0.12[over]; \
            [under][over]overlay_cuda" \
        -c:v hevc_nvenc -cq 18 -preset slow output.mp4
    

12.4 colorspace_cuda

Implementação acelerada por CUDA do filtro colorspace.

Está longe de ter os mesmos recursos do filtro colorspace em software e, no momento, é compatível apenas com a conversão de faixa de cor entre jpeg/full e mpeg/limited.

O filtro aceita as seguintes opções:

range

Especifica a faixa de cor de saída.

Os valores aceitos são:

‘tv’

Faixa TV (restrita)

‘mpeg’

Faixa MPEG (restrita)

‘pc’

Faixa PC (completa)

‘jpeg’

Faixa JPEG (completa)

12.5 overlay_cuda

Sobrepõe um vídeo sobre outro.

Esta é a variante CUDA do filtro overlay. Aceita apenas quadros CUDA. Os pixel formats de entrada subjacentes precisam corresponder.

Recebe duas entradas e tem uma saída. A primeira entrada é o vídeo "principal" sobre o qual a segunda entrada é sobreposta.

Aceita os seguintes parâmetros:

x y

Define expressões para as coordenadas x e y do vídeo sobreposto no vídeo principal.

Podem conter os seguintes parâmetros:

main_w, W main_h, H

A largura e a altura da entrada principal.

overlay_w, w overlay_h, h

A largura e a altura da entrada de overlay.

x y

Os valores calculados para x e y. São avaliados a cada novo quadro.

n

O índice ordinal do quadro da entrada principal, começando em 0.

pos

A posição de deslocamento em bytes no arquivo do quadro da entrada principal, NAN se desconhecida. Obsoleto, não use.

t

A marca de tempo do quadro da entrada principal, expressa em segundos, NAN se desconhecida.

O valor padrão é "0" para ambas as expressões.

eval

Define quando as expressões para x e y são avaliadas.

Aceita os seguintes valores:

init

Avalia as expressões uma única vez durante a inicialização do filtro ou quando um comando é processado.

frame

Avalia as expressões para cada quadro recebido

O valor padrão é frame.

eof_action

Veja framesync.

shortest

Veja framesync.

repeatlast

Veja framesync.

Este filtro também é compatível com as opções de framesync.

12.6 pad_cuda

Adiciona preenchimento a um fluxo de vídeo de entrada usando CUDA.

Este filtro é a versão acelerada por CUDA do filtro pad. Aceita as mesmas opções e expressões e oferece a mesma funcionalidade principal. Para uma descrição detalhada das opções disponíveis, consulte a documentação do filtro pad.

12.6.1 Exemplos

  • Adiciona uma borda preta de 200 pixels em todos os lados de um quadro de vídeo:

    ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf "pad_cuda=w=iw+400:h=ih+400:x=200:y=200" -c:v h264_nvenc out.mp4
    
  • Preenche o vídeo de entrada para uma proporção de aspecto de 16:9, preenchendo com a cor "blue":

    ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf "pad_cuda=w=ih*16/9/sar:h=ih:x=(ow-iw)/2:y=(oh-ih)/2:color=blue" -c:v h264_nvenc out.mp4
    

12.7 scale_cuda

Redimensiona e converte (pixel format) o vídeo de entrada, usando kernels CUDA acelerados. Definir a largura e a altura de saída funciona da mesma forma que no filtro scale.

O filtro aceita as seguintes opções:

w h

Define a expressão da dimensão do vídeo de saída. O valor padrão é a dimensão de entrada.

Permite as mesmas expressões que o filtro scale.

interp_algo

Define o algoritmo usado para o redimensionamento:

nearest

Vizinho mais próximo

Usado por padrão se os parâmetros de entrada corresponderem à saída desejada.

bilinear

Bilinear

bicubic

Bicúbico

Este é o padrão.

lanczos

Lanczos

format

Controla o pixel format de saída. Por padrão, ou se nenhum for especificado, o pixel format de entrada é usado.

O filtro não é compatível com a conversão entre pixel formats YUV e RGB.

passthrough

Se definido como 0, cada quadro é processado, mesmo que nenhuma conversão seja necessária. Este modo pode ser útil para usar o filtro como um buffer para um consumidor de quadros a jusante que esgota o pool limitado de quadros do decoder.

Se definido como 1, os quadros passam direto se corresponderem aos parâmetros de saída desejados. Este é o comportamento padrão.

use_filters

Se definido como 1, filtra com uma LUT de peso genérica em vez de usar kernels de shader de função fixa. Pode ser mais rápido ou mais lento dependendo do hardware. Um valor auto (o padrão) habilita isso automaticamente quando necessário para um antisserrilhamento correto ao reduzir a escala.

param

Parâmetro específico do algoritmo.

Afeta as curvas do algoritmo bicubic.

force_original_aspect_ratio force_divisible_by

Funcionam da mesma forma que as opções idênticas do filtro scale.

reset_sar

Funciona da mesma forma que a opção idêntica do filtro scale.

12.7.1 Exemplos

  • Redimensiona a entrada para 720p, preservando a proporção de aspecto e garantindo que a saída seja yuv420p.

    scale_cuda=-2:720:format=yuv420p
    
  • Faz upscale para 4K usando o algoritmo de vizinho mais próximo.

    scale_cuda=4096:2160:interp_algo=nearest
    
  • Não faz nenhuma conversão ou redimensionamento, mas copia todos os quadros de entrada para quadros recém-alocados. Isso pode ser útil para lidar com uma cadeia de filtro e codificação que, de outra forma, esgotaria o pool de quadros do decoder.

    scale_cuda=passthrough=0
    

12.8 thumbnail_cuda

Seleciona o quadro mais representativo em uma determinada sequência de quadros consecutivos usando CUDA.

O filtro aceita as seguintes opções:

n

Define o tamanho do lote de quadros a analisar; em um conjunto de n quadros, o filtro escolherá um deles e, em seguida, tratará o próximo lote de n quadros até o fim. O padrão é 100.

Como o filtro mantém o rastreamento de toda a sequência de quadros, um valor de n maior resultará em maior uso de memória, portanto um valor alto não é recomendado.

12.8.1 Exemplo

  • Miniaturas são extraídas de cada lote de n=150 quadros, selecionando uma por lote. Os quadros escolhidos são então redimensionados com scale_cuda.
    ./ffmpeg  -hwaccel cuda -hwaccel_output_format cuda  -i ./input.mp4 -vf "thumbnail_cuda=150,scale_cuda=1920:1080,hwdownload,format=nv12" ./output/out%03d.png
    

12.9 transpose_cuda

Transpõe linhas e colunas no vídeo de entrada e, opcionalmente, o inverte. Para exemplos mais aprofundados, veja o filtro de vídeo transpose, que compartilha praticamente as mesmas opções.

Aceita os seguintes parâmetros:

dir

Especifica a direção da transposição.

Pode assumir os seguintes valores:

‘cclock_flip’

Gira 90 graus no sentido anti-horário e inverte verticalmente. (padrão)

‘clock’

Gira 90 graus no sentido horário.

‘cclock’

Gira 90 graus no sentido anti-horário.

‘clock_flip’

Gira 90 graus no sentido horário e inverte verticalmente.

‘reversal’

Gira 180 graus.

‘hflip’

Inverte horizontalmente.

‘vflip’

Inverte verticalmente.

passthrough

Não aplica a transposição se a geometria de entrada corresponder à especificada pelo valor indicado. Aceita os seguintes valores:

‘none’

Sempre aplica a transposição. (padrão)

‘portrait’

Preserva a geometria retrato (quando altura >= largura).

‘landscape’

Preserva a geometria paisagem (quando largura >= altura).

12.10 yadif_cuda

Desentrelaça o vídeo de entrada usando o algoritmo yadif, porém implementado em CUDA, de modo que pode funcionar como parte de um pipeline acelerado por GPU com nvdec e/ou nvenc.

Aceita os seguintes parâmetros:

mode

O modo de entrelaçamento a adotar. Aceita um dos seguintes valores:

0, send_frame

Produz um quadro para cada quadro.

1, send_field

Produz um quadro para cada campo.

2, send_frame_nospatial

Como send_frame, mas ignora a verificação de entrelaçamento espacial.

3, send_field_nospatial

Como send_field, mas ignora a verificação de entrelaçamento espacial.

O valor padrão é send_frame.

parity

A paridade de campo da imagem assumida para o vídeo entrelaçado de entrada. Aceita um dos seguintes valores:

0, tff

Presume que o campo superior vem primeiro.

1, bff

Presume que o campo inferior vem primeiro.

-1, auto

Habilita a detecção automática da paridade de campo.

O valor padrão é auto. Se o entrelaçamento for desconhecido ou o decoder não exportar essa informação, será presumido que o campo superior vem primeiro.

deint

Especifica quais quadros desentrelaçar. Aceita um dos seguintes valores:

0, all

Desentrelaça todos os quadros.

1, interlaced

Desentrelaça apenas os quadros marcados como entrelaçados.

O valor padrão é all.

13 Filtros de vídeo OpenCL

A seguir, uma descrição dos filtros de vídeo OpenCL atualmente disponíveis.

Para habilitar a compilação desses filtros, é necessário configurar o FFmpeg com --enable-opencl.

Executar filtros OpenCL exige inicializar um dispositivo de hardware e passar esse dispositivo para todos os filtros em qualquer grafo de filtros.

-init_hw_device opencl[=name][:device[,key=value...]]

Inicializa um novo dispositivo de hardware do tipo opencl chamado name, usando os parâmetros de dispositivo fornecidos.

-filter_hw_device name

Passa o dispositivo de hardware chamado name para todos os filtros em qualquer grafo de filtros.

Para obter informações mais detalhadas, consulte https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options

  • Exemplo de escolha do primeiro dispositivo na segunda plataforma, executando o filtro avgblur_opencl com os parâmetros padrão nele.
    -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
    

Como os filtros OpenCL não conseguem acessar dados de quadro na memória normal, todos os dados de quadro precisam ser enviados(hwupload) para superfícies de hardware conectadas ao dispositivo apropriado antes de serem usados e depois baixados(hwdownload) de volta para a memória normal. Observe que o hwupload fará o envio para uma superfície com o mesmo layout do quadro de software, portanto pode ser necessário adicionar um filtro format imediatamente antes para colocar a entrada no formato correto, e o hwdownload não é compatível com todos os formatos na saída - pode ser necessário inserir um filtro format adicional logo em seguida no grafo para colocar a saída em um formato compatível.

13.1 avgblur_opencl

Aplica o filtro de desfoque médio.

O filtro aceita as seguintes opções:

sizeX

Define o tamanho do raio horizontal. O intervalo é [1, 1024] e o valor padrão é 1.

planes

Define quais planos filtrar. O valor padrão é 0xf, com o qual todos os planos são processados.

sizeY

Define o tamanho do raio vertical. O intervalo é [1, 1024] e o valor padrão é 0. Se for zero, o valor de sizeX será usado.

13.1.1 Exemplo

  • Aplica o filtro de desfoque médio com tamanho horizontal e vertical igual a 3, definindo cada pixel da saída como o valor médio da região 7x7 centrada nele na entrada. Nos pixels das bordas da imagem, a região não se estende além dos limites da imagem, portanto coordenadas fora do intervalo não são usadas nos cálculos.
    -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
    

13.2 boxblur_opencl

Aplica um algoritmo boxblur ao vídeo de entrada.

Aceita os seguintes parâmetros:

luma_radius, lr luma_power, lp chroma_radius, cr chroma_power, cp alpha_radius, ar alpha_power, ap

Segue uma descrição das opções aceitas.

luma_radius, lr chroma_radius, cr alpha_radius, ar

Define uma expressão para o raio da caixa em pixels, usada para desfocar o plano de entrada correspondente.

O valor do raio deve ser um número não negativo e não pode ser maior que o valor da expressão min(w,h)/2 para os planos de luma e alfa, nem que min(cw,ch)/2 para os planos de croma.

O valor padrão de luma_radius é "2". Se não especificados, chroma_radius e alpha_radius assumem por padrão o valor correspondente definido para luma_radius.

As expressões podem conter as seguintes constantes:

w h

A largura e a altura da entrada em pixels.

cw ch

A largura e a altura da imagem de croma de entrada em pixels.

hsub vsub

Os valores de subamostragem de croma horizontal e vertical. Por exemplo, no pixel format "yuv422p", hsub é 2 e vsub é 1.

luma_power, lp chroma_power, cp alpha_power, ap

Especifica quantas vezes o filtro boxblur é aplicado ao plano correspondente.

O valor padrão de luma_power é 2. Se não especificados, chroma_power e alpha_power assumem por padrão o valor correspondente definido para luma_power.

Um valor 0 desativa o efeito.

13.2.1 Exemplos

Aplica o filtro boxblur, definindo cada pixel da saída como o valor médio dos raios de caixa luma_radius, chroma_radius e alpha_radius para cada plano, respectivamente. O filtro é aplicado luma_power, chroma_power e alpha_power vezes ao plano correspondente. Nos pixels das bordas da imagem, o raio não se estende além dos limites da imagem, portanto coordenadas fora do intervalo não são usadas nos cálculos.

  • Aplica um filtro boxblur com o raio de luma, croma e alfa definido como 2 e o power de luma, croma e alfa definido como 3. O filtro será executado 3 vezes com raio de caixa definido como 2 para cada plano da imagem.

    -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
    -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
    
  • Aplica um filtro boxblur com o raio de luma definido como 2, luma_power como 1, chroma_radius como 4, chroma_power como 5, alpha_radius como 3 e alpha_power como 7.

No plano de luma, um raio de caixa 2x2 será executado uma vez.

No plano de croma, um raio de caixa 4x4 será executado 5 vezes.

No plano de alfa, um raio de caixa 3x3 será executado 7 vezes.

    -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT

13.3 colorkey_opencl

Seleção de cor-chave (color keying) no espaço de cor RGB.

O filtro aceita as seguintes opções:

color

A cor que será substituída por transparência.

similarity

Porcentagem de similaridade com a cor-chave.

0.01 corresponde apenas à cor-chave exata, enquanto 1.0 corresponde a tudo.

blend

Porcentagem de mesclagem.

0.0 torna os pixels totalmente transparentes ou nada transparentes.

Valores mais altos resultam em pixels semitransparentes, com transparência maior quanto mais a cor do pixel se assemelhar à cor-chave.

13.3.1 Exemplos

  • Torna transparente todo pixel semiverde da entrada, com uma leve mesclagem:
    -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
    

13.4 convolution_opencl

Aplica convolução com matriz 3x3, 5x5 ou 7x7.

O filtro aceita as seguintes opções:

0m 1m 2m 3m

Define a matriz para cada plano. A matriz é uma sequência de 9, 25 ou 49 números com sinal. O valor padrão para cada plano é 0 0 0 0 1 0 0 0 0.

0rdiv 1rdiv 2rdiv 3rdiv

Define o multiplicador para o valor calculado de cada plano. Se não definido ou 0, será a soma de todos os elementos da matriz. O valor da opção deve ser um número de ponto flutuante maior ou igual a 0.0. O valor padrão é 1.0.

0bias 1bias 2bias 3bias

Define o bias de cada plano. Esse valor é somado ao resultado da multiplicação. Útil para tornar a imagem geral mais clara ou mais escura. O valor da opção deve ser um número de ponto flutuante maior ou igual a 0.0. O valor padrão é 0.0.

13.4.1 Exemplos

  • Aplica nitidez:

    -i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT
    
  • Aplica desfoque:

    -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT
    
  • Aplica realce de bordas:

    -i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT
    
  • Aplica detecção de bordas:

    -i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT
    
  • Aplica detector de bordas laplaciano incluindo diagonais:

    -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT
    
  • Aplica relevo (emboss):

    -i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
    

13.5 erosion_opencl

Aplica efeito de erosão ao vídeo.

Este filtro substitui o pixel pelo mínimo local (3x3).

Aceita as seguintes opções:

threshold0 threshold1 threshold2 threshold3

Limita a variação máxima de cada plano. O intervalo é [0, 65535] e o valor padrão é 65535. Se 0, o plano permanece inalterado.

coordinates

Flag que especifica o pixel a ser referenciado. O intervalo é [0, 255] e o valor padrão é 255, ou seja, os oito pixels são usados.

Flags para a região de coordenadas 3x3 local centrada em x:

1 2 3

4 x 5

6 7 8

13.5.1 Exemplo

  • Aplica o filtro de erosão com threshold0 definido como 30, threshold1 definido como 40, threshold2 definido como 50 e coordinates definido como 231, definindo cada pixel da saída como o mínimo local entre os pixels 1, 2, 3, 6, 7, 8 da região 3x3 centrada nele na entrada. Se a diferença entre o pixel de entrada e o mínimo local for maior que o limiar do plano correspondente, o pixel de saída será definido como pixel de entrada - limiar do plano correspondente.
    -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

13.6 deshake_opencl

Filtro de estabilização de vídeo baseado em pontos de características.

O filtro aceita as seguintes opções:

tripod

Simula um tripé, impedindo qualquer movimento de câmera em relação ao quadro original. O padrão é 0.

debug

Se informações de depuração adicionais devem ou não ser exibidas, tanto na saída processada quanto no console.

Observe que, para ver a saída de depuração no console, também é necessário passar -v verbose ao ffmpeg.

A visualização das correspondências de pontos no vídeo de saída só é compatível com entrada RGB.

O padrão é 0.

adaptive_crop

Se deve ou não fazer um pequeno corte nas bordas para reduzir a quantidade de pixels espelhados.

O padrão é 1.

refine_features

Se os pontos de características devem ou não ser refinados em nível de subpixel.

Isso pode ser desativado para obter um leve ganho de desempenho às custas da precisão.

O padrão é 1.

smooth_strength

A intensidade da suavização aplicada ao trajeto da câmera, de 0.0 a 1.0.

1.0 é a intensidade máxima de suavização, enquanto valores menores resultam em menos suavização.

0.0 faz o filtro escolher adaptativamente uma intensidade de suavização quadro a quadro.

O padrão é 0.0.

smooth_window_multiplier

Controla o tamanho da janela de suavização (o número de quadros armazenados em buffer para determinar as informações de movimento).

O tamanho da janela de suavização é determinado multiplicando a taxa de quadros do vídeo por esse número.

Os valores aceitáveis variam de 0.1 a 10.0.

Valores maiores aumentam a quantidade de dados de movimento disponíveis para determinar como suavizar o trajeto da câmera, o que pode melhorar a suavidade, mas também aumenta a latência e o uso de memória.

O padrão é 2.0.

13.6.1 Exemplos

  • Estabiliza um vídeo com intensidade de suavização média e fixa:

    -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
    
  • Estabiliza um vídeo com depuração ativada (tanto no console quanto no vídeo renderizado):

    -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
    

13.7 dilation_opencl

Aplica efeito de dilatação ao vídeo.

Este filtro substitui o pixel pelo máximo local (3x3).

Aceita as seguintes opções:

threshold0 threshold1 threshold2 threshold3

Limita a variação máxima de cada plano. O intervalo é [0, 65535] e o valor padrão é 65535. Se 0, o plano permanece inalterado.

coordinates

Flag que especifica o pixel a ser referenciado. O intervalo é [0, 255] e o valor padrão é 255, ou seja, os oito pixels são usados.

Flags para a região de coordenadas 3x3 local centrada em x:

1 2 3

4 x 5

6 7 8

13.7.1 Exemplo

  • Aplica o filtro de dilatação com threshold0 definido como 30, threshold1 definido como 40, threshold2 definido como 50 e coordinates definido como 231, definindo cada pixel da saída como o máximo local entre os pixels 1, 2, 3, 6, 7, 8 da região 3x3 centrada nele na entrada. Se a diferença entre o pixel de entrada e o máximo local for maior que o limiar do plano correspondente, o pixel de saída será definido como pixel de entrada + limiar do plano correspondente.
    -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

13.8 nlmeans_opencl

Filtro de redução de ruído Non-local Means via OpenCL; este filtro aceita as mesmas opções que o nlmeans.

13.9 overlay_opencl

Sobrepõe um vídeo a outro.

Recebe duas entradas e tem uma saída. A primeira entrada é o vídeo "principal" sobre o qual a segunda entrada é sobreposta. Este filtro exige o mesmo layout de memória para todas as entradas. Portanto, pode ser necessária uma conversão de formato.

O filtro aceita as seguintes opções:

x

Define a coordenada x do vídeo sobreposto no vídeo principal. O valor padrão é 0.

y

Define a coordenada y do vídeo sobreposto no vídeo principal. O valor padrão é 0.

13.9.1 Exemplos

  • Sobrepõe uma imagem LOGO no canto superior esquerdo do vídeo INPUT. Ambas as entradas estão no formato yuv420p.

    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
    
  • As entradas têm o mesmo layout de memória para os canais de cor; a sobreposição tem um plano alfa adicional, como no caso em que INPUT é yuv420p e LOGO é yuva420p.

    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
    

13.10 pad_opencl

Adiciona preenchimento à imagem de entrada e posiciona a entrada original nas coordenadas x, y fornecidas.

Aceita as seguintes opções:

width, w height, h

Especifica uma expressão para o tamanho da imagem de saída com o preenchimento adicionado. Se o valor de width ou height for 0, o tamanho de entrada correspondente é usado na saída.

A expressão de width pode referenciar o valor definido pela expressão de height, e vice-versa.

O valor padrão de width e height é 0.

x y

Especifica os deslocamentos para posicionar a imagem de entrada dentro da área preenchida, em relação à borda superior/esquerda da imagem de saída.

A expressão de x pode referenciar o valor definido pela expressão de y, e vice-versa.

O valor padrão de x e y é 0.

Se x ou y forem avaliados como um número negativo, eles serão alterados para que a imagem de entrada fique centralizada na área preenchida.

color

Especifica a cor da área preenchida. Para a sintaxe desta opção, consulte a seção "Color" (ffmpeg-utils) no manual do ffmpeg-utils.

aspect

Preenche até uma proporção de aspecto, em vez de uma resolução.

O valor das opções width, height, x e y são expressões que contêm as seguintes constantes:

in_w in_h

A largura e a altura do vídeo de entrada.

iw ih

São o mesmo que in_w e in_h.

out_w out_h

A largura e a altura da saída (o tamanho da área preenchida), conforme especificado pelas expressões width e height.

ow oh

São o mesmo que out_w e out_h.

x y

Os deslocamentos x e y conforme especificados pelas expressões x e y, ou NAN se ainda não especificados.

a

o mesmo que iw / ih

sar

proporção de aspecto de amostra da entrada

dar

proporção de aspecto de exibição da entrada; é o mesmo que (iw / ih) * sar

13.11 prewitt_opencl

Aplica o operador de Prewitt (https://en.wikipedia.org/wiki/Prewitt_operator) ao fluxo de vídeo de entrada.

O filtro aceita a seguinte opção:

planes

Define quais planos filtrar. O valor padrão é 0xf, com o qual todos os planos são processados.

scale

Define o valor que será multiplicado pelo resultado filtrado. O intervalo é [0.0, 65535] e o valor padrão é 1.0.

delta

Define o valor que será somado ao resultado filtrado. O intervalo é [-65535, 65535] e o valor padrão é 0.0.

13.11.1 Exemplo

  • Aplica o operador de Prewitt com scale definido como 2 e delta definido como 10.
    -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

13.12 program_opencl

Filtra o vídeo usando um programa OpenCL.

source

Arquivo-fonte do programa OpenCL.

kernel

Nome do kernel no programa.

inputs

Número de entradas do filtro. O padrão é 1.

size, s

Tamanho dos quadros de saída. O padrão é o mesmo da primeira entrada.

O filtro program_opencl também é compatível com as opções framesync.

O arquivo-fonte do programa precisa conter uma função kernel com o nome fornecido, que será executada uma vez para cada plano da saída. Cada execução em um plano é enfileirada como um NDRange global 2D separado, com um work-item para cada pixel a ser gerado. O deslocamento do ID global de cada work-item é, portanto, as coordenadas de um pixel na imagem de destino.

A função kernel precisa receber os seguintes argumentos:

  • Imagem de destino, __write_only image2d_t.

Essa imagem se tornará a saída; o kernel deve escrevê-la por completo.

  • Índice do quadro, unsigned int.

Este é um contador que começa em zero e aumenta em um a cada quadro.

  • Imagens de origem, __read_only image2d_t.

Estas são as imagens mais recentes de cada entrada. O kernel pode ler a partir delas para gerar a saída, mas não é possível escrever nelas.

Exemplos de programas:

  • Copia a entrada para a saída (a saída deve ter o mesmo tamanho da entrada).

    __kernel void copy(__write_only image2d_t destination,
                       unsigned int index,
                       __read_only  image2d_t source)
    {
        const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
    
        int2 location = (int2)(get_global_id(0), get_global_id(1));
    
        float4 value = read_imagef(source, sampler, location);
    
        write_imagef(destination, location, value);
    }
    
  • Aplica uma transformação simples, girando a entrada em uma quantidade crescente conforme o contador de índice. Os valores dos pixels são interpolados linearmente pelo sampler, e a saída não precisa ter as mesmas dimensões da entrada.

    __kernel void rotate_image(__write_only image2d_t dst,
                               unsigned int index,
                               __read_only  image2d_t src)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
    
        float angle = (float)index / 100.0f;
    
        float2 dst_dim = convert_float2(get_image_dim(dst));
        float2 src_dim = convert_float2(get_image_dim(src));
    
        float2 dst_cen = dst_dim / 2.0f;
        float2 src_cen = src_dim / 2.0f;
    
        int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
    
        float2 dst_pos = convert_float2(dst_loc) - dst_cen;
        float2 src_pos = {
            cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
            sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
        };
        src_pos = src_pos * src_dim / dst_dim;
    
        float2 src_loc = src_pos + src_cen;
    
        if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
            src_loc.x > src_dim.x || src_loc.y > src_dim.y)
            write_imagef(dst, dst_loc, 0.5f);
        else
            write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
    }
    
  • Mescla duas entradas, com a quantidade usada de cada entrada variando conforme o contador de índice.

    __kernel void blend_images(__write_only image2d_t dst,
                               unsigned int index,
                               __read_only  image2d_t src1,
                               __read_only  image2d_t src2)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
    
        float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
    
        int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
        int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
        int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
    
        float4 val1 = read_imagef(src1, sampler, src1_loc);
        float4 val2 = read_imagef(src2, sampler, src2_loc);
    
        write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
    }
    

13.13 remap_opencl

Remapeia pixels usando os fluxos de vídeo de entrada: 2º (Xmap) e 3º (Ymap).

O pixel de destino na posição (X, Y) será obtido da posição de origem (x, y), onde x = Xmap(X, Y) e y = Ymap(X, Y). Se os valores de mapeamento estiverem fora do intervalo, será usado o valor zero para o pixel de destino.

Os fluxos de vídeo de entrada Xmap e Ymap devem ter as mesmas dimensões. O fluxo de vídeo de saída terá as dimensões dos fluxos de vídeo Xmap/Ymap. Os fluxos de vídeo de entrada Xmap e Ymap estão no pixel format float de 32 bits, canal único.

interp

Especifica a interpolação usada para o remapeamento dos pixels. Os valores permitidos são near e linear. O valor padrão é linear.

fill

Especifica a cor dos pixels não mapeados. Para a sintaxe desta opção, consulte a seção "Color" (ffmpeg-utils) no manual do ffmpeg-utils. A cor padrão é black.

13.14 roberts_opencl

Aplica o operador de cruz de Roberts (https://en.wikipedia.org/wiki/Roberts_cross) ao fluxo de vídeo de entrada.

O filtro aceita a seguinte opção:

planes

Define quais planos filtrar. O valor padrão é 0xf, com o qual todos os planos são processados.

scale

Define o valor que será multiplicado pelo resultado filtrado. O intervalo é [0.0, 65535] e o valor padrão é 1.0.

delta

Define o valor que será somado ao resultado filtrado. O intervalo é [-65535, 65535] e o valor padrão é 0.0.

13.14.1 Exemplo

  • Aplica o operador de cruz de Roberts com scale definido como 2 e delta definido como 10
    -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

13.15 sobel_opencl

Aplica o operador de Sobel (https://en.wikipedia.org/wiki/Sobel_operator) ao fluxo de vídeo de entrada.

O filtro aceita a seguinte opção:

planes

Define quais planos filtrar. O valor padrão é 0xf, com o qual todos os planos são processados.

scale

Define o valor que será multiplicado pelo resultado filtrado. O intervalo é [0.0, 65535] e o valor padrão é 1.0.

delta

Define o valor que será somado ao resultado filtrado. O intervalo é [-65535, 65535] e o valor padrão é 0.0.

13.15.1 Exemplo

  • Aplica o operador de Sobel com scale definido como 2 e delta definido como 10
    -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

13.16 tonemap_opencl

Realiza a conversão de HDR(PQ/HLG) para SDR com mapeamento de tons.

Aceita os seguintes parâmetros:

tonemap

Especifica o operador de mapeamento de tons a ser usado. É o mesmo que a opção tonemap em tonemap.

param

Ajusta o algoritmo de mapeamento de tons. É o mesmo que a opção param em tonemap.

desat

Aplica dessaturação às altas luzes que excedem esse nível de brilho. Quanto maior o parâmetro, mais informação de cor será preservada. Essa configuração ajuda a evitar cores estouradas de forma pouco natural nos super-realces, fazendo-as transitar (suavemente) para o branco. Isso torna as imagens mais naturais, ao custo de reduzir a informação sobre cores fora do intervalo.

O valor padrão é 0.5, e o algoritmo aqui é atualmente um pouco diferente da versão em CPU do tonemap. Um valor de 0.0 desativa esta opção.

threshold

Os parâmetros do algoritmo de tonemapping são ajustados individualmente para cada cena. E um limiar é usado para detectar se a cena mudou ou não. Se a distância entre o brilho médio do quadro atual e a média corrente exceder um valor de limiar, o brilho médio e de pico da cena são recalculados. O valor padrão é 0.2.

format

Especifica o pixel format de saída.

Os formatos atualmente compatíveis são:

p010 nv12 range, r

Define a faixa de cor de saída.

Os valores possíveis são:

tv/mpeg pc/jpeg

O padrão é o mesmo da entrada.

primaries, p

Define as primárias de cor de saída.

Os valores possíveis são:

bt709 bt2020

O padrão é o mesmo da entrada.

transfer, t

Define as características de transferência de saída.

Os valores possíveis são:

bt709 bt2020

O padrão é bt709.

matrix, m

Define a matriz do espaço de cor de saída.

Os valores possíveis são:

bt709 bt2020

O padrão é o mesmo da entrada.

13.16.1 Exemplo

  • Converte vídeo HDR(PQ/HLG) para o formato p010 com característica de transferência bt2020, usando o operador linear.
    -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
    

13.17 unsharp_opencl

Aplica nitidez ou desfoque ao vídeo de entrada.

Aceita os seguintes parâmetros:

luma_msize_x, lx

Define o tamanho horizontal da matriz de luma. O intervalo é [1, 23] e o valor padrão é 5.

luma_msize_y, ly

Define o tamanho vertical da matriz de luma. O intervalo é [1, 23] e o valor padrão é 5.

luma_amount, la

Define a intensidade do efeito de luma. O intervalo é [-10, 10] e o valor padrão é 1.0.

Valores negativos desfocam o vídeo de entrada, enquanto valores positivos aumentam a nitidez; um valor zero desativa o efeito.

chroma_msize_x, cx

Define o tamanho horizontal da matriz de croma. O intervalo é [1, 23] e o valor padrão é 5.

chroma_msize_y, cy

Define o tamanho vertical da matriz de croma. O intervalo é [1, 23] e o valor padrão é 5.

chroma_amount, ca

Define a intensidade do efeito de croma. O intervalo é [-10, 10] e o valor padrão é 0.0.

Valores negativos desfocam o vídeo de entrada, enquanto valores positivos aumentam a nitidez; um valor zero desativa o efeito.

Todos os parâmetros são opcionais e, por padrão, equivalem à string ’5:5:1.0:5:5:0.0’.

13.17.1 Exemplos

  • Aplica um forte efeito de nitidez de luma:

    -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
    
  • Aplica um forte desfoque tanto nos parâmetros de luma quanto de croma:

    -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
    

13.18 xfade_opencl

Aplica uma transição cruzada (cross fade) entre dois vídeos com um efeito de transição personalizado, usando OpenCL.

Aceita as seguintes opções:

transition

Define um dos efeitos de transição possíveis.

custom

Seleciona o efeito de transição custom; a descrição real da transição será obtida a partir das opções source e kernel.

fade wipeleft wiperight wipeup wipedown slideleft slideright slideup slidedown

O efeito de transição padrão é fade.

source

Arquivo de código-fonte do programa OpenCL para a transição custom.

kernel

Define o nome do kernel a ser usado para a transição custom, a partir do arquivo de código-fonte do programa.

duration

Define a duração da transição de vídeo.

offset

Define o instante de início da transição em relação ao primeiro vídeo.

O arquivo de código-fonte do programa deve conter uma função kernel com o nome indicado, que será executada uma vez para cada plano da saída. Cada execução em um plano é enfileirada como um NDRange global 2D independente, com um work-item para cada pixel a ser gerado. Portanto, o deslocamento do ID global de cada work-item corresponde às coordenadas de um pixel na imagem de destino.

A função kernel precisa receber os seguintes argumentos:

  • Imagem de destino, __write_only image2d_t.

Essa imagem se tornará a saída; o kernel deve escrevê-la por completo.

  • Primeira imagem de origem, __read_only image2d_t. Segunda imagem de origem, __read_only image2d_t.

Essas são as imagens mais recentes de cada entrada. O kernel pode lê-las para gerar a saída, mas não pode escrever nelas.

  • Progresso da transição, float. Esse valor está sempre entre 0 e 1, inclusive.

Programas de exemplo:

  • Aplica o efeito de transição de cortina de pontos:
    __kernel void blend_images(__write_only image2d_t dst,
                               __read_only  image2d_t src1,
                               __read_only  image2d_t src2,
                               float progress)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
        int2  p = (int2)(get_global_id(0), get_global_id(1));
        float2 rp = (float2)(get_global_id(0), get_global_id(1));
        float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
        rp = rp / dim;
    
        float2 dots = (float2)(20.0, 20.0);
        float2 center = (float2)(0,0);
        float2 unused;
    
        float4 val1 = read_imagef(src1, sampler, p);
        float4 val2 = read_imagef(src2, sampler, p);
        bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
    
        write_imagef(dst, p, next ? val1 : val2);
    }
    

14 Filtros de vídeo VAAPI

Os filtros de vídeo VAAPI normalmente são usados com um decoder VAAPI e um encoder VAAPI. A seguir, uma descrição dos filtros de vídeo VAAPI.

Para habilitar a compilação desses filtros, é necessário configurar o FFmpeg com --enable-vaapi.

Para usar os filtros vaapi, é necessário configurar corretamente o dispositivo vaapi. Para mais informações, leia https://trac.ffmpeg.org/wiki/Hardware/VAAPI

14.1 overlay_vaapi

Sobrepõe um vídeo sobre outro.

Recebe duas entradas e tem uma saída. A primeira entrada é o vídeo "principal" sobre o qual a segunda entrada é sobreposta.

O filtro aceita as seguintes opções:

x y

Define expressões para as coordenadas x e y do vídeo sobreposto no vídeo principal.

O valor padrão é "0" para ambas as expressões.

w h

Define expressões para a largura e a altura do vídeo sobreposto no vídeo principal.

Os valores padrão são ’overlay_iw’ para ’w’ e ’overlay_ih*w/overlay_iw’ para ’h’.

As expressões podem conter os seguintes parâmetros:

main_w, W main_h, H

A largura e a altura da entrada principal.

overlay_iw overlay_ih

A largura e a altura da entrada de overlay.

overlay_w, w overlay_h, h

A largura e a altura de saída de overlay.

overlay_x, x overlay_y, y

Posição da camada de overlay dentro do vídeo principal

alpha

Define a transparência do vídeo sobreposto. O intervalo permitido é de 0.0 a 1.0. Quanto maior o valor, menor a transparência. O valor padrão é 1.0.

eof_action

Consulte framesync.

shortest

Consulte framesync.

repeatlast

Consulte framesync.

Este filtro também é compatível com as opções de framesync.

14.1.1 Exemplos

  • Sobrepõe uma imagem LOGO no canto superior esquerdo do vídeo INPUT. Ambas as entradas deste filtro estão no formato yuv420p.

    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT
    
  • Sobrepõe uma imagem LOGO no deslocamento (200, 100) a partir do canto superior esquerdo do vídeo INPUT. As entradas têm o mesmo layout de memória para os canais de cor; o overlay tem um plano alfa adicional, já que o INPUT é yuv420p e o LOGO é yuva420p.

    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_vaapi=x=200:y=100:w=400:h=300:alpha=1.0, hwdownload, format=nv12" OUTPUT
    

14.2 tonemap_vaapi

Realiza mapeamento de tons de HDR para SDR ou de HDR para HDR. Atualmente aceita apenas HDR10 como entrada.

Aceita os seguintes parâmetros:

format

Especifica o pixel format de saída.

O padrão é nv12 para mapeamento de tons de HDR para SDR e p010 para mapeamento de tons de HDR para HDR.

primaries, p

Define as primárias de cor de saída.

O padrão é bt709 para mapeamento de tons de HDR para SDR, e o mesmo da entrada para mapeamento de tons de HDR para HDR.

transfer, t

Define as características de transferência de saída.

O padrão é bt709 para mapeamento de tons de HDR para SDR, e o mesmo da entrada para mapeamento de tons de HDR para HDR.

matrix, m

Define a matriz de espaço de cor de saída.

O padrão é bt709 para mapeamento de tons de HDR para SDR, e o mesmo da entrada para mapeamento de tons de HDR para HDR.

display

Define o volume de cor do display de masterização de saída (mastering display colour volume). É fornecido por uma lista de dois valores separados por ’|’, sendo que cada um desses valores é composto por dois valores separados por espaço. Define as primárias x e y do display na ordem G, B, R e, em seguida, o ponto branco x e y e as luminâncias mínima e máxima nominais do display.

O mapeamento de tons de HDR para HDR será realizado quando esta opção for definida.

light

Define as informações de nível de luz do conteúdo de saída. Aceita 2 valores separados por espaço: o primeiro é o nível máximo de luz e o segundo é o nível médio máximo de luz.

É ignorado no mapeamento de tons de HDR para SDR, e opcional no mapeamento de tons de HDR para HDR.

14.2.1 Exemplo

  • Converte um vídeo HDR (HDR10) para o formato p010 com características de transferência bt2020

    tonemap_vaapi=format=p010:t=bt2020-10
    
  • Converte um vídeo HDR em vídeo HDR

    tonemap_vaapi=display=7500\ 3000|34000\ 16000|13250\ 34500|15635\ 16450|500\ 10000000
    

14.3 hstack_vaapi

Empilha os vídeos de entrada horizontalmente.

Esta é a variante VA-API do filtro hstack; cada fluxo de entrada pode ter uma altura diferente, e este filtro vai reduzir/ampliar cada fluxo de entrada mantendo o aspecto original.

Aceita as seguintes opções:

inputs

Consulte hstack.

shortest

Consulte hstack.

height

Define a altura da saída. Se definida como 0, este filtro ajusta a altura da saída para a altura do primeiro fluxo de entrada. O valor padrão é 0.

14.4 vstack_vaapi

Empilha os vídeos de entrada verticalmente.

Esta é a variante VA-API do filtro vstack; cada fluxo de entrada pode ter uma largura diferente, e este filtro vai reduzir/ampliar cada fluxo de entrada mantendo o aspecto original.

Aceita as seguintes opções:

inputs

Consulte vstack.

shortest

Consulte vstack.

width

Define a largura da saída. Se definida como 0, este filtro ajusta a largura da saída para a largura do primeiro fluxo de entrada. O valor padrão é 0.

14.5 xstack_vaapi

Empilha as entradas de vídeo em um layout personalizado.

Esta é a variante VA-API do filtro xstack; cada fluxo de entrada pode ter um tamanho diferente, e este filtro vai reduzir/ampliar cada fluxo de entrada para o tamanho de saída indicado, ou para o tamanho do primeiro fluxo de entrada.

Aceita as seguintes opções:

inputs

Consulte xstack.

shortest

Consulte xstack.

layout

Consulte xstack. Além disso, isso permite ao usuário fornecer o tamanho de saída para cada fluxo de entrada.

xstack_vaapi=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080

grid

Consulte xstack.

grid_tile_size

Define o tamanho de saída para cada fluxo de entrada quando grid está definido. Se esta opção não for definida, este filtro ajusta o tamanho de saída, por padrão, para o tamanho do primeiro fluxo de entrada. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils.

fill

Consulte xstack.

14.6 pad_vaapi

Adiciona preenchimento à imagem de entrada e posiciona a entrada original nas coordenadas x, y fornecidas.

Aceita as seguintes opções:

width, w height, h

Especifica uma expressão para o tamanho da imagem de saída com o preenchimento adicionado. Se o valor de width ou height for 0, o tamanho de entrada correspondente é usado para a saída.

A expressão de width pode fazer referência ao valor definido pela expressão de height, e vice-versa.

O valor padrão de width e height é 0.

x y

Especifica os deslocamentos para posicionar a imagem de entrada dentro da área de preenchimento, em relação à borda superior/esquerda da imagem de saída.

A expressão de x pode fazer referência ao valor definido pela expressão de y, e vice-versa.

O valor padrão de x e y é 0.

Se x ou y forem avaliados como um número negativo, eles serão alterados para que a imagem de entrada fique centralizada na área de preenchimento.

color

Especifica a cor da área de preenchimento. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils.

aspect

Aplica o preenchimento por proporção de aspecto em vez de por resolução.

Os valores das opções width, height, x e y são expressões que contêm as seguintes constantes:

in_w in_h

A largura e a altura do vídeo de entrada.

iw ih

São o mesmo que in_w e in_h.

out_w out_h

A largura e a altura de saída (o tamanho da área de preenchimento), conforme especificado pelas expressões de width e height.

ow oh

São o mesmo que out_w e out_h.

x y

Os deslocamentos x e y conforme especificado pelas expressões de x e y, ou NAN se ainda não especificados.

a

o mesmo que iw / ih

sar

proporção de aspecto da amostra de entrada

dar

proporção de aspecto de exibição da entrada, é o mesmo que (iw / ih) * sar

14.7 drawbox_vaapi

Desenha uma caixa colorida sobre a imagem de entrada.

Aceita os seguintes parâmetros:

x y

As expressões que especificam as coordenadas do canto superior esquerdo da caixa. O padrão é 0.

width, w height, h

As expressões que especificam a largura e a altura da caixa; se forem 0, são interpretadas como a largura e a altura da entrada. O padrão é 0.

color, c

Especifica a cor da caixa a ser desenhada. Para a sintaxe geral desta opção, consulte a seção (ffmpeg-utils)"Color" do manual do ffmpeg-utils.

thickness, t

A expressão que define a espessura da borda da caixa. Um valor fill cria uma caixa preenchida. O valor padrão é 3.

Consulte abaixo a lista de constantes aceitas.

replace

Com o valor 1, os pixels da caixa desenhada sobrescrevem os pixels de cor e alfa do vídeo. O padrão é 0, que compõe a caixa sobre o vídeo de entrada.

Os parâmetros x, y, w, h e t são expressões que contêm as seguintes constantes:

in_h, ih in_w, iw

A largura e a altura da entrada.

x y

As coordenadas de deslocamento x e y onde a caixa é desenhada.

w h

A largura e a altura da caixa desenhada.

t

A espessura da caixa desenhada.

14.7.1 Exemplos

  • Desenha uma caixa preta ao redor da borda da imagem de entrada:

    drawbox
    
  • Desenha uma caixa vermelha com opacidade de 50%:

    drawbox=10:20:200:60:red@0.5
    

O exemplo anterior pode ser especificado como:

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
  • Preenche a caixa com a cor rosa:

    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • Desenha uma máscara vermelha de 2 pixels com proporção 2.40:1:

    drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
    

15 Filtros de vídeo VideoToolbox

A seguir, uma descrição dos filtros de vídeo VideoToolbox atualmente disponíveis.

O filtro VideoToolbox depende do framework VideoToolbox e é detectado automaticamente ao compilar o ffmpeg para uma plataforma Apple como o macOS. Adicione --enable-videotoolbox ao configure se a detecção automática estiver desativada.

15.1 scale_vt

Redimensiona e converte os parâmetros de cor usando o VTPixelTransferSession.

O filtro aceita as seguintes opções:

w h

Define a expressão de dimensão do vídeo de saída. O valor padrão é a dimensão da entrada.

color_matrix

Define a matriz de espaço de cor de saída.

color_primaries

Define as primárias de cor de saída.

color_transfer

Define as características de transferência de saída.

15.1.1 Exemplos

  • Realiza a conversão de HDR para SDR e redimensiona para a metade do tamanho da entrada
    ffmpeg -hwaccel videotoolbox \
            -hwaccel_output_format videotoolbox_vld \
            -i hdr.mov \
            -c:v hevc_videotoolbox \
            -profile:v main \
            -b:v 3M \
            -vf scale_vt=w=iw/2:h=ih/2:color_matrix=bt709:color_primaries=bt709:color_transfer=bt709 \
            -c:a copy \
            -tag:v hvc1 \
            sdr.mp4
    

15.2 transpose_vt

Transpõe linhas por colunas no vídeo de entrada e, opcionalmente, o inverte. Para exemplos mais detalhados, consulte o filtro de vídeo transpose, que compartilha a maior parte das mesmas opções.

Aceita os seguintes parâmetros:

dir

Especifica a direção da transposição.

Pode assumir os seguintes valores:

‘cclock_flip’

Gira 90 graus no sentido anti-horário e inverte verticalmente. (padrão)

‘clock’

Gira 90 graus no sentido horário.

‘cclock’

Gira 90 graus no sentido anti-horário.

‘clock_flip’

Gira 90 graus no sentido horário e inverte verticalmente.

‘hflip’

Inverte o vídeo de entrada horizontalmente.

‘vflip’

Inverte o vídeo de entrada verticalmente.

passthrough

Não aplica a transposição se a geometria de entrada corresponder à especificada pelo valor indicado. Aceita os seguintes valores:

‘none’

Sempre aplica a transposição. (padrão)

‘portrait’

Preserva a geometria retrato (quando height >= width).

‘landscape’

Preserva a geometria paisagem (quando width >= height).

16 Filtros de vídeo Vulkan

A seguir, uma descrição dos filtros de vídeo Vulkan atualmente disponíveis.

Para habilitar a compilação desses filtros, é necessário configurar o FFmpeg com --enable-vulkan e também com --enable-libglslang ou --enable-libshaderc.

Para executar filtros Vulkan, é necessário inicializar um dispositivo de hardware e passar esse dispositivo para todos os filtros de qualquer grafo de filtros.

-init_hw_device vulkan[=name][:device[,key=value...]]

Inicializa um novo dispositivo de hardware do tipo vulkan chamado name, usando os parâmetros de dispositivo fornecidos e as opções no formato key=value. As seguintes opções são compatíveis:

debug

Ativa as camadas de validação se definido como 1.

linear_images

Aloca imagens lineares. Não se aplica à decodificação.

disable_multiplane

Desabilita imagens multiplano. Não se aplica à decodificação.

avoid_host_import

Evita o uso de importações dinâmicas de memória do host, em favor de um memcpy() normal em um buffer previamente mapeado.

-filter_hw_device name

Passa o dispositivo de hardware chamado name para todos os filtros de qualquer filtergraph.

Para informações mais detalhadas, consulte https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options

  • Exemplo de seleção do primeiro dispositivo e execução do filtro nlmeans_vulkan com parâmetros padrão nele.
    -init_hw_device vulkan=vk:0 -filter_hw_device vk -i INPUT -vf "hwupload,nlmeans_vulkan,hwdownload" OUTPUT
    

Como os filtros Vulkan não conseguem acessar os dados de quadro na memória normal, todos os dados de quadro precisam ser enviados (hwupload) para superfícies de hardware conectadas ao dispositivo apropriado antes de serem usados, e depois baixados (hwdownload) de volta para a memória normal. Observe que o hwupload envia os dados para um quadro com o mesmo layout do quadro de software, portanto pode ser necessário adicionar um filtro format imediatamente antes para colocar a entrada no formato correto, e o hwdownload não é compatível com todos os formatos na saída — geralmente é necessário inserir um filtro format adicional logo em seguida no filtergraph para obter a saída em um formato compatível.

16.1 avgblur_vulkan

Aplica um filtro de desfoque por média, implementado na GPU usando Vulkan.

O filtro aceita as seguintes opções:

sizeX

Define o tamanho do raio horizontal. O intervalo é [1, 32] e o valor padrão é 3.

sizeY

Define o tamanho do raio vertical. O intervalo é [1, 32] e o valor padrão é 3.

planes

Define quais planos serão filtrados. O valor padrão é 0xf, com o qual todos os planos são processados.

16.2 blend_vulkan

Combina dois quadros Vulkan entre si.

O filtro blend recebe dois fluxos de entrada e gera um fluxo de saída; a primeira entrada é a camada "top" (superior) e a segunda entrada é a camada "bottom" (inferior). Por padrão, a saída termina quando a entrada mais longa termina.

A seguir, uma descrição das opções aceitas.

c0_mode c1_mode c2_mode c3_mode all_mode

Define o modo de mesclagem para um componente de pixel específico, ou para todos os componentes de pixel no caso de all_mode. O valor padrão é normal.

Os valores disponíveis para os modos de componente são:

‘normal’ ‘multiply’

16.3 bwdif_vulkan

Desentrelaçador que usa o bwdif, o algoritmo "Bob Weaver Deinterlacing Filter", implementado na GPU usando Vulkan.

Aceita os seguintes parâmetros:

mode

O modo de entrelaçamento a ser adotado. Aceita um dos seguintes valores:

0, send_frame

Gera um quadro de saída para cada quadro.

1, send_field

Gera um quadro de saída para cada campo.

O valor padrão é send_field.

parity

A paridade de campo de imagem presumida para o vídeo entrelaçado de entrada. Aceita um dos seguintes valores:

0, tff

Presume que o campo superior vem primeiro.

1, bff

Presume que o campo inferior vem primeiro.

-1, auto

Ativa a detecção automática da paridade de campo.

O valor padrão é auto. Se o entrelaçamento for desconhecido ou o decoder não exportar essa informação, presume-se que o campo superior vem primeiro.

deint

Especifica quais quadros serão desentrelaçados. Aceita um dos seguintes valores:

0, all

Desentrelaça todos os quadros.

1, interlaced

Desentrelaça apenas os quadros marcados como entrelaçados.

O valor padrão é all.

16.4 chromaber_vulkan

Aplica um efeito que emula a aberração cromática. Funciona melhor com entradas RGB, mas também produz um efeito semelhante com entradas YCbCr.

dist_x

Multiplicador de deslocamento horizontal. A posição de cada pixel de croma é multiplicada por esse valor, a partir do centro da imagem. O padrão é 0.

dist_y

Da mesma forma, isso define o multiplicador de deslocamento vertical. O padrão é 0.

16.5 color_vulkan

Fonte de vídeo que cria um quadro Vulkan de uma cor sólida. Útil para benchmarking ou para overlay.

Aceita os seguintes parâmetros:

color

A cor a ser usada. Pode ser um nome ou um valor hexadecimal. O valor padrão é black.

size

O tamanho do quadro de saída. O valor padrão é 1920x1080.

rate

A taxa de quadros de saída. O valor padrão é 60 quadros por segundo.

duration

A duração do vídeo. O valor padrão é -0.000001.

sar

A proporção de aspecto do sinal de vídeo. O valor padrão é 1/1.

format

O pixel format dos quadros Vulkan de saída. O valor padrão é yuv444p.

out_range

Define o intervalo de amostra YCbCr de saída.

Isso permite substituir o valor detectado automaticamente, além de permitir forçar um valor específico usado para a saída e o encoder. Se não for especificado, o intervalo depende do pixel format. Valores possíveis:

‘auto/unknown’

Escolhe automaticamente.

‘jpeg/full/pc’

Define o intervalo completo (0-255 no caso de luma de 8 bits).

‘mpeg/limited/tv’

Define o intervalo "MPEG" (16-235 no caso de luma de 8 bits).

16.6 vflip_vulkan

Inverte uma imagem verticalmente.

16.7 hflip_vulkan

Inverte uma imagem horizontalmente.

16.8 flip_vulkan

Inverte uma imagem ao longo dos eixos vertical e horizontal.

16.9 gblur_vulkan

Aplica um filtro de desfoque gaussiano em quadros Vulkan.

O filtro aceita as seguintes opções:

sigma

Define o sigma horizontal, o desvio padrão do desfoque gaussiano. O padrão é 0.5.

sigmaV

Define o sigma vertical; se negativo, será igual a sigma. O padrão é -1.

planes

Define quais planos serão filtrados. Por padrão, todos os planos são filtrados.

size

Define o tamanho do kernel ao longo do eixo horizontal. O padrão é 19.

sizeV

Define o tamanho do kernel ao longo do eixo vertical. O padrão é 0, que define o uso do mesmo valor de size.

16.10 nlmeans_vulkan

Remove o ruído dos quadros usando o algoritmo Non-Local Means, implementado na GPU por meio do Vulkan. É compatível com mais pixel formats do que nlmeans ou nlmeans_opencl, incluindo suporte a canal alfa.

O filtro aceita as seguintes opções.

s

Define a intensidade de redução de ruído para todos os componentes. O padrão é 1.0. Deve estar no intervalo [0.0, 100.0].

p

Define o tamanho de patch para todos os planos. O padrão é 7. Deve ser um número ímpar no intervalo [0, 99].

r

Define o tamanho de pesquisa. O padrão é 15. Deve ser um número ímpar no intervalo [0, 99].

t

Define o paralelismo. O padrão é 8. Deve ser um número no intervalo [1, 64]. Valores maiores usam mais VRAM, mas podem não resultar em maior velocidade. O valor ideal depende do hardware e da entrada.

s0 s1 s2 s3

Define a intensidade de redução de ruído para um componente específico. O padrão é 1.0, igual a s. Deve estar no intervalo [0.0, 100.0]. O valor 0.0 desativa a redução de ruído nesse componente.

p0 p1 p2 p3

Define o tamanho de patch para um componente específico. O padrão é 7, igual a p. Deve ser um número ímpar no intervalo [0, 99].

16.11 overlay_vulkan

Sobrepõe um vídeo a outro.

Recebe duas entradas e produz uma saída. A primeira entrada é o vídeo "principal", sobre o qual a segunda entrada é sobreposta. Este filtro exige que todas as entradas usem o mesmo pixel format. Portanto, pode ser necessária uma conversão de formato.

O filtro aceita as seguintes opções:

x

Define a coordenada x do vídeo sobreposto em relação ao vídeo principal. O valor padrão é 0.

y

Define a coordenada y do vídeo sobreposto em relação ao vídeo principal. O valor padrão é 0.

16.12 transpose_vulkan

Transpõe linhas e colunas no vídeo de entrada e, opcionalmente, o inverte. Para exemplos mais detalhados, consulte o filtro de vídeo transpose, que compartilha quase as mesmas opções.

Aceita os seguintes parâmetros:

dir

Especifica a direção da transposição.

Pode assumir os seguintes valores:

‘cclock_flip’

Gira 90 graus no sentido anti-horário e inverte verticalmente. (padrão)

‘clock’

Gira 90 graus no sentido horário.

‘cclock’

Gira 90 graus no sentido anti-horário.

‘clock_flip’

Gira 90 graus no sentido horário e inverte verticalmente.

passthrough

Não aplica a transposição se a geometria de entrada corresponder à especificada pelo valor indicado. Aceita os seguintes valores:

‘none’

Aplica sempre a transposição. (padrão)

‘portrait’

Preserva a geometria retrato (quando a altura >= a largura).

‘landscape’

Preserva a geometria paisagem (quando a largura >= a altura).

17 Filtros de vídeo QSV

A seguir, uma descrição dos filtros de vídeo QSV atualmente disponíveis.

Para habilitar a compilação desses filtros, é necessário configurar o FFmpeg com --enable-libmfx ou --enable-libvpl.

Para usar os filtros QSV, é necessário configurar corretamente o dispositivo QSV. Para mais informações, consulte https://trac.ffmpeg.org/wiki/Hardware/QuickSync

17.1 hstack_qsv

Empilha os vídeos de entrada horizontalmente.

Esta é a variante QSV do filtro hstack; cada fluxo de entrada pode ter uma altura diferente, e este filtro amplia ou reduz cada fluxo de entrada mantendo a proporção de aspecto original.

Aceita as seguintes opções:

inputs

Consulte hstack.

shortest

Consulte hstack.

height

Define a altura da saída. Se definida como 0, este filtro define a altura da saída como a altura do primeiro fluxo de entrada. O valor padrão é 0.

17.2 vstack_qsv

Empilha os vídeos de entrada verticalmente.

Esta é a variante QSV do filtro vstack; cada fluxo de entrada pode ter uma largura diferente, e este filtro amplia ou reduz cada fluxo de entrada mantendo a proporção de aspecto original.

Aceita as seguintes opções:

inputs

Consulte vstack.

shortest

Consulte vstack.

width

Define a largura da saída. Se definida como 0, este filtro define a largura da saída como a largura do primeiro fluxo de entrada. O valor padrão é 0.

17.3 xstack_qsv

Empilha as entradas de vídeo em um layout personalizado.

Esta é a variante QSV do filtro xstack.

Aceita as seguintes opções:

inputs

Consulte xstack.

shortest

Consulte xstack.

layout

Consulte xstack. Além disso, isso permite ao usuário fornecer o tamanho de saída para cada fluxo de entrada.

xstack_qsv=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080

grid

Consulte xstack.

grid_tile_size

Define o tamanho de saída para cada fluxo de entrada quando grid está definido. Se esta opção não for definida, este filtro define o tamanho de saída, por padrão, como o tamanho do primeiro fluxo de entrada. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Tamanho de vídeo" do manual ffmpeg-utils.

fill

Consulte xstack.

18 Fontes de vídeo

A seguir, uma descrição das fontes de vídeo atualmente disponíveis.

18.1 buffer

Armazena quadros de vídeo em buffer e os disponibiliza para a cadeia de filtros.

Esta fonte destina-se principalmente a uso programático, em especial por meio da interface definida em libavfilter/buffersrc.h.

Aceita os seguintes parâmetros:

video_size

Especifica o tamanho (largura e altura) dos quadros de vídeo em buffer. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Tamanho de vídeo" do manual ffmpeg-utils.

width

A largura do vídeo de entrada.

height

A altura do vídeo de entrada.

pix_fmt

Uma string que representa o pixel format dos quadros de vídeo em buffer. Pode ser um número correspondente a um pixel format ou o nome de um pixel format.

time_base

Especifica a base de tempo considerada pelas marcas de tempo dos quadros em buffer.

frame_rate

Especifica a taxa de quadros esperada para o fluxo de vídeo.

colorspace

Uma string que representa o espaço de cor dos quadros de vídeo em buffer. Pode ser um número correspondente a um espaço de cor ou o nome de um espaço de cor.

range

Uma string que representa o intervalo de cor dos quadros de vídeo em buffer. Pode ser um número correspondente a um intervalo de cor ou o nome de um intervalo de cor.

alpha_mode

Uma string que representa o modo alfa dos quadros de vídeo em buffer. Pode ser um número correspondente a um modo alfa ou o nome de um modo alfa.

pixel_aspect, sar

A proporção de aspecto de amostra (pixel) do vídeo de entrada.

hw_frames_ctx

Ao usar um pixel format de hardware, isso deve ser uma referência a um AVHWFramesContext que descreva os quadros de entrada.

Por exemplo:

buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1

instruirá a fonte a aceitar quadros de vídeo com tamanho 320x240 e formato "yuv410p", considerando 1/24 como a base de tempo das marcas de tempo e pixels quadrados (proporção de aspecto de amostra 1:1). Como o pixel format com nome "yuv410p" corresponde ao número 6 (consulte a definição do enum AVPixelFormat em libavutil/pixfmt.h), este exemplo corresponde a:

buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1

Como alternativa, as opções podem ser especificadas como uma string simples, mas essa sintaxe é obsoleta:

width:height:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den

18.2 cellauto

Cria um padrão gerado por um autômato celular elementar.

O estado inicial do autômato celular pode ser definido por meio das opções filename e pattern. Se essas opções não forem especificadas, um estado inicial é criado aleatoriamente.

A cada novo quadro, uma nova linha do vídeo é preenchida com o resultado da próxima geração do autômato celular. O comportamento quando o quadro inteiro é preenchido é definido pela opção scroll.

Esta fonte aceita as seguintes opções:

filename, f

Lê o estado inicial do autômato celular, ou seja, a linha de partida, do arquivo especificado. No arquivo, cada caractere que não seja espaço em branco é considerado uma célula viva; uma quebra de linha encerra a linha, e os caracteres restantes no arquivo são ignorados.

pattern, p

Lê o estado inicial do autômato celular, ou seja, a linha de partida, da string especificada.

Cada caractere que não seja espaço em branco na string é considerado uma célula viva; uma quebra de linha encerra a linha, e os caracteres restantes na string são ignorados.

rate, r

Define a taxa de vídeo, ou seja, o número de quadros gerados por segundo. O padrão é 25.

random_fill_ratio, ratio

Define a proporção de preenchimento aleatório para a linha inicial do autômato celular. É um valor numérico de ponto flutuante que vai de 0 a 1; o padrão é 1/PHI.

Esta opção é ignorada quando um arquivo ou um padrão é especificado.

random_seed, seed

Define a semente para preencher aleatoriamente a linha inicial; deve ser um inteiro entre 0 e UINT32_MAX. Se não for especificada, ou se for definida explicitamente como -1, o filtro tentará usar uma boa semente aleatória, dentro do possível.

rule

Define a regra do autômato celular; é um número que vai de 0 a 255. O valor padrão é 110.

size, s

Define o tamanho do vídeo de saída. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Tamanho de vídeo" do manual ffmpeg-utils.

Se filename ou pattern for especificado, o tamanho é definido por padrão como a largura da linha de estado inicial especificada, e a altura é definida como width * PHI.

Se size for definido, deve conter a largura da string de padrão especificada, e o padrão especificado será centralizado na linha maior.

Se um filename ou uma string de padrão não for especificado, o valor de size assume por padrão "320x518" (usado para um estado inicial gerado aleatoriamente).

scroll

Se definido como 1, rola a saída para cima quando todas as linhas da saída já tiverem sido preenchidas. Se definido como 0, a nova linha gerada será escrita sobre a linha superior logo após o preenchimento da linha inferior. O padrão é 1.

start_full, full

Se definido como 1, preenche completamente a saída com linhas geradas antes de produzir o primeiro quadro. Este é o comportamento padrão; para desativá-lo, defina o valor como 0.

stitch

Se definido como 1, une as bordas esquerda e direita da linha. Este é o comportamento padrão; para desativá-lo, defina o valor como 0.

18.2.1 Exemplos

  • Lê o estado inicial a partir de pattern e especifica uma saída de tamanho 200x400.

    cellauto=f=pattern:s=200x400
    
  • Gera uma linha inicial aleatória com largura de 200 células, com proporção de preenchimento de 2/3:

    cellauto=ratio=2/3:s=200x200
    
  • Cria um padrão gerado pela regra 18, começando com uma única célula viva centralizada em uma linha inicial com largura 100:

    cellauto=p=@:s=100x400:full=0:rule=18
    
  • Especifica um padrão inicial mais elaborado:

    cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
    

18.3 coreimagesrc

Fonte de vídeo gerada na GPU usando a API CoreImage da Apple no OSX.

Esta fonte de vídeo é uma versão especializada do filtro de vídeo coreimage. Use um gerador core image no início da cadeia de filtros aplicada para gerar o conteúdo.

A fonte de vídeo coreimagesrc aceita as seguintes opções:

list_generators

Lista todos os geradores disponíveis, com todas as suas respectivas opções, bem como os possíveis valores mínimo e máximo, junto com os valores padrão.

list_generators=true

size, s

Especifica o tamanho do vídeo gerado. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Tamanho de vídeo" do manual ffmpeg-utils. O valor padrão é 320x240.

rate, r

Especifica a taxa de quadros do vídeo gerado, como o número de quadros gerados por segundo. Deve ser uma string no formato frame_rate_num/frame_rate_den, um número inteiro, um número de ponto flutuante ou uma abreviação válida de taxa de quadros de vídeo. O valor padrão é "25".

sar

Define a proporção de aspecto de amostra do vídeo gerado.

duration, d

Define a duração do vídeo gerado. Consulte a seção (ffmpeg-utils)Duração de tempo do manual ffmpeg-utils(1) para a sintaxe aceita.

Se não for especificada, ou se a duração expressa for negativa, presume-se que o vídeo seja gerado indefinidamente.

Além disso, todas as opções do filtro de vídeo coreimage são aceitas. Uma cadeia de filtros completa pode ser usada para processar ainda mais a entrada gerada sem transferência CPU-HOST. Consulte a documentação e os exemplos de coreimage para mais detalhes.

18.3.1 Exemplos

  • Use o CIQRCodeGenerator para criar um código QR da página inicial do FFmpeg, apresentado como linha de comando completa e com escape para o shell bash padrão da Apple:
    ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
    

Este exemplo equivale ao exemplo QRCode de coreimage, sem a necessidade de uma fonte de vídeo nullsrc.

18.4 ddagrab

Captura a área de trabalho do Windows por meio da API Desktop Duplication.

O filtro retorna exclusivamente D3D11 Hardware Frames, para codificação ou processamento na GPU. Por isso, é necessário um hwdownload explícito para qualquer tipo de processamento por software.

Aceita as seguintes opções:

output_idx

Índice de saída DXGI a capturar.

Geralmente corresponde ao índice atribuído pelo Windows à tela, menos um; portanto, começa em 0.

O padrão é a saída 0.

draw_mouse

Indica se o cursor do mouse deve ser desenhado.

O padrão é true.

Afeta apenas cursores de hardware. Se um jogo ou aplicativo renderizar seu próprio cursor, ele sempre será capturado.

framerate

Taxa de quadros máxima na qual a área de trabalho será capturada; o intervalo entre quadros sucessivos não será menor que o inverso da taxa de quadros. Quando dup_frames é true (o padrão) e a área de trabalho não é atualizada com frequência suficiente, o filtro duplica um quadro anterior. Observe que não há armazenamento em buffer em segundo plano, portanto, se o filtro não for consultado com frequência suficiente, o intervalo real entre quadros pode ser consideravelmente maior.

O padrão é 30 FPS.

video_size

Especifica o tamanho do vídeo capturado.

O padrão é o tamanho total da tela.

Recortado a partir da parte inferior/direita se for menor que o tamanho da tela.

offset_x

Deslocamento horizontal do vídeo capturado.

offset_y

Deslocamento vertical do vídeo capturado.

output_fmt

Formato de saída desejado do filtro. O padrão é 8 Bit BGRA.

Aceita os seguintes valores:

‘auto’

Passa todos os formatos de saída compatíveis para o DDA e retorna o que o DDA decidir usar.

‘8bit’ ‘bgra’

Os formatos de 8 Bit sempre funcionam, e o DDA converte para eles quando necessário.

‘10bit’ ‘x2bgr10’

A inicialização do filtro falhará se o formato de 10 bit for solicitado, mas não estiver disponível.

dup_frames

Quando esta opção é definida como true (o padrão), o filtro duplica quadros quando a área de trabalho não foi atualizada, a fim de manter a taxa de quadros alvo aproximadamente constante. Quando esta opção é definida como false, o filtro aguarda a atualização da área de trabalho (nesse caso, os intervalos entre quadros podem variar significativamente).

18.4.1 Exemplos

Captura a tela principal e codifica usando nvenc:

ffmpeg -f lavfi -i ddagrab -c:v h264_nvenc -cq 18 output.mp4

Você também pode pular o dispositivo lavfi e usar o filtro diretamente. Isso também demonstra como baixar o quadro e codificar com libx264. Nesse caso, é necessário especificar explicitamente o formato de saída:

ffmpeg -filter_complex ddagrab=output_idx=1:framerate=60,hwdownload,format=bgra -c:v libx264 -crf 18 output.mp4

Se você quiser capturar apenas uma subseção da área de trabalho, isso pode ser feito especificando um tamanho menor e seus deslocamentos dentro da tela:

ddagrab=video_size=800x600:offset_x=100:offset_y=100

18.5 gfxcapture

Captura janelas ou monitores usando a API Windows.Graphics.Capture.

Esta fonte oferece captura de baixa sobrecarga de janelas de aplicativos ou monitores inteiros. O filtro gera quadros de hardware no formato d3d11; use hwdownload,format= se forem necessários quadros na memória do sistema.

A janela a ser capturada pode ser selecionada por meio de expressões regulares sobre seu título, nome de classe ou nome do executável correspondente, por identificadores nativos explícitos, ou pelo índice do monitor ou identificador nativo explícito. Uma janela deve corresponder a todas as expressões fornecidas para ser selecionada. A primeira janela correspondente será escolhida, na ordem em que o Windows as retornar.

Identificadores explícitos (hwnd, hmonitor) têm prioridade sobre a seleção baseada em padrão ou índice. Se nem identificadores nem um índice de monitor forem fornecidos, a primeira janela que corresponder às expressões regulares fornecidas é capturada.

Esta fonte NÃO mantém um FPS estável. Ela retorna quadros na taxa em que o compositor os fornece, limitada apenas por max_framerate. Se você precisar de uma taxa estável, será necessário adicionar um filtro fps para descartar ou duplicar quadros conforme necessário.

Se a fonte de captura desaparecer durante a captura (janela fechada, monitor desconectado), o filtro retornará EOF.

Esta fonte aceita as seguintes opções:

window_title

Expressão regular ECMAScript comparada com o título da janela. Aceita um prefixo no estilo PCRE (?i) para correspondência sem diferenciar maiúsculas de minúsculas.

window_class

Igual a window_title, mas comparado com o nome de classe da janela.

window_exe

Igual a window_title, mas comparado com o nome do arquivo executável do processo da janela.

monitor_idx

Índice, com base zero, do monitor a capturar.

Também pode ser definido como window para capturar o monitor em que a janela selecionada é exibida no momento da inicialização do filtro.

hwnd

Identificador nativo explícito da janela (HWND).

hmonitor

Identificador nativo explícito do monitor (HMONITOR).

capture_cursor

Captura o cursor do mouse. Ativado por padrão.

capture_border

Captura a área completa da janela, incluindo suas decorações/bordas. Desativado por padrão.

display_border

Desenha uma borda de destaque amarela ao redor da janela capturada. Desativado por padrão.

max_framerate

Taxa de quadros máxima de captura. Aceita uma taxa de vídeo (por exemplo, 30, 60/1, 24000/1001). O padrão é 60 FPS. A taxa real é aquela em que o compositor renderiza a janela/monitor, limitada por esta opção.

width

Força a largura da tela de saída. Se for zero (padrão), é usada a largura inicial da fonte capturada. Se for fornecido um número negativo, a largura será arredondada para baixo até o próximo múltiplo desse número.

Consulte resize_mode.

height

Força a altura da tela de saída. Se for zero (padrão), é usada a altura inicial da fonte capturada. Se for fornecido um número negativo, a altura será arredondada para baixo até o próximo múltiplo desse número.

Consulte resize_mode.

crop_left

Recorta essa quantidade de pixels do lado esquerdo dos quadros capturados.

crop_top

Recorta essa quantidade de pixels do lado esquerdo dos quadros capturados.

crop_right

Recorta essa quantidade de pixels do lado esquerdo dos quadros capturados.

crop_bottom

Recorta essa quantidade de pixels do lado esquerdo dos quadros capturados.

premultiplied

Se definido como 1, retorna quadros com alfa pré-multiplicado. O padrão é 0 (alfa direto).

resize_mode

Define como o conteúdo capturado é ajustado ao tamanho da tela de saída. Valores possíveis:

‘crop’

Recorta (ou preenche com preto) até o tamanho da tela. (padrão)

‘scale’

Redimensiona a fonte para preencher a tela, o que pode alterar a proporção de aspecto.

‘scale_aspect’

Redimensiona a fonte para caber dentro da tela preservando a proporção de aspecto. A área restante é preenchida com preto.

scale_mode

Algoritmo de redimensionamento usado quando é necessário redimensionar.

Valores possíveis:

‘point’

Redimensionamento pelo vizinho mais próximo (pixelizado).

‘bilinear’

Filtragem bilinear. (padrão)

‘bicubic’

Filtragem bicúbica. Pode resultar em mais desfoque, mas com menos artefatos de redimensionamento, dependendo do conteúdo.

output_fmt

Pixel format de saída desejado dentro dos quadros de hardware D3D11.

Valores possíveis:

‘bgra’ ‘8bit’

Saída BGRA de 8 bit (padrão)

‘x2bgr10’ ‘10bit’

Saída BGR de 10 bit

‘rgbaf16’ ‘16bit’

Saída RGBA de ponto flutuante de 16 bit

18.5.1 Exemplos

  • Captura uma janela pelo título (sem diferenciar maiúsculas de minúsculas) a no máximo 60 fps:

    ffmpeg -filter_complex gfxcapture=window_title='(?i)My Application':max_framerate=60,hwdownload,format=bgra,format=yuv420p -c:v libx264 -crf 15 capture.mp4
    
  • Captura o monitor 1 na taxa de atualização nativa, profundidade de cor de 10bit, redimensionando para 1920x1080 preservando a proporção:

    ffmpeg -filter_complex gfxcapture=monitor_idx=1:width=1920:height=1080:resize_mode=scale_aspect:output_fmt=10bit -c:v hevc_nvenc -cq 15 capture.mp4
    
  • Captura uma janela pelo nome do executável, desenha borda, força o redimensionamento por ponto, com 60 fps fixos:

    ffmpeg -filter_complex gfxcapture=window_exe='^firefox.exe$':display_border=1:scale_mode=point,fps=60 -rc qvbr -qvbr_quality_level 15 -c:v h264_amf capture.mp4
    

18.6 gradients

Gera vários gradientes.

size, s

Define o tamanho do quadro. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Tamanho de vídeo" do manual ffmpeg-utils. O valor padrão é "640x480".

rate, r

Define a taxa de quadros, expressa como número de quadros por segundo. O valor padrão é "25".

c0, c1, c2, c3, c4, c5, c6, c7

Define 8 cores. O valor padrão para as cores é escolher uma aleatoriamente.

x0, y0, y0, y1

Define os pontos de origem e destino da linha do gradiente. Se forem negativos ou estiverem fora do intervalo, são escolhidos pontos aleatórios.

nb_colors, n

Define o número de cores a usar de uma vez. O intervalo permitido é de 2 a 8. O valor padrão é 2.

seed

Define a semente para escolher os pontos da linha do gradiente.

duration, d

Define a duração do vídeo gerado. Consulte a seção (ffmpeg-utils)Duração de tempo do manual ffmpeg-utils(1) para a sintaxe aceita.

Se não for especificada, ou se a duração expressa for negativa, presume-se que o vídeo seja gerado indefinidamente.

speed

Define a velocidade de rotação dos gradientes.

type, t

Define o tipo de gradientes. Os valores disponíveis são:

‘linear’ ‘radial’ ‘circular’ ‘spiral’ ‘square’

O tipo padrão é linear.

18.6.1 Comandos

Esta fonte é compatível com algumas das opções acima como comandos.

18.7 mandelbrot

Gera um fractal do conjunto de Mandelbrot e aplica zoom progressivo em direção ao ponto especificado por start_x e start_y.

Esta fonte aceita as seguintes opções:

end_pts

Define o valor final de pts. O valor padrão é 400.

end_scale

Define o valor final de escala. Deve ser um valor de ponto flutuante. O valor padrão é 0.3.

inner

Define o modo de coloração interna, ou seja, o algoritmo usado para desenhar a região interna do fractal de Mandelbrot.

Deve assumir um dos seguintes valores:

black

Define o modo preto.

convergence

Mostra o tempo até a convergência.

mincol

Define a cor com base no ponto mais próximo da origem das iterações.

period

Define o modo de período.

O valor padrão é mincol.

bailout

Define o valor de bailout. O valor padrão é 10.0.

maxiter

Define o número máximo de iterações realizadas pelo algoritmo de renderização. O valor padrão é 7189.

outer

Define o modo de coloração externa. Deve assumir um dos seguintes valores:

iteration_count

Define o modo de contagem de iterações.

normalized_iteration_count

Define o modo de contagem de iterações normalizado.

O valor padrão é normalized_iteration_count.

rate, r

Define a taxa de quadros, expressa como número de quadros por segundo. O valor padrão é "25".

size, s

Define o tamanho do quadro. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Tamanho de vídeo" do manual ffmpeg-utils. O valor padrão é "640x480".

start_scale

Define o valor de escala inicial. O valor padrão é 3.0.

start_x

Define a posição x inicial. Deve ser um valor de ponto flutuante entre -100 e 100. O valor padrão é -0.743643887037158704752191506114774.

start_y

Define a posição y inicial. Deve ser um valor de ponto flutuante entre -100 e 100. O valor padrão é -0.131825904205311970493132056385139.

18.8 mptestsrc

Gera vários padrões de teste, como os produzidos pelo filtro de teste do MPlayer.

O tamanho do vídeo gerado é fixo, sendo 512x512. Esta fonte é útil, em especial, para testar recursos de codificação.

Esta fonte aceita as seguintes opções:

rate, r

Especifica a taxa de quadros do vídeo gerado, como o número de quadros gerados por segundo. Deve ser uma string no formato frame_rate_num/frame_rate_den, um número inteiro, um número de ponto flutuante ou uma abreviação válida de taxa de quadros de vídeo. O valor padrão é "25".

duration, d

Define a duração do vídeo gerado. Consulte a seção (ffmpeg-utils)Duração de tempo do manual ffmpeg-utils(1) para a sintaxe aceita.

Se não for especificada, ou se a duração expressa for negativa, presume-se que o vídeo seja gerado indefinidamente.

test, t

Define o número ou o nome do teste a executar. Os testes compatíveis são:

dc_luma dc_chroma freq_luma freq_chroma amp_luma amp_chroma cbp mv ring1 ring2 all max_frames, m

Define o número máximo de quadros gerados para cada teste; o valor padrão é 30.

O valor padrão é "all", que percorre a lista de todos os testes.

Alguns exemplos:

mptestsrc=t=dc_luma

gerará um padrão de teste "dc_luma".

18.9 frei0r_src

Fornece uma fonte frei0r.

Para habilitar a compilação deste filtro, é necessário instalar o cabeçalho do frei0r e configurar o FFmpeg com --enable-frei0r.

Esta fonte aceita os seguintes parâmetros:

size

O tamanho do vídeo a ser gerado. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Tamanho de vídeo" do manual ffmpeg-utils.

framerate

A taxa de quadros do vídeo gerado. Pode ser uma string no formato num/den ou uma abreviação de taxa de quadros.

filter_name

O nome da fonte frei0r a ser carregada. Para mais informações sobre o frei0r e como definir os parâmetros, leia a seção frei0r na documentação dos filtros de vídeo.

filter_params

Uma lista de parâmetros separados por ’|’ a serem passados para a fonte frei0r.

Por exemplo, para gerar uma fonte frei0r partik0l com tamanho 200x200 e taxa de quadros 10, sobreposta à entrada principal do filtro overlay:

frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay

18.10 life

Gera um padrão de vida.

Esta fonte é baseada em uma generalização do jogo da vida de John Conway.

A entrada gerada pela fonte representa uma grade de vida: cada pixel representa uma célula que pode estar em um de dois estados possíveis, viva ou morta. Cada célula interage com suas oito vizinhas, que são as células adjacentes na horizontal, na vertical ou na diagonal.

A cada interação, a grade evolui de acordo com a regra adotada, que especifica o número de células vizinhas vivas que fará uma célula permanecer viva ou nascer. A opção rule permite especificar a regra a ser adotada.

Esta fonte aceita as seguintes opções:

filename, f

Define o arquivo do qual será lido o estado inicial da grade. No arquivo, cada caractere que não seja um espaço em branco é considerado uma célula viva, e a quebra de linha é usada para delimitar o fim de cada linha.

Se esta opção não for especificada, a grade inicial é gerada de forma aleatória.

rate, r

Define a taxa de vídeo, ou seja, o número de quadros gerados por segundo. O padrão é 25.

random_fill_ratio, ratio

Define a proporção de preenchimento aleatório da grade aleatória inicial. É um valor de ponto flutuante entre 0 e 1, cujo padrão é 1/PHI. É ignorado quando um arquivo é especificado.

random_seed, seed

Define a semente para preencher a grade aleatória inicial; deve ser um número inteiro entre 0 e UINT32_MAX. Se não for especificado, ou se for definido explicitamente como -1, o filtro tentará usar uma boa semente aleatória com base no melhor esforço possível.

rule

Define a regra de vida.

Uma regra pode ser especificada com um código do tipo "SNS/BNB", em que NS e NB são sequências de números no intervalo 0-8: NS especifica o número de células vizinhas vivas que fará uma célula viva permanecer viva, e NB o número de células vizinhas vivas que fará uma célula morta se tornar viva (ou seja, "nascer"). "s" e "b" podem ser usados no lugar de "S" e "B", respectivamente.

Alternativamente, uma regra pode ser especificada por um inteiro de 18 bits. Os 9 bits de ordem mais alta são usados para codificar o próximo estado da célula, caso esteja viva, para cada número de células vizinhas vivas; os bits de ordem mais baixa especificam a regra para "fazer nascer" novas células. Bits de ordem mais alta codificam um número maior de células vizinhas. Por exemplo, o número 6153 = (12<<9)+9 especifica uma regra de permanência viva de 12 e uma regra de nascimento de 9, o que corresponde a "S23/B03".

O valor padrão é "S23/B3", que é a regra original do jogo da vida de Conway, e manterá uma célula viva se ela tiver 2 ou 3 células vizinhas vivas, e fará nascer uma nova célula se houver três células vivas ao redor de uma célula morta.

size, s

Define o tamanho do vídeo de saída. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils.

Se filename for especificado, o tamanho é definido por padrão com o mesmo tamanho do arquivo de entrada. Se size for definido, deve conter o tamanho especificado no arquivo de entrada, e a grade inicial definida nesse arquivo é centralizada na área resultante, que é maior.

Se filename não for especificado, o valor de size é "320x240" por padrão (usado para uma grade inicial gerada de forma aleatória).

stitch

Se definido como 1, une as bordas esquerda e direita da grade, e também as bordas superior e inferior. O padrão é 1.

mold

Define a velocidade de mofo das células. Se definido, uma célula morta passará de death_color para mold_color com um incremento de mold. mold pode ter um valor de 0 a 255.

life_color

Define a cor das células vivas (ou recém-nascidas).

death_color

Define a cor das células mortas. Se mold estiver definido, esta é a primeira cor usada para representar uma célula morta.

mold_color

Define a cor do mofo, para células definitivamente mortas e mofadas.

Para a sintaxe destas 3 opções de cor, consulte a (ffmpeg-utils)seção "Color" do manual ffmpeg-utils.

18.10.1 Exemplos

  • Lê uma grade de pattern e a centraliza em uma grade de tamanho 300x300 pixels:

    life=f=pattern:s=300x300
    
  • Gera uma grade aleatória de tamanho 200x200, com uma proporção de preenchimento de 2/3:

    life=ratio=2/3:s=200x200
    
  • Especifica uma regra personalizada para fazer evoluir uma grade gerada aleatoriamente:

    life=rule=S14/B34
    
  • Exemplo completo com efeito de morte lenta (mold) usando ffplay:

    ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
    

18.11 perlin

Gera ruído Perlin.

O ruído Perlin é um tipo de ruído com continuidade local no espaço. Pode ser usado para gerar padrões com continuidade no espaço e no tempo, por exemplo, para simular fumaça, fluidos ou terrenos.

Caso mais de uma oitava seja especificada por meio da opção octaves, o ruído Perlin é gerado como uma soma de componentes, cada um com o dobro da frequência do anterior. Nesse caso, a opção persistence especifica a razão da amplitude em relação ao componente anterior. Mais componentes de oitava permitem especificar mais detalhes de alta frequência no ruído gerado (por exemplo, pequenas variações de tamanho causadas por rochas em um terreno gerado).

18.11.1 Opções

size, s

Especifica o tamanho (largura e altura) dos quadros de vídeo armazenados em buffer. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils. O valor padrão é 320x240.

rate, r

Especifica a taxa de quadros esperada para o fluxo de vídeo, expressa como um número de quadros por segundo. O valor padrão é 25.

octaves

Especifica o número total de componentes que formam o ruído, cada um com o dobro da frequência do anterior. O valor padrão é 1.

persistence

Define a razão usada para calcular a amplitude do próximo componente de oitava em relação à amplitude do componente anterior. O valor padrão é 1.

xscale yscale

Define um fator de escala usado para multiplicar as coordenadas x, y. Pode ser útil para definir um efeito com um padrão esticado ao longo do eixo x ou y. O valor padrão é 1.

tscale

Define um fator de escala usado para multiplicar a coordenada de tempo. Pode ser útil para alterar a velocidade de variação temporal. O valor padrão é 1.

random_mode

Define o modo aleatório usado para calcular o padrão inicial.

Valores aceitos:

random

Calcula e usa uma semente aleatória.

ken

Usa o padrão inicial predefinido por Ken Perlin no artigo original; pode ser útil para comparar a saída com outras fontes.

seed

Usa o valor especificado pela opção random_seed.

O valor padrão é random.

random_seed, seed

Quando random_mode é definido como random_seed, usa esse valor para calcular o padrão inicial. O valor padrão é 0.

18.11.2 Exemplos

  • Gera um único componente:

    perlin
    
  • Usa ruído Perlin com 7 componentes, cada um com uma contribuição reduzida à metade para a amplitude total:

    perlin=octaves=7:persistence=0.5
    
  • Encadeia o ruído Perlin com o lutyuv para gerar um efeito em preto e branco:

    perlin=octaves=3:tscale=0.3,lutyuv=y='if(lt(val\,128)\,255\,0)'
    
  • Estica o ruído ao longo do eixo y e converte o nível de cinza em um sinal somente vermelho:

    perlin=octaves=7:tscale=0.4:yscale=0.3,lutrgb=r=val:b=0:g=0
    

18.12 qrencodesrc

Gera um código QR usando a biblioteca libqrencode (veja https://fukuchi.org/works/qrencode/).

Para habilitar a compilação desta fonte, é necessário configurar o FFmpeg com --enable-libqrencode.

O código QR é gerado a partir do texto ou padrão de texto fornecido. O código QR correspondente é redimensionado e colocado na saída de vídeo de acordo com as opções de tamanho de saída especificadas.

Caso nenhum texto seja especificado, o código QR não é gerado; em vez disso, é retornada uma saída colorida vazia.

Esta fonte aceita as seguintes opções:

qrcode_width, q padded_qrcode_width, Q

Especifica uma expressão para a largura do código QR renderizado, com e sem preenchimento (padding). A expressão qrcode_width pode referenciar o valor definido pela expressão padded_qrcode_width, e vice-versa. Por padrão, padded_qrcode_width é definido como qrcode_width, o que significa que não há preenchimento.

Essas expressões são avaliadas apenas uma vez, ao inicializar a fonte. Veja a seção Expressions do qrencode para mais detalhes.

Observe que algumas das constantes não estão disponíveis para a fonte (por exemplo, x, t ou ¸n), já que só fazem sentido ao avaliar a expressão a cada quadro, e não no momento da inicialização.

rate, r

Especifica a taxa de quadros do vídeo gerado pela fonte, como o número de quadros gerados por segundo. Deve ser uma string no formato frame_rate_num/frame_rate_den, um número inteiro, um número de ponto flutuante ou uma abreviação válida de taxa de quadros de vídeo. O valor padrão é "25".

case_sensitive, cs

Instrui o libqrencode a usar codificação sensível a maiúsculas e minúsculas. Isso está habilitado por padrão. Pode ser desabilitado para reduzir o tamanho da codificação QR.

level, l

Especifica o nível de correção de erros da codificação QR. Com um nível de correção mais alto, o tamanho da codificação aumenta, mas o código fica mais resistente a corrupção. O nível mais baixo é L.

Aceita os seguintes valores:

‘L’ ‘M’ ‘Q’ ‘H’ expansion

Seleciona como o texto de entrada é expandido. Pode ser none ou normal (padrão). Veja a seção Text expansion do qrencode para mais detalhes.

text textfile

Define o texto a ser renderizado. Caso nenhum dos dois seja especificado, nenhum QR é codificado (apenas um quadro colorido vazio).

Caso expansion esteja habilitada, o texto é tratado como um modelo de texto, usando o mecanismo de expansão do qrencode. Veja a seção Text expansion do qrencode para mais detalhes.

background_color, bc foreground_color, fc

Define a cor do código QR e a cor de fundo. O valor padrão de foreground_color é "black", e o valor padrão de background_color é "white".

Para a sintaxe das opções de cor, consulte a (ffmpeg-utils)seção "Color" do manual ffmpeg-utils.

18.12.1 Exemplos

  • Gera um código QR codificando o texto especificado com o tamanho padrão:

    qrencodesrc=text=www.ffmpeg.org
    
  • O mesmo que abaixo, mas selecionando as cores azul sobre rosa:

    qrencodesrc=text=www.ffmpeg.org:bc=pink:fc=blue
    
  • Gera um código QR com largura de 200 pixels e preenchimento, tornando a largura com preenchimento igual a 4/3 da largura do código QR:

    qrencodesrc=text=www.ffmpeg.org:q=200:Q=4/3*q
    
  • Gera um código QR com largura com preenchimento de 200 pixels e preenchimento, tornando a largura do código QR igual a 3/4 da largura com preenchimento:

    qrencodesrc=text=www.ffmpeg.org:Q=200:q=3/4*Q
    
  • Gera um código QR codificando o número do quadro:

    qrencodesrc=text=%{n}
    
  • Gera um código QR codificando a marca de tempo GMT:

    qrencodesrc=text=%{gmtime}
    
  • Gera um código QR codificando a marca de tempo expressa como um valor de ponto flutuante:

    qrencodesrc=text=%{pts}
    

18.13 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc

A fonte allrgb retorna quadros de tamanho 4096x4096 com todas as cores rgb.

A fonte allyuv retorna quadros de tamanho 4096x4096 com todas as cores yuv.

A fonte color fornece uma entrada uniformemente colorida.

A fonte colorchart fornece uma carta de referência de cores.

A fonte colorspectrum fornece uma entrada de espectro de cores.

A fonte haldclutsrc fornece uma Hald CLUT de identidade. Veja também o filtro haldclut.

A fonte nullsrc retorna quadros de vídeo não processados. É útil principalmente para uso em ferramentas de análise/depuração, ou como fonte para filtros que ignoram os dados de entrada.

A fonte pal75bars gera um padrão de barras de cor, baseado nas recomendações PAL da EBU com níveis de cor de 75%.

A fonte pal100bars gera um padrão de barras de cor, baseado nas recomendações PAL da EBU com níveis de cor de 100%.

A fonte rgbtestsrc gera um padrão de teste RGB útil para detectar problemas de RGB versus BGR. Você deve ver uma faixa vermelha, verde e azul de cima para baixo.

A fonte smptebars gera um padrão de barras de cor, baseado na SMPTE Engineering Guideline EG 1-1990.

A fonte smptehdbars gera um padrão de barras de cor, baseado na SMPTE RP 219-2002.

A fonte testsrc gera um padrão de vídeo de teste, mostrando um padrão de cor, um gradiente em rolagem e uma marca de tempo. Destina-se principalmente a fins de teste.

A fonte testsrc2 é semelhante a testsrc, mas é compatível com mais pixel formats além de apenas rgb24. Isso permite usá-la como entrada para outros testes sem exigir conversão de formato.

A fonte yuvtestsrc gera um padrão de teste YUV. Você deve ver uma faixa de y, cb e cr de cima para baixo.

As fontes aceitam os seguintes parâmetros:

level

Especifica o nível da Hald CLUT, disponível somente na fonte haldclutsrc. Um nível N gera uma imagem de N*N*N por N*N*N pixels a ser usada como matriz identidade para tabelas de consulta 3D. Cada componente é codificado em uma escala de 1/(N*N).

color, c

Especifica a cor da fonte, disponível somente na fonte color. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Color" do manual ffmpeg-utils.

size, s

Especifica o tamanho do vídeo gerado pela fonte. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils. O valor padrão é 320x240.

Esta opção não está disponível com os filtros allrgb, allyuv e haldclutsrc.

rate, r

Especifica a taxa de quadros do vídeo gerado pela fonte, como o número de quadros gerados por segundo. Deve ser uma string no formato frame_rate_num/frame_rate_den, um número inteiro, um número de ponto flutuante ou uma abreviação válida de taxa de quadros de vídeo. O valor padrão é "25".

duration, d

Define a duração do vídeo gerado pela fonte. Veja a (ffmpeg-utils)seção Time duration do manual ffmpeg-utils(1) para a sintaxe aceita.

Se não for especificada, ou se a duração expressa for negativa, presume-se que o vídeo seja gerado indefinidamente.

Como a taxa de quadros é usada como base de tempo, todos os quadros, incluindo o último, terão sua duração completa. Se a duração especificada não for um múltiplo da duração do quadro, ela será arredondada para cima.

sar

Define a proporção de aspecto de amostragem do vídeo gerado pela fonte.

alpha

Especifica o alfa (opacidade) do fundo, disponível somente na fonte testsrc2. O valor deve estar entre 0 (totalmente transparente) e 255 (totalmente opaco, o padrão).

decimals, n

Define o número de casas decimais a exibir na marca de tempo, disponível somente na fonte testsrc.

O valor de marca de tempo exibido corresponderá ao valor de marca de tempo original multiplicado pela potência de 10 do valor especificado. O valor padrão é 0.

type

Define o tipo de espectro de cor, disponível somente na fonte colorspectrum. Pode ser um dos seguintes:

‘black’ ‘white’ ‘all’ patch_size

Define o tamanho de cada patch de cor, disponível somente na fonte colorchart. O padrão é 64x64.

preset

Define a predefinição de cores do colorchecker, disponível somente na fonte colorchart.

Valores disponíveis:

‘reference’ ‘skintones’

O valor padrão é reference.

18.13.1 Exemplos

  • Gera um vídeo com duração de 5.3 segundos, com tamanho 176x144 e taxa de quadros de 10 quadros por segundo:

    testsrc=duration=5.3:size=qcif:rate=10
    
  • A seguinte descrição de grafo gerará uma fonte vermelha com opacidade de 0.2, com tamanho "qcif" e taxa de quadros de 10 quadros por segundo:

    color=c=red@0.2:s=qcif:r=10
    
  • Se o conteúdo de entrada deve ser ignorado, nullsrc pode ser usado. O comando a seguir gera ruído no plano de luma empregando o filtro geq:

    nullsrc=s=256x256, geq=random(1)*255:128:128
    

18.13.2 Comandos

A fonte color oferece suporte aos seguintes comandos:

c, color

Define a cor da imagem criada. Aceita a mesma sintaxe da opção color correspondente.

18.14 openclsrc

Gera vídeo usando um programa OpenCL.

source

Arquivo-fonte do programa OpenCL.

kernel

Nome do kernel no programa.

size, s

Tamanho dos quadros a serem gerados. Deve ser definido obrigatoriamente.

format

Pixel format a ser usado para os quadros gerados. Deve ser definido obrigatoriamente.

rate, r

Número de quadros gerados a cada segundo. O valor padrão é ’25’.

Para detalhes de como funciona o carregamento do programa, veja o filtro program_opencl.

Exemplos de programas:

  • Gera uma rampa de cor definindo os valores de pixel a partir da posição do pixel na imagem de saída. (Observe que isso funcionará com todos os pixel formats, mas a saída gerada não será a mesma.)

    __kernel void ramp(__write_only image2d_t dst,
                       unsigned int index)
    {
        int2 loc = (int2)(get_global_id(0), get_global_id(1));
    
        float4 val;
        val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
    
        write_imagef(dst, loc, val);
    }
    
  • Gera um padrão de tapete de Sierpinski, deslocando-se um único pixel a cada quadro.

    __kernel void sierpinski_carpet(__write_only image2d_t dst,
                                    unsigned int index)
    {
        int2 loc = (int2)(get_global_id(0), get_global_id(1));
    
        float4 value = 0.0f;
        int x = loc.x + index;
        int y = loc.y + index;
        while (x > 0 || y > 0) {
            if (x % 3 == 1 && y % 3 == 1) {
                value = 1.0f;
                break;
            }
            x /= 3;
            y /= 3;
        }
    
        write_imagef(dst, loc, value);
    }
    

18.15 sierpinski

Gera um fractal de tapete/triângulo de Sierpinski e desloca-se aleatoriamente pela imagem.

Esta fonte aceita as seguintes opções:

size, s

Define o tamanho do quadro. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils. O valor padrão é "640x480".

rate, r

Define a taxa de quadros, expressa como número de quadros por segundo. O valor padrão é "25".

seed

Define a semente usada para o deslocamento aleatório.

jump

Define o salto máximo para cada destino de deslocamento. O intervalo permitido é de 1 a 10000.

type

Define o tipo de fractal; pode ser carpet (padrão) ou triangle.

18.16 zoneplate

Gera um padrão de vídeo de teste zoneplate.

Esta fonte aceita as seguintes opções:

size, s

Define o tamanho do quadro. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils. O valor padrão é "320x240".

rate, r

Define a taxa de quadros, expressa como número de quadros por segundo. O valor padrão é "25".

duration, d

Define a duração do vídeo gerado pela fonte. Veja a (ffmpeg-utils)seção Time duration do manual ffmpeg-utils(1) para a sintaxe aceita.

Se não for especificada, ou se a duração expressa for negativa, presume-se que o vídeo seja gerado indefinidamente.

sar

Define a proporção de aspecto de amostragem do vídeo gerado pela fonte.

precision

Define a precisão em bits da tabela de consulta para os cálculos de seno. O valor padrão é 10. O intervalo permitido é de 4 a 16.

xo

Define o deslocamento do eixo horizontal para o sinal de saída. O valor padrão é 0.

yo

Define o deslocamento do eixo vertical para o sinal de saída. O valor padrão é 0.

to

Define o deslocamento do eixo temporal para o sinal de saída. O valor padrão é 0.

k0

Define a constante de ordem 0 adicionada à fase do sinal. O valor padrão é 0.

kx

Define o multiplicador do fator de fase de ordem 1 para o eixo horizontal. O valor padrão é 0.

ky

Define o multiplicador do fator de fase de ordem 1 para o eixo vertical. O valor padrão é 0.

kt

Define o multiplicador do fator de fase de ordem 1 para o eixo temporal. O valor padrão é 0.

kxt, kyt, kxy

Define os multiplicadores do fator de fase para a combinação dos eixos espacial e temporal. O valor padrão é 0.

kx2

Define o multiplicador do fator de fase de ordem 2 para o eixo horizontal. O valor padrão é 0.

ky2

Define o multiplicador do fator de fase de ordem 2 para o eixo vertical. O valor padrão é 0.

kt2

Define o multiplicador do fator de fase de ordem 2 para o eixo temporal. O valor padrão é 0.

ku

Define a constante adicionada à fase final para produzir o componente de croma azul do sinal. O valor padrão é 0.

kv

Define a constante adicionada à fase final para produzir o componente de croma vermelho do sinal. O valor padrão é 0.

18.16.1 Comandos

Esta fonte oferece suporte a algumas das opções acima como comandos.

18.16.2 Exemplos

  • Gera uma varredura senoidal de cor horizontal:

    zoneplate=ku=512:kv=0:kt2=0:kx2=256:s=wvga:xo=-426:kt=11
    
  • Gera uma varredura senoidal de cor vertical:

    zoneplate=ku=512:kv=0:kt2=0:ky2=156:s=wvga:yo=-240:kt=11
    
  • Gera uma zoneplate circular:

    zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
    

19 Destinos de vídeo

Abaixo está uma descrição dos destinos de vídeo atualmente disponíveis.

19.1 buffersink

Armazena quadros de vídeo em buffer e os disponibiliza no final do grafo de filtros.

Este destino é voltado principalmente para uso programático, por meio da interface definida em libavfilter/buffersink.h ou do sistema de opções.

Aceita um ponteiro para uma estrutura AVBufferSinkContext, que define os formatos dos buffers de entrada, a ser passado como parâmetro opaco para avfilter_init_filter durante a inicialização.

19.2 nullsink

Destino de vídeo nulo: não faz absolutamente nada com o vídeo de entrada. É útil principalmente como modelo e para uso em ferramentas de análise/depuração.

20 Filtros multimídia

Abaixo está uma descrição dos filtros multimídia atualmente disponíveis.

20.1 a3dscope

Converte o áudio de entrada em uma saída de vídeo de osciloscópio 3D.

O filtro aceita as seguintes opções:

rate, r

Define a taxa de quadros, expressa como número de quadros por segundo. O valor padrão é "25".

size, s

Especifica o tamanho de vídeo da saída. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils. O valor padrão é hd720.

fov

Define o campo de visão da câmera. O padrão é 90 graus. O intervalo permitido é de 40 a 150.

roll

Define o roll da câmera.

pitch

Define o pitch da câmera.

yaw

Define o yaw da câmera.

xzoom

Define o zoom da câmera no eixo X.

yzoom

Define o zoom da câmera no eixo Y.

zzoom

Define o zoom da câmera no eixo Z.

xpos

Define a posição da câmera no eixo X.

ypos

Define a posição da câmera no eixo Y.

zpos

Define a posição da câmera no eixo Z.

length

Define a duração das ondas de áudio exibidas, em número de quadros.

20.1.1 Comandos

O filtro oferece suporte a algumas das opções acima como comandos.

20.2 abitscope

Converte o áudio de entrada em uma saída de vídeo, exibindo o osciloscópio de bits do áudio.

O filtro aceita as seguintes opções:

rate, r

Define a taxa de quadros, expressa como número de quadros por segundo. O valor padrão é "25".

size, s

Especifica o tamanho de vídeo da saída. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils. O valor padrão é 1024x256.

colors

Especifica uma lista de cores separadas por espaço ou por ’|’ que será usada para desenhar os canais. Cores não reconhecidas ou ausentes serão substituídas pela cor branca.

mode, m

Define o modo de saída. Pode ser bars ou trace. O padrão é bars.

20.3 adrawgraph

Desenha um gráfico usando metadados do áudio de entrada.

Veja drawgraph

20.4 agraphmonitor

Veja graphmonitor.

20.5 ahistogram

Converte o áudio de entrada em uma saída de vídeo, exibindo o histograma de volume.

O filtro aceita as seguintes opções:

dmode

Especifica como o histograma é calculado.

Aceita os seguintes valores:

‘single’

Usa um único histograma para todos os canais.

‘separate’

Usa um histograma separado para cada canal.

O padrão é single.

rate, r

Define a taxa de quadros, expressa como número de quadros por segundo. O valor padrão é "25".

size, s

Especifica o tamanho de vídeo da saída. Para a sintaxe desta opção, consulte a (ffmpeg-utils)seção "Video size" do manual ffmpeg-utils. O valor padrão é hd720.

scale

Define a escala de exibição.

Aceita os seguintes valores:

‘log’

logarítmica

‘sqrt’

raiz quadrada

‘cbrt’

raiz cúbica

‘lin’

linear

‘rlog’

logarítmica inversa

O padrão é log.

ascale

Define a escala de amplitude.

Aceita os seguintes valores:

‘log’

logarítmica

‘lin’

linear

O padrão é log.

acount

Define quantos quadros acumular no histograma. O padrão é 1. Defini-lo como -1 acumula todos os quadros.

rheight

Define a proporção do histograma em relação à altura da janela.

slide

Define o deslizamento do sonograma.

Aceita os seguintes valores:

‘replace’

substitui as linhas antigas pelas novas.

‘scroll’

rola de cima para baixo.

O padrão é replace.

hmode

Define o modo do histograma.

Aceita os seguintes valores:

‘abs’

Usa os valores absolutos das amostras.

‘sign’

Usa os valores inalterados das amostras.

O padrão é abs.

20.6 aphasemeter

Mede a fase do áudio de entrada, que é exportada como metadado lavfi.aphasemeter.phase, representando a fase média do quadro de áudio atual. Também pode ser gerada uma saída de vídeo, habilitada por padrão. O áudio é repassado sem alterações como a primeira saída.

O áudio será remesclado para estéreo caso tenha um layout de canais diferente. O valor de fase está no intervalo [-1, 1], em que -1 significa que os canais esquerdo e direito estão completamente fora de fase e 1 significa que os canais estão em fase.

O filtro aceita as seguintes opções, todas relacionadas à sua saída de vídeo:

rate, r

Define a taxa de quadros de saída. O valor padrão é 25.

size, s

Define o tamanho do vídeo de saída. Para a sintaxe dessa opção, consulte a seção (ffmpeg-utils)"Tamanho do vídeo" no manual do ffmpeg-utils. O valor padrão é 800x400.

rc gc bc

Especifica o contraste de vermelho, verde e azul. Os valores padrão são 2, 7 e 1. O intervalo permitido é [0, 255].

mpc

Define a cor usada para desenhar a fase mediana. Se a cor for none, que é o padrão, nenhum valor de fase mediana é desenhado.

video

Habilita a saída de vídeo. Ativado por padrão.

20.6.1 Detecção de defasagem

O filtro também detecta sequências fora de fase e mono em fluxos estéreo. Ele registra o início, o fim e a duração da sequência quando esta dura mais tempo ou pelo menos tanto quanto o mínimo definido.

O filtro aceita as seguintes opções para essa detecção:

phasing

Habilita a detecção de mono e de fora de fase. Desativado por padrão.

tolerance, t

Define a tolerância de fase para a detecção de mono, em relação de amplitude. O padrão é 0. O intervalo permitido é [0, 1].

angle, a

Define o limiar de ângulo para a detecção de fora de fase, em graus. O padrão é 170. O intervalo permitido é [90, 180].

duration, d

Define a duração de mono ou de fora de fase até a notificação, expressa em segundos. O padrão é 2.

20.6.2 Exemplos

  • Exemplo completo com ffmpeg para detectar 1 segundo de mono com tolerância de fase de 0.001:
    ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
    

20.7 avectorscope

Converte o áudio de entrada em uma saída de vídeo que representa o vetorscópio de áudio.

O filtro é usado para medir a diferença entre os canais de um fluxo de áudio estéreo. Um sinal monoaural, composto por sinais esquerdo e direito idênticos, resulta em uma linha vertical reta. Qualquer separação estéreo é visível como um desvio dessa linha, criando uma figura de Lissajous. Se a linha reta (ou o desvio dela) aparecer na horizontal, isso indica que os canais esquerdo e direito estão fora de fase.

O filtro aceita as seguintes opções:

mode, m

Define o modo do vetorscópio.

Os valores disponíveis são:

‘lissajous’

Lissajous rotacionado 45 graus.

‘lissajous_xy’

O mesmo que o anterior, porém sem rotação.

‘polar’

Forma que se assemelha a metade de um círculo.

O valor padrão é ‘lissajous’.

size, s

Define o tamanho do vídeo de saída. Para a sintaxe dessa opção, consulte a seção (ffmpeg-utils)"Tamanho do vídeo" no manual do ffmpeg-utils. O valor padrão é 400x400.

rate, r

Define a taxa de quadros de saída. O valor padrão é 25.

rc gc bc ac

Especifica o contraste de vermelho, verde, azul e alfa. Os valores padrão são 40, 160, 80 e 255. O intervalo permitido é [0, 255].

rf gf bf af

Especifica o desvanecimento de vermelho, verde, azul e alfa. Os valores padrão são 15, 10, 5 e 5. O intervalo permitido é [0, 255].

zoom

Define o fator de zoom. O valor padrão é 1. O intervalo permitido é [0, 10]. Valores menores que 1 ajustam automaticamente o fator de zoom para o maior valor possível.

draw

Define o modo de desenho do vetorscópio.

Os valores disponíveis são:

‘dot’

Desenha um ponto para cada amostra.

‘line’

Desenha uma linha entre a amostra anterior e a atual.

‘aaline’

Desenha uma linha com suavização (anti-aliasing) entre a amostra anterior e a atual.

O valor padrão é ‘dot’.

scale

Especifica a escala de amplitude das amostras de áudio.

Os valores disponíveis são:

‘lin’

Linear.

‘sqrt’

Raiz quadrada.

‘cbrt’

Raiz cúbica.

‘log’

Logarítmica.

swap

Troca o eixo do canal esquerdo com o eixo do canal direito.

mirror

Espelha o eixo.

‘none’

Sem espelhamento.

‘x’

Espelha somente o eixo x.

‘y’

Espelha somente o eixo y.

‘xy’

Espelha ambos os eixos.

20.7.1 Exemplos

  • Exemplo completo usando ffplay:
    ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
                 [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
    

20.7.2 Comandos

Este filtro aceita todas as opções acima como comandos, exceto as opções size e rate.

20.8 bench, abench

Faz o benchmark de uma parte de um filtergraph.

O filtro aceita as seguintes opções:

action

Inicia ou interrompe um temporizador.

Os valores disponíveis são:

‘start’

Obtém a hora atual, define-a como metadado do quadro (usando a chave lavfi.bench.start_time) e encaminha o quadro para o próximo filtro.

‘stop’

Obtém a hora atual e recupera o metadado lavfi.bench.start_time dos metadados do quadro de entrada para calcular a diferença de tempo. Em seguida, são impressos a diferença de tempo, a média, o máximo e o mínimo (respectivamente t, avg, max e min). As marcas de tempo são expressas em segundos.

20.8.1 Exemplos

  • Faz o benchmark do filtro selectivecolor:
    bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
    

20.9 concat

Concatena fluxos de áudio e vídeo, unindo-os um após o outro.

O filtro opera sobre segmentos de fluxos de vídeo e áudio sincronizados. Todos os segmentos devem ter o mesmo número de fluxos de cada tipo, e esse também será o número de fluxos na saída.

O filtro aceita as seguintes opções:

n

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

v

Define o número de fluxos de vídeo de saída, que também é o número de fluxos de vídeo em cada segmento. O padrão é 1.

a

Define o número de fluxos de áudio de saída, que também é o número de fluxos de áudio em cada segmento. O padrão é 0.

unsafe

Ativa o modo inseguro: não falha se os segmentos tiverem um formato diferente.

O filtro tem v+a saídas: primeiro v saídas de vídeo, depois a saídas de áudio.

Há nx(v+a) entradas: primeiro as entradas do primeiro segmento, na mesma ordem das saídas, depois as entradas do segundo segmento, e assim por diante.

Fluxos relacionados nem sempre têm exatamente a mesma duração, por diversos motivos, incluindo o tamanho de quadro do codec ou uma autoria pouco cuidadosa. Por esse motivo, fluxos sincronizados relacionados (por exemplo, um vídeo e sua trilha de áudio) devem ser concatenados de uma só vez. O filtro concat usará a duração do fluxo mais longo em cada segmento (exceto o último) e, se necessário, preencherá com silêncio os fluxos de áudio mais curtos.

Para que este filtro funcione corretamente, todos os segmentos devem começar na marca de tempo 0.

Todos os fluxos correspondentes devem ter os mesmos parâmetros em todos os segmentos; o sistema de filtragem selecionará automaticamente um pixel format comum para os fluxos de vídeo, e um sample format, uma taxa de amostragem e um layout de canais comuns para os fluxos de áudio, mas outras configurações, como a resolução, devem ser convertidas explicitamente pelo usuário.

Taxas de quadros diferentes são aceitáveis, mas resultarão em taxa de quadros variável na saída; certifique-se de configurar o arquivo de saída para lidar com isso.

20.9.1 Exemplos

  • Concatena uma abertura, um episódio e um encerramento, todos em versão bilíngue (vídeo no fluxo 0, áudio nos fluxos 1 e 2):

    ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
      '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
       concat=n=3:v=1:a=2 [v] [a1] [a2]' \
      -map '[v]' -map '[a1]' -map '[a2]' output.mkv
    
  • Concatena duas partes, tratando áudio e vídeo separadamente, usando as fontes (a)movie e ajustando a resolução:

    movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
    movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
    [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
    

Observe que ocorrerá uma dessincronização no ponto de junção caso os fluxos de áudio e vídeo não tenham exatamente a mesma duração no primeiro arquivo.

20.9.2 Comandos

Este filtro é compatível com os seguintes comandos:

next

Fecha o segmento atual e avança para o próximo

20.10 ebur128

Filtro de análise EBU R128. Este filtro recebe um fluxo de áudio e analisa seu nível de sonoridade (loudness). Por padrão, ele registra uma mensagem a uma frequência de 10Hz com a sonoridade momentânea (identificada por M), a sonoridade de curto prazo (S), a sonoridade integrada (I) e a faixa de sonoridade (LRA).

O filtro só consegue analisar fluxos cujo sample format seja ponto flutuante de precisão dupla. O fluxo de entrada será convertido para essa especificação, se necessário. Pode ser necessário inserir os filtros aformat e/ou aresample após este filtro para obter os parâmetros originais.

O filtro também tem uma saída de vídeo (veja a opção video) com um gráfico em tempo real para observar a evolução da sonoridade. O gráfico contém a mensagem registrada mencionada acima, portanto ela deixa de ser impressa quando essa opção é definida, a menos que o registro detalhado (verbose) esteja ativado. A área principal do gráfico contém a sonoridade de curto prazo (3 segundos de análise), e o medidor (gauge) à direita corresponde à sonoridade momentânea (400 milissegundos), mas pode opcionalmente ser configurado para exibir a sonoridade de curto prazo (veja gauge).

A área verde marca uma faixa-alvo de +/- 1LU em torno da sonoridade-alvo (-23LUFS por padrão, a menos que seja modificada por meio de target).

Mais informações sobre a Recomendação de Sonoridade EBU R128 em http://tech.ebu.ch/loudness.

O filtro aceita as seguintes opções:

video

Ativa a saída de vídeo. O fluxo de áudio é repassado sem alterações, independentemente de essa opção estar definida ou não. O fluxo de vídeo será o primeiro fluxo de saída, se ativado. O padrão é 0.

size

Define o tamanho do vídeo. Esta opção é somente para vídeo. Para a sintaxe dessa opção, consulte a seção (ffmpeg-utils)"Tamanho do vídeo" no manual do ffmpeg-utils. A resolução padrão e mínima é 640x480.

meter

Define o medidor de escala EBU. O padrão é 9. Os valores comuns são 9 e 18, respectivamente para o medidor de escala EBU +9 e o medidor de escala EBU +18. É permitido qualquer outro valor inteiro dentro desse intervalo.

metadata

Define a injeção de metadados. Se definida como 1, a entrada de áudio será segmentada em quadros de saída de 100ms, cada um contendo diversas informações de sonoridade nos metadados. Todas as chaves de metadados recebem o prefixo lavfi.r128..

O padrão é 0.

framelog

Força o nível de registro por quadro.

Os valores disponíveis são:

‘quiet’

registro desativado

‘info’

nível de registro informativo

‘verbose’

nível de registro detalhado

Por padrão, o nível de registro é definido como info. Se as opções video ou metadata forem definidas, ele muda para verbose.

peak

Define o(s) modo(s) de pico.

Os modos disponíveis podem ser acumulados (a opção é do tipo flag). Os valores possíveis são:

‘none’

Desativa qualquer modo de pico (padrão).

‘sample’

Ativa o modo de pico por amostra (sample-peak).

Modo de pico simples que busca o maior valor de amostra. Registra uma mensagem para o pico por amostra (identificada por SPK).

‘true’

Ativa o modo de pico verdadeiro (true-peak).

Se ativado, a busca de pico é feita em uma versão sobreamostrada do fluxo de entrada para maior precisão do pico. Registra uma mensagem para o pico verdadeiro (identificada por TPK) e para o pico verdadeiro por quadro (identificada por FTPK). Este modo requer uma compilação com libswresample.

dualmono

Trata arquivos de entrada mono como "mono duplo". Se um arquivo mono for destinado à reprodução em um sistema estéreo, sua medição EBU R128 será perceptualmente incorreta. Se definida como true, esta opção compensará esse efeito. Arquivos de entrada multicanal não são afetados por esta opção.

panlaw

Define uma lei de panorâmica (pan law) específica a ser usada na medição de arquivos mono duplo. Este parâmetro é opcional e tem um valor padrão de -3.01dB.

target

Define um nível-alvo específico (em LUFS) usado como zero relativo na visualização. Este parâmetro é opcional e tem um valor padrão de -23LUFS, conforme especificado pela EBU R128. No entanto, material publicado online pode preferir um nível de -16LUFS (por exemplo, para uso com podcasts ou plataformas de vídeo).

gauge

Define o valor exibido pelo medidor. Os valores válidos são momentary e shortterm. Por padrão, o valor momentâneo é usado, mas em certos cenários pode ser mais útil observar o valor de curto prazo (por exemplo, em mixagem ao vivo).

scale

Define a escala de exibição da sonoridade. Os parâmetros válidos são absolute (em LUFS) ou relative (LU) em relação ao alvo. Isso afeta apenas a saída de vídeo, não o resumo nem o registro contínuo.

integrated

Valor exportado somente leitura para a sonoridade integrada medida, em LUFS.

range

Valor exportado somente leitura para a faixa de sonoridade medida, em LU.

lra_low

Valor exportado somente leitura para o LRA baixo medido, em LUFS.

lra_high

Valor exportado somente leitura para o LRA alto medido, em LUFS.

sample_peak

Valor exportado somente leitura para o pico de amostra medido, em dBFS.

true_peak

Valor exportado somente leitura para o pico verdadeiro medido, em dBFS.

20.10.1 Exemplos

  • Gráfico em tempo real usando ffplay, com um medidor de escala EBU +18:

    ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
    
  • Executa uma análise com ffmpeg:

    ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
    

20.11 interleave, ainterleave

Intercala temporalmente quadros de várias entradas.

interleave funciona com entradas de vídeo, ainterleave com áudio.

Esses filtros leem quadros de várias entradas e enviam à saída o quadro mais antigo da fila.

Os fluxos de entrada devem ter valores de marca de tempo de quadro bem definidos e monotonicamente crescentes.

Para enviar um quadro à saída, esses filtros precisam enfileirar pelo menos um quadro de cada entrada; por isso, eles não conseguem funcionar caso uma entrada ainda não tenha terminado e não vá receber novos quadros.

Por exemplo, considere o caso em que uma entrada é um filtro select que sempre descarta quadros de entrada. O filtro interleave continuará lendo dessa entrada, mas nunca conseguirá enviar novos quadros à saída até que a entrada envie um sinal de fim de fluxo (end-of-stream).

Além disso, dependendo da sincronização entre as entradas, os filtros descartarão quadros caso uma entrada receba mais quadros que as demais e a fila já esteja cheia.

Esses filtros aceitam as seguintes opções:

nb_inputs, n

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

duration

Como determinar o fim de fluxo.

longest

A duração da entrada mais longa. (padrão)

shortest

A duração da entrada mais curta.

first

A duração da primeira entrada.

20.11.1 Exemplos

  • Intercala quadros pertencentes a fluxos diferentes usando ffmpeg:

    ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
    
  • Adiciona um efeito de desfoque cintilante:

    select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
    

20.12 latency, alatency

Mede a latência de filtragem.

Relata a latência de filtragem do filtro anterior, o atraso em número de amostras de áudio para filtros de áudio ou em número de quadros de vídeo para filtros de vídeo.

Ao final do fluxo de entrada, o filtro relata a latência mínima e máxima medida para o filtro anterior em execução no filtergraph.

20.13 metadata, ametadata

Manipula os metadados do quadro.

Este filtro aceita as seguintes opções:

mode

Define o modo de operação do filtro.

Pode ser um dos seguintes:

‘select’

Se tanto value quanto key estiverem definidos, seleciona os quadros que têm esse metadado. Se apenas key estiver definido, seleciona todo quadro que tenha essa chave nos metadados.

‘add’

Adiciona novo key e value de metadado. Se a chave já existir, não faz nada.

‘modify’

Modifica o valor de uma chave já existente.

‘delete’

Se value estiver definido, exclui apenas as chaves que têm esse valor. Caso contrário, exclui a chave. Se key não estiver definido, exclui todos os valores de metadados no quadro.

‘print’

Imprime a chave e seu valor, se metadados forem encontrados. Se key não estiver definido, imprime todos os valores de metadados disponíveis no quadro.

key

Define a chave usada em todos os modos. Deve ser definida em todos os modos, exceto print e delete.

value

Define o valor de metadado que será usado. Esta opção é obrigatória para os modos modify e add.

function

Qual função usar ao comparar o valor do metadado com value.

Pode ser uma das seguintes:

‘same_str’

Os valores são interpretados como strings; retorna true se o valor do metadado for igual a value.

‘starts_with’

Os valores são interpretados como strings; retorna true se o valor do metadado começar com a string da opção value.

‘less’

Os valores são interpretados como pontos flutuantes; retorna true se o valor do metadado for menor que value.

‘equal’

Os valores são interpretados como pontos flutuantes; retorna true se value for igual ao valor do metadado.

‘greater’

Os valores são interpretados como pontos flutuantes; retorna true se o valor do metadado for maior que value.

‘expr’

Os valores são interpretados como pontos flutuantes; retorna true se a expressão da opção expr for avaliada como true.

‘ends_with’

Os valores são interpretados como strings; retorna true se o valor do metadado terminar com a string da opção value.

expr

Define a expressão usada quando function está definida como expr. A expressão é avaliada por meio da API eval e pode conter as seguintes constantes:

VALUE1, FRAMEVAL

Representação em ponto flutuante de value a partir da chave de metadado.

VALUE2, USERVAL

Representação em ponto flutuante de value conforme fornecida pelo usuário na opção value.

file

Se especificado no modo print, a saída é gravada no arquivo indicado. Em vez de um simples nome de arquivo, pode ser especificada qualquer url gravável. O nome de arquivo “-” é um atalho para a saída padrão. Se a opção file não estiver definida, a saída é gravada no log com o nível de log AV_LOG_INFO.

direct

Reduz o buffering no modo print quando a saída é gravada em uma URL definida usando file.

20.13.1 Exemplos

  • Imprime todos os valores de metadados para quadros com a chave lavfi.signalstats.YDIF com valores entre 0 e 1.

    signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
    
  • Imprime a saída do silencedetect no arquivo metadata.txt.

    silencedetect,ametadata=mode=print:file=metadata.txt
    
  • Direciona todos os metadados para um pipe com descritor de arquivo 4.

    metadata=mode=print:file='pipe\:4'
    

20.14 perms, aperms

Define as permissões de leitura/escrita dos quadros de saída.

Esses filtros destinam-se principalmente a desenvolvedores, para testar o caminho direto no filtro seguinte do filtergraph.

Os filtros aceitam as seguintes opções:

mode

Seleciona o modo de permissões.

Aceita os seguintes valores:

‘none’

Não faz nada. Este é o padrão.

‘ro’

Define todos os quadros de saída como somente leitura.

‘rw’

Define todos os quadros de saída como diretamente graváveis.

‘toggle’

Torna o quadro somente leitura se ele for gravável, e gravável se ele for somente leitura.

‘random’

Define cada quadro de saída como somente leitura ou gravável de forma aleatória.

seed

Define a semente do modo random; deve ser um inteiro entre 0 e UINT32_MAX. Se não for especificada, ou se for explicitamente definida como -1, o filtro tentará usar uma boa semente aleatória, na medida do possível.

Observação: caso um filtro seja inserido automaticamente entre o filtro de permissões e o seguinte, a permissão pode não ser recebida como esperado nesse filtro seguinte. Inserir um filtro format ou aformat antes do filtro perms/aperms pode evitar esse problema.

20.15 realtime, arealtime

Reduz a velocidade da filtragem para se aproximar do tempo real.

Esses filtros pausam a filtragem por um período variável de tempo para ajustar a taxa de saída às marcas de tempo de entrada. São semelhantes à opção re do ffmpeg.

Aceitam as seguintes opções:

limit

Limite de tempo para as pausas. Qualquer pausa mais longa que esse limite será considerada uma descontinuidade de marca de tempo e reiniciará o temporizador. O padrão é 2 segundos.

speed

Fator de velocidade do processamento. O valor deve ser um ponto flutuante maior que zero. Valores maiores que 1.0 resultam em processamento mais rápido que o tempo real; valores menores tornam o processamento mais lento. O limit é ajustado automaticamente de acordo. O padrão é 1.0.

Não é possível alcançar uma velocidade de processamento maior do que a possível sem esses filtros.

20.15.1 Comandos

Ambos os filtros são compatíveis com todas as opções acima como comandos.

20.16 segment, asegment

Divide um único fluxo de entrada em vários fluxos.

Este filtro faz o oposto dos filtros concat.

segment opera sobre quadros de vídeo, asegment sobre amostras de áudio.

Este filtro aceita as seguintes opções:

timestamps

Marcas de tempo dos segmentos de saída, separadas por ’|’. O primeiro segmento vai do início do fluxo de entrada. O último segmento vai até o final do fluxo de entrada

frames, samples

Número exato de quadros/amostras para dividir os segmentos.

Em todos os casos, prefixar cada segmento com ’+’ o tornará relativo ao segmento anterior.

20.16.1 Exemplos

  • Divide o fluxo de áudio de entrada em três fluxos de áudio de saída: armazena a partir do início do fluxo de áudio de entrada no 1º fluxo de áudio de saída; em seguida, a partir do 60º segundo, no 2º fluxo de áudio de saída; e, por último, a partir do 150º segundo do fluxo de áudio de entrada, no 3º fluxo de áudio de saída:
    asegment=timestamps="60|150"
    

20.17 select, aselect

Seleciona os quadros a passar para a saída.

Este filtro aceita as seguintes opções:

expr, e

Define a expressão, que é avaliada para cada quadro de entrada.

Se a expressão for avaliada como zero, o quadro é descartado.

Se o resultado da avaliação for negativo ou NaN, o quadro é enviado para a primeira saída; caso contrário, é enviado para a saída com índice ceil(val)-1, considerando que o índice de entrada começa em 0.

Por exemplo, um valor 1.2 corresponde à saída com índice ceil(1.2)-1 = 2-1 = 1, ou seja, a segunda saída.

outputs, n

Define o número de saídas. A saída para a qual o quadro selecionado é enviado depende do resultado da avaliação. O valor padrão é 1.

A expressão pode conter as seguintes constantes:

n

O número (sequencial) do quadro filtrado, começando em 0.

selected_n

O número (sequencial) do quadro selecionado, começando em 0.

prev_selected_n

O número sequencial do último quadro selecionado. É NAN se indefinido.

TB

A base de tempo das marcas de tempo de entrada.

pts

O PTS (Presentation TimeStamp) do quadro filtrado, expresso em unidades de TB. É NAN se indefinido.

t

O PTS do quadro filtrado, expresso em segundos. É NAN se indefinido.

prev_pts

O PTS do quadro filtrado anteriormente. É NAN se indefinido.

prev_selected_pts

O PTS do último quadro filtrado anteriormente. É NAN se indefinido.

prev_selected_t

O PTS do último quadro selecionado anteriormente, expresso em segundos. É NAN se indefinido.

start_pts

O primeiro PTS do fluxo que não seja NAN. Permanece como NAN se não for encontrado.

start_t

O primeiro PTS, em segundos, do fluxo que não seja NAN. Permanece como NAN se não for encontrado.

pict_type (somente vídeo)

O tipo do quadro filtrado. Pode assumir um dos seguintes valores:

I P B S SI SP BI interlace_type (somente vídeo)

O tipo de entrelaçamento do quadro. Pode assumir um dos seguintes valores:

PROGRESSIVE

O quadro é progressivo (não entrelaçado).

TOPFIRST

O quadro é top-field-first (campo superior primeiro).

BOTTOMFIRST

O quadro é bottom-field-first (campo inferior primeiro).

consumed_sample_n (somente áudio)

o número de amostras selecionadas antes do quadro atual

samples_n (somente áudio)

o número de amostras no quadro atual

sample_rate (somente áudio)

a taxa de amostragem de entrada

key

É 1 se o quadro filtrado for um keyframe, 0 caso contrário.

pos

a posição no arquivo do quadro filtrado, -1 se a informação não estiver disponível (por exemplo, para vídeo sintético); obsoleto, não use

scene (somente vídeo)

valor entre 0 e 1 para indicar uma nova cena; um valor baixo reflete uma baixa probabilidade de o quadro atual introduzir uma nova cena, enquanto um valor mais alto significa que é mais provável que o quadro atual seja uma (veja o exemplo abaixo)

concatdec_select

O demuxer concat pode selecionar apenas parte de um arquivo de entrada concat definindo um inpoint e um outpoint, mas os pacotes de saída podem não estar totalmente contidos no intervalo selecionado. Usando essa variável, é possível pular quadros gerados pelo demuxer concat que não estejam exatamente contidos no intervalo selecionado.

Isso funciona comparando o pts do quadro com os valores de metadados de pacote lavf.concat.start_time e lavf.concat.duration, que também estão presentes nos quadros decodificados.

A variável concatdec_select vale -1 se o pts do quadro for pelo menos start_time e o metadado duration estiver ausente ou o pts do quadro for menor que start_time + duration; caso contrário, vale 0; e vale NaN se o metadado start_time estiver ausente.

Isso basicamente significa que um quadro de entrada é selecionado se seu pts estiver dentro do intervalo definido pelo demuxer concat.

iw (somente vídeo)

Representa a largura do quadro de vídeo de entrada.

ih (somente vídeo)

Representa a altura do quadro de vídeo de entrada.

view (somente vídeo)

ID de view para vídeo multivisão.

O valor padrão da expressão select é "1".

20.17.1 Exemplos

  • Seleciona todos os quadros na entrada:
    select
    

O exemplo acima é o mesmo que:

    select=1
  • Pula todos os quadros:

    select=0
    
  • Seleciona apenas os quadros I:

    select='eq(pict_type\,I)'
    
  • Seleciona um quadro a cada 100:

    select='not(mod(n\,100))'
    
  • Seleciona apenas os quadros contidos no intervalo de tempo 10-20:

    select=between(t\,10\,20)
    
  • Seleciona apenas os quadros I contidos no intervalo de tempo 10-20:

    select=between(t\,10\,20)*eq(pict_type\,I)
    
  • Seleciona quadros com uma distância mínima de 10 segundos:

    select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
    
  • Usa aselect para selecionar apenas quadros de áudio cujo número de amostras seja > 100:

    aselect='gt(samples_n\,100)'
    
  • Cria um mosaico das primeiras cenas:

    ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
    

Comparar scene com um valor entre 0.3 e 0.5 costuma ser uma escolha sensata.

  • Envia os quadros pares e ímpares para saídas separadas e os combina:

    select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
    
  • Seleciona os quadros úteis de um arquivo ffconcat que usa inpoints e outpoints, mas cujos arquivos de origem não contêm apenas quadros intra.

    ffmpeg -copyts -segment_time_metadata 1 -i input.ffconcat -fps_mode passthrough -vf select=concatdec_select -af aselect=concatdec_select output.avi
    

20.18 sendcmd, asendcmd

Envia comandos para os filtros do filtergraph.

Esses filtros leem os comandos que serão enviados a outros filtros do filtergraph.

sendcmd deve ser inserido entre dois filtros de vídeo, asendcmd deve ser inserido entre dois filtros de áudio, mas fora isso eles se comportam da mesma forma.

A especificação dos comandos pode ser fornecida nos argumentos do filtro por meio da opção commands, ou em um arquivo indicado pela opção filename.

Esses filtros aceitam as seguintes opções:

commands, c

Define os comandos a serem lidos e enviados aos outros filtros.

filename, f

Define o nome do arquivo com os comandos a serem lidos e enviados aos outros filtros.

20.18.1 Sintaxe dos comandos

Uma descrição de comandos consiste em uma sequência de especificações de intervalo, cada uma reunindo uma lista de comandos a serem executados quando ocorre um evento específico relacionado a esse intervalo. O evento em questão costuma ser o momento do quadro atual entrando ou saindo de um determinado intervalo de tempo.

Um intervalo é especificado pela seguinte sintaxe:

START[-END] COMMANDS;

O intervalo de tempo é especificado pelos tempos START e END. END é opcional e, por padrão, assume o tempo máximo.

O tempo do quadro atual é considerado dentro do intervalo especificado se estiver incluído no intervalo [START, END), ou seja, quando o tempo é maior ou igual a START e menor que END.

COMMANDS consiste em uma sequência de uma ou mais especificações de comando, separadas por ",", relativas a esse intervalo. A sintaxe de uma especificação de comando é a seguinte:

[FLAGS] TARGET COMMAND ARG

FLAGS é opcional e especifica o tipo de eventos relacionados ao intervalo de tempo que habilitam o envio do comando especificado; deve ser uma sequência não nula de flags identificadoras separadas por "+" ou "|" e delimitadas por "[" e "]".

São reconhecidas as seguintes flags:

enter

O comando é enviado quando a marca de tempo do quadro atual entra no intervalo especificado. Em outras palavras, o comando é enviado quando a marca de tempo do quadro anterior não estava no intervalo dado, e a atual está.

leave

O comando é enviado quando a marca de tempo do quadro atual sai do intervalo especificado. Em outras palavras, o comando é enviado quando a marca de tempo do quadro anterior estava no intervalo dado, e a atual não está.

expr

O ARG do comando é interpretado como uma expressão, e o resultado dessa expressão é passado como ARG.

A expressão é avaliada por meio da API eval e pode conter as seguintes constantes:

POS

Posição original do quadro no arquivo, ou indefinida se não estiver definida para o quadro atual. Obsoleto, não use.

PTS

O presentation timestamp de entrada.

N

A contagem do quadro de entrada, para vídeo ou áudio, começando em 0.

T

O tempo em segundos do quadro atual.

TS

O tempo de início em segundos do intervalo de comando atual.

TE

O tempo de término em segundos do intervalo de comando atual.

TI

O tempo interpolado do intervalo de comando atual, TI = (T - TS) / (TE - TS).

W

A largura do quadro de vídeo.

H

A altura do quadro de vídeo.

Se FLAGS não for especificado, assume-se o valor padrão [enter].

TARGET especifica o destino do comando, normalmente o nome da classe de filtro ou o nome de uma instância de filtro específica.

COMMAND especifica o nome do comando para o filtro de destino.

ARG é opcional e especifica a lista opcional de argumentos do COMMAND informado.

Entre uma especificação de intervalo e outra, espaços em branco, ou sequências de caracteres iniciadas por # até o fim da linha, são ignorados e podem ser usados para anotar comentários.

A seguir, uma descrição BNF simplificada da sintaxe de especificação de comandos:

COMMAND_FLAG  ::= "enter" | "leave"
COMMAND_FLAGS ::= COMMAND_FLAG [(+|"|")COMMAND_FLAG]
COMMAND       ::= ["[" COMMAND_FLAGS "]"] TARGET COMMAND [ARG]
COMMANDS      ::= COMMAND [,COMMANDS]
INTERVAL      ::= START[-END] COMMANDS
INTERVALS     ::= INTERVAL[;INTERVALS]

20.18.2 Exemplos

  • Especifica uma mudança de tempo do áudio no segundo 4:

    asendcmd=c='4.0 atempo tempo 1.5',atempo
    
  • Direciona uma instância de filtro específica:

    asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
    
  • Especifica uma lista de comandos drawtext e hue em um arquivo.

    # show text in the interval 5-10
    5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
             [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
    
    # desaturate the image in the interval 15-20
    15.0-20.0 [enter] hue s 0,
              [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
              [leave] hue s 1,
              [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
    
    # apply an exponential saturation fade-out effect, starting from time 25
    25 [enter] hue s exp(25-t)
    

Um filtergraph capaz de ler e processar a lista de comandos acima, armazenada em um arquivo test.cmd, pode ser especificado com:

    sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue

20.19 setpts, asetpts

Altera o PTS (presentation timestamp) dos quadros de entrada.

setpts atua sobre quadros de vídeo, asetpts sobre quadros de áudio.

Este filtro aceita as seguintes opções:

expr

A expressão avaliada para cada quadro a fim de construir sua marca de tempo.

strip_fps (apenas vídeo)

Opção booleana que determina se os metadados originais de taxa de quadros e duração de quadro são removidos. Se definida como true, é preciso especificar explicitamente uma taxa de quadros razoável caso a saída seja enviada a um muxer de taxa de quadros constante. O padrão é false.

A expressão é avaliada por meio da API eval e pode conter as seguintes constantes:

FRAME_RATE, FR

taxa de quadros; definida apenas para vídeo de taxa de quadros constante

PTS

O presentation timestamp de entrada

N

A contagem do quadro de entrada para vídeo, ou o número de amostras consumidas — sem contar o quadro atual — para áudio, começando em 0.

NB_CONSUMED_SAMPLES

O número de amostras consumidas, sem contar o quadro atual (apenas áudio)

NB_SAMPLES, S

O número de amostras no quadro atual (apenas áudio)

SAMPLE_RATE, SR

A taxa de amostragem do áudio.

STARTPTS

O PTS do primeiro quadro.

STARTT

o tempo em segundos do primeiro quadro

INTERLACED

Indica se o quadro atual é entrelaçado.

T

o tempo em segundos do quadro atual

POS

posição original do quadro no arquivo, ou indefinida se não estiver definida para o quadro atual; obsoleto, não use

PREV_INPTS

O PTS de entrada anterior.

PREV_INT

tempo de entrada anterior em segundos

PREV_OUTPTS

O PTS de saída anterior.

PREV_OUTT

tempo de saída anterior em segundos

RTCTIME

O tempo de relógio de parede (RTC) em microssegundos. Está obsoleto; use time(0) em seu lugar.

RTCSTART

O tempo de relógio de parede (RTC) no início do filme, em microssegundos.

TB

A base de tempo das marcas de tempo de entrada.

T_CHANGE

Tempo do primeiro quadro após o comando ser aplicado, ou tempo do primeiro quadro caso não haja comandos.

20.19.1 Exemplos

  • Começa a contar o PTS a partir de zero

    setpts=PTS-STARTPTS
    
  • Aplica um efeito de câmera rápida:

    setpts=0.5*PTS
    
  • Aplica um efeito de câmera lenta:

    setpts=2.0*PTS
    
  • Define uma taxa fixa de 25 quadros por segundo:

    setpts=N/(25*TB)
    
  • Aplica um efeito de jitter aleatório de +/-100 unidades de TB:

    setpts=PTS+randomi(0, -100\,100)
    
  • Define uma taxa fixa de 25 fps com algum jitter:

    setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
    
  • Aplica um deslocamento de 10 segundos ao PTS de entrada:

    setpts=PTS+10/TB
    
  • Gera marcas de tempo a partir de uma "fonte ao vivo" e as reajusta para a base de tempo atual:

    setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
    
  • Gera marcas de tempo contando amostras:

    asetpts=N/SR/TB
    

20.19.2 Comandos

Ambos os filtros aceitam todas as opções acima como comandos.

20.20 setrange

Força a faixa de cor do quadro de vídeo de saída.

O filtro setrange marca a propriedade de faixa de cor nos quadros de saída. Ele não altera o quadro de entrada, apenas define a propriedade correspondente, o que afeta como o quadro é tratado pelos filtros seguintes.

O filtro aceita as seguintes opções:

range

Os valores disponíveis são:

‘auto’

Mantém a mesma propriedade de faixa de cor.

‘unspecified, unknown’

Define a faixa de cor como não especificada.

‘limited, tv, mpeg’

Define a faixa de cor como limitada.

‘full, pc, jpeg’

Define a faixa de cor como completa.

20.21 settb, asettb

Define a base de tempo a ser usada para as marcas de tempo dos quadros de saída. É útil principalmente para testar a configuração da base de tempo.

Aceita os seguintes parâmetros:

expr, tb

A expressão avaliada para obter a base de tempo de saída.

O valor de tb é uma expressão aritmética que representa um racional. A expressão pode conter as constantes "AVTB" (a base de tempo padrão), "intb" (a base de tempo de entrada) e "sr" (a taxa de amostragem, apenas áudio). O valor padrão é "intb".

20.21.1 Exemplos

  • Define a base de tempo como 1/25:

    settb=expr=1/25
    
  • Define a base de tempo como 1/10:

    settb=expr=0.1
    
  • Define a base de tempo como 1001/1000:

    settb=1+0.001
    
  • Define a base de tempo como 2*intb:

    settb=2*intb
    
  • Define o valor padrão de base de tempo:

    settb=AVTB
    

20.22 showcqt

Converte o áudio de entrada em uma saída de vídeo que representa o espectro de frequência de forma logarítmica, usando o algoritmo de transformada Q constante de Brown-Puckette com cálculo direto dos coeficientes no domínio da frequência (embora a transformada em si não seja realmente de Q constante, pois o fator Q é na verdade variável/limitado), com escala de tons musicais, de E0 a D#10.

O filtro aceita as seguintes opções:

size, s

Especifica o tamanho de vídeo da saída. Deve ser um valor par. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils. O valor padrão é 1920x1080.

fps, rate, r

Define a taxa de quadros de saída. O valor padrão é 25.

bar_h

Define a altura do gráfico de barras. Deve ser um valor par. O valor padrão é -1, que calcula a altura do gráfico de barras automaticamente.

axis_h

Define a altura do eixo. Deve ser um valor par. O valor padrão é -1, que calcula a altura do eixo automaticamente.

sono_h

Define a altura do sonograma. Deve ser um valor par. O valor padrão é -1, que calcula a altura do sonograma automaticamente.

fullhd

Define a resolução fullhd. Esta opção está obsoleta; use size, s em seu lugar. O valor padrão é 1.

sono_v, volume

Especifica a expressão de volume do sonograma. Pode conter as variáveis:

bar_v

a expressão avaliada de bar_v

frequency, freq, f

a frequência em que é avaliada

timeclamp, tc

o valor da opção timeclamp

e as funções:

a_weighting(f)

Ponderação A de igual sonoridade

b_weighting(f)

Ponderação B de igual sonoridade

c_weighting(f)

Ponderação C de igual sonoridade.

O valor padrão é 16.

bar_v, volume2

Especifica a expressão de volume do gráfico de barras. Pode conter as variáveis:

sono_v

a expressão avaliada de sono_v

frequency, freq, f

a frequência em que é avaliada

timeclamp, tc

o valor da opção timeclamp

e as funções:

a_weighting(f)

Ponderação A de igual sonoridade

b_weighting(f)

Ponderação B de igual sonoridade

c_weighting(f)

Ponderação C de igual sonoridade.

O valor padrão é sono_v.

sono_g, gamma

Especifica a gama do sonograma. Uma gama menor deixa o espectro com mais contraste; uma gama maior amplia o alcance do espectro. O valor padrão é 3. O intervalo aceitável é [1, 7].

bar_g, gamma2

Especifica a gama do gráfico de barras. O valor padrão é 1. O intervalo aceitável é [1, 7].

bar_t

Especifica o nível de transparência do gráfico de barras. Um valor menor deixa o gráfico de barras mais nítido. O valor padrão é 1. O intervalo aceitável é [0, 1].

timeclamp, tc

Especifica o timeclamp da transformada. Em baixa frequência, há uma relação de compromisso entre a precisão no domínio do tempo e no domínio da frequência. Se timeclamp for menor, eventos no domínio do tempo são representados com mais precisão (como um bumbo rápido); caso contrário, eventos no domínio da frequência são representados com mais precisão (como um baixo). O intervalo aceitável é [0.002, 1]. O valor padrão é 0.17.

attack

Define o tempo de ataque em segundos. O padrão é 0 (desativado). Caso contrário, limita amostras futuras aplicando uma janela assimétrica no domínio do tempo, útil quando é necessária baixa latência. O intervalo aceito é [0, 1].

basefreq

Especifica a frequência base da transformada. O valor padrão é 20.01523126408007475, que é a frequência 50 cents abaixo de E0. O intervalo aceitável é [10, 100000].

endfreq

Especifica a frequência final da transformada. O valor padrão é 20495.59681441799654, que é a frequência 50 cents acima de D#10. O intervalo aceitável é [10, 100000].

coeffclamp

Esta opção está obsoleta e é ignorada.

tlength

Especifica o comprimento da transformada no domínio do tempo. Use esta opção para controlar a relação de compromisso de precisão entre o domínio do tempo e o domínio da frequência em cada amostra de frequência. Pode conter as variáveis:

frequency, freq, f

a frequência em que é avaliada

timeclamp, tc

o valor da opção timeclamp.

O valor padrão é 384*tc/(384+tc*f).

count

Especifica o número de transformadas por quadro de vídeo. O valor padrão é 6. O intervalo aceitável é [1, 30].

fcount

Especifica o número de transformadas por pixel. O valor padrão é 0, que faz com que seja calculado automaticamente. O intervalo aceitável é [0, 10].

fontfile

Especifica o arquivo de fonte a ser usado com o freetype para desenhar o eixo. Se não for especificado, usa a fonte incorporada. Observe que o desenho com arquivo de fonte ou fonte incorporada não está implementado quando basefreq e endfreq são personalizados; nesse caso, use a opção axisfile.

font

Especifica o padrão do fontconfig. Tem prioridade menor que fontfile. O : no padrão pode ser substituído por | para evitar escapes desnecessários.

fontcolor

Especifica a expressão de cor da fonte. É uma expressão aritmética que deve retornar um valor inteiro 0xRRGGBB. Pode conter as variáveis:

frequency, freq, f

a frequência em que é avaliada

timeclamp, tc

o valor da opção timeclamp

e as funções:

midi(f)

número midi da frequência f; alguns números midi: E0(16), C1(24), C2(36), A4(69)

r(x), g(x), b(x)

valor de vermelho, verde e azul da intensidade x.

O valor padrão é st(0, (midi(f)-59.5)/12); st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0)); r(1-ld(1)) + b(ld(1)).

axisfile

Especifica o arquivo de imagem para desenhar o eixo. Esta opção substitui as opções fontfile e fontcolor.

axis, text

Ativa/desativa o desenho de texto no eixo. Se definida como 0, o desenho no eixo é desativado, ignorando as opções fontfile e axisfile. O valor padrão é 1.

csp

Define o espaço de cor. Os valores aceitos são:

‘unspecified’

Não especificado (padrão)

‘bt709’

BT.709

‘fcc’

FCC

‘bt470bg’

BT.470BG ou BT.601-6 625

‘smpte170m’

SMPTE-170M ou BT.601-6 525

‘smpte240m’

SMPTE-240M

‘bt2020ncl’

BT.2020 com luminância não constante

cscheme

Define o esquema de cores do espectrograma. É uma lista de valores em ponto flutuante no formato left_r|left_g|left_b|right_r|right_g|right_b. O padrão é 1|0.5|0|0|0.5|1.

20.22.1 Exemplos

  • Reproduz o áudio enquanto exibe o espectro:

    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
    
  • O mesmo que acima, mas com taxa de quadros de 30 fps:

    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
    
  • Reproduz em 1280x720:

    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
    
  • Desativa a exibição do sonograma:

    sono_h=0
    
  • A1 e seus harmônicos: A1, A2, (próximo de)E3, A3:

    ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
                     asplit[a][out1]; [a] showcqt [out0]'
    
  • O mesmo que acima, mas com mais precisão no domínio da frequência:

    ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
                     asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
    
  • Volume personalizado:

    bar_v=10:sono_v=bar_v*a_weighting(f)
    
  • Gama personalizada; agora o espectro é linear em relação à amplitude.

    bar_g=2:sono_g=2
    
  • Equação de tlength personalizada:

    tc=0.33:tlength='st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'
    
  • fontcolor e fontfile personalizados; a nota C é colorida de verde, as demais de azul:

    fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
    
  • Fonte personalizada usando fontconfig:

    font='Courier New,Monospace,mono|bold'
    
  • Intervalo de frequência personalizado, com eixo personalizado usando um arquivo de imagem:

    axisfile=myaxis.png:basefreq=40:endfreq=10000
    

20.23 showcwt

Converte o áudio de entrada em uma saída de vídeo que representa o espectro de frequência usando a Transformada Wavelet Contínua (Continuous Wavelet Transform) e a wavelet de Morlet.

O filtro aceita as seguintes opções:

size, s

Especifica o tamanho de vídeo da saída. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils. O valor padrão é 640x512.

rate, r

Define a taxa de quadros de saída. O valor padrão é 25.

scale

Define a escala de frequência usada. Os valores permitidos são:

linear log bark mel erbs sqrt cbrt qdrt fm

O valor padrão é linear.

iscale

Define a escala de intensidade usada. Os valores permitidos são:

linear log sqrt cbrt qdrt

O valor padrão é log.

min

Define a frequência mínima que será usada na saída. O padrão é 20 Hz.

max

Define a frequência máxima que será usada na saída. O padrão é 20000 Hz. O limite superior real de frequência depende da taxa de amostragem do áudio de entrada, e esse limite será aplicado a este valor quando ele for definido com um valor maior que a frequência de Nyquist.

imin

Define a intensidade mínima que será usada na saída.

imax

Define a intensidade máxima que será usada na saída.

logb

Define a base logarítmica da intensidade de brilho ao mapear os valores de magnitude calculados para valores de pixel. O intervalo permitido vai de 0 a 1. O valor padrão é 0.0001.

deviation

Define o desvio de frequência. Valores menores que 1 são mais orientados à frequência, enquanto valores maiores que 1 são mais orientados ao tempo. O intervalo permitido vai de 0 a 10. O valor padrão é 1.

pps

Define o número de pixels de saída por segundo em uma linha. O intervalo permitido vai de 1 a 1024. O valor padrão é 64.

mode

Define o modo visual de saída. Os valores permitidos são:

magnitude

Mostra a magnitude.

phase

Mostra apenas a fase.

magphase

Mostra a combinação de magnitude e fase. A magnitude é mapeada para o brilho, e a fase, para a cor.

channel

Mostra uma cor exclusiva para a magnitude de cada canal.

stereo

Mostra uma cor exclusiva para a diferença estéreo.

O valor padrão é magnitude.

slide

Define o método de deslizamento (slide) da saída. Os valores permitidos são:

replace scroll frame direction

Define o método de direção para o modo de deslizamento de saída. Os valores permitidos são:

lr

Direção da esquerda para a direita.

rl

Direção da direita para a esquerda.

ud

Direção de cima para baixo.

du

Direção de baixo para cima.

bar

Define a proporção da exibição do gráfico de barras em relação ao tamanho da tela. O padrão é 0.

rotation

Define a rotação de cor; deve estar no intervalo [-1.0, 1.0]. O valor padrão é 0.

20.24 showfreqs

Converte o áudio de entrada em uma saída de vídeo que representa o espectro de potência do áudio. A amplitude do áudio fica no eixo Y, enquanto a frequência fica no eixo X.

O filtro aceita as seguintes opções:

size, s

Especifica o tamanho do vídeo. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils. O padrão é 1024x512.

rate, r

Define a taxa de vídeo. O padrão é 25.

mode

Define o modo de exibição. Isso define como cada bin de frequência será representado.

Aceita os seguintes valores:

‘line’ ‘bar’ ‘dot’

O padrão é bar.

ascale

Define a escala de amplitude.

Aceita os seguintes valores:

‘lin’

Escala linear.

‘sqrt’

Escala de raiz quadrada.

‘cbrt’

Escala de raiz cúbica.

‘log’

Escala logarítmica.

O padrão é log.

fscale

Define a escala de frequência.

Aceita os seguintes valores:

‘lin’

Escala linear.

‘log’

Escala logarítmica.

‘rlog’

Escala logarítmica inversa.

O padrão é lin.

win_size

Define o tamanho da janela. O intervalo permitido vai de 16 a 65536.

O padrão é 2048

win_func

Define a função de janela.

Aceita os seguintes valores:

‘rect’ ‘bartlett’ ‘hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’

O padrão é hanning.

overlap

Define a sobreposição da janela. No intervalo [0, 1]. O padrão é 1, o que significa que será escolhida a sobreposição ideal para a função de janela selecionada.

averaging

Define a média temporal. Definir esse valor como 0 exibe os picos máximos atuais. O padrão é 1, o que significa que a média temporal fica desativada.

colors

Especifica a lista de cores, separadas por espaço ou por ’|’, usadas para desenhar as frequências dos canais. Cores não reconhecidas ou ausentes são substituídas pela cor branca.

cmode

Define o modo de exibição dos canais.

Aceita os seguintes valores:

‘combined’ ‘separate’

O padrão é combined.

minamp

Define a amplitude mínima usada no escalonador de amplitude log.

data

Define o modo de exibição dos dados.

Aceita os seguintes valores:

‘magnitude’ ‘phase’ ‘delay’

O padrão é magnitude.

channels

Define os canais a usar no processamento do áudio. Por padrão, todos são processados.

20.25 showspatial

Converte o áudio estéreo de entrada em uma saída de vídeo, representando a relação espacial entre os dois canais.

O filtro aceita as seguintes opções:

size, s

Especifica o tamanho do vídeo de saída. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils. O valor padrão é 512x512.

win_size

Define o tamanho da janela. O intervalo permitido vai de 1024 a 65536. O tamanho padrão é 4096.

win_func

Define a função de janela.

Aceita os seguintes valores:

‘rect’ ‘bartlett’ ‘hann’ ‘hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’

O valor padrão é hann.

rate, r

Define a taxa de quadros de saída.

20.26 showspectrum

Converte o áudio de entrada em uma saída de vídeo, representando o espectro de frequência do áudio.

O filtro aceita as seguintes opções:

size, s

Especifica o tamanho do vídeo de saída. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils. O valor padrão é 640x512.

slide

Especifica como o espectro deve deslizar ao longo da janela.

Aceita os seguintes valores:

‘replace’

as amostras recomeçam à esquerda quando alcançam a direita

‘scroll’

as amostras deslizam da direita para a esquerda

‘fullframe’

os quadros só são produzidos quando as amostras alcançam a direita

‘rscroll’

as amostras deslizam da esquerda para a direita

‘lreplace’

as amostras recomeçam à direita quando alcançam a esquerda

O valor padrão é replace.

mode

Especifica o modo de exibição.

Aceita os seguintes valores:

‘combined’

todos os canais são exibidos na mesma linha

‘separate’

todos os canais são exibidos em linhas separadas

O valor padrão é ‘combined’.

color

Especifica o modo de cor de exibição.

Aceita os seguintes valores:

‘channel’

cada canal é exibido em uma cor separada

‘intensity’

cada canal é exibido usando o mesmo esquema de cores

‘rainbow’

cada canal é exibido usando o esquema de cores rainbow

‘moreland’

cada canal é exibido usando o esquema de cores moreland

‘nebulae’

cada canal é exibido usando o esquema de cores nebulae

‘fire’

cada canal é exibido usando o esquema de cores fire

‘fiery’

cada canal é exibido usando o esquema de cores fiery

‘fruit’

cada canal é exibido usando o esquema de cores fruit

‘cool’

cada canal é exibido usando o esquema de cores cool

‘magma’

cada canal é exibido usando o esquema de cores magma

‘green’

cada canal é exibido usando o esquema de cores green

‘viridis’

cada canal é exibido usando o esquema de cores viridis

‘plasma’

cada canal é exibido usando o esquema de cores plasma

‘cividis’

cada canal é exibido usando o esquema de cores cividis

‘terrain’

cada canal é exibido usando o esquema de cores terrain

O valor padrão é ‘channel’.

scale

Especifica a escala usada para calcular os valores de cor de intensidade.

Aceita os seguintes valores:

‘lin’

linear

‘sqrt’

raiz quadrada, padrão

‘cbrt’

raiz cúbica

‘log’

logarítmica

‘4thrt’

raiz de 4ª ordem

‘5thrt’

raiz de 5ª ordem

O valor padrão é ‘sqrt’.

fscale

Especifica a escala de frequência.

Aceita os seguintes valores:

‘lin’

linear

‘log’

logarítmica

O valor padrão é ‘lin’.

saturation

Define o modificador de saturação das cores exibidas. Valores negativos fornecem um esquema de cores alternativo. 0 significa nenhuma saturação. A saturação deve estar no intervalo [-10.0, 10.0]. O valor padrão é 1.

win_func

Define a função de janela.

Aceita os seguintes valores:

‘rect’ ‘bartlett’ ‘hann’ ‘hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’

O valor padrão é hann.

orientation

Define a orientação do eixo tempo/frequência. Pode ser vertical ou horizontal. O padrão é vertical.

overlap

Define a proporção de sobreposição da janela. O valor padrão é 0. Quando o valor é 1, a sobreposição é definida com o tamanho recomendado para a função de janela usada no momento.

gain

Define o ganho de escala usado para calcular os valores de cor de intensidade. O valor padrão é 1.

data

Define quais dados exibir. Pode ser magnitude (padrão), phase, ou a fase desdobrada: uphase.

rotation

Define a rotação de cor, que deve estar no intervalo [-1.0, 1.0]. O valor padrão é 0.

start

Define a frequência inicial a partir da qual exibir o espectrograma. O padrão é 0.

stop

Define a frequência final até a qual exibir o espectrograma. O padrão é 0.

fps

Define o limite superior da taxa de quadros. O padrão é auto (ilimitado).

legend

Desenha os eixos de tempo e frequência e as legendas. Desativado por padrão.

drange

Define a faixa dinâmica usada para calcular os valores de cor de intensidade. O padrão é 120 dBFS. O intervalo permitido vai de 10 a 200.

limit

Define o limite superior do volume das amostras de áudio de entrada, em dBFS. O padrão é 0 dBFS. O intervalo permitido vai de -100 a 100.

opacity

Define a intensidade de opacidade ao usar um pixel format de saída com componente alfa.

O uso é muito semelhante ao do filtro showwaves; veja os exemplos naquela seção.

20.26.1 Exemplos

  • Janela grande com escala de cor logarítmica:

    showspectrum=s=1280x480:scale=log
    
  • Exemplo completo de um espectro colorido e deslizante por canal usando ffplay:

    ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
                 [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
    

20.27 showspectrumpic

Converte o áudio de entrada em um único quadro de vídeo, representando o espectro de frequência do áudio.

O filtro aceita as seguintes opções:

size, s

Especifica o tamanho do vídeo de saída. Para a sintaxe desta opção, consulte a seção (ffmpeg-utils)"Video size" do manual do ffmpeg-utils. O valor padrão é 4096x2048.

mode

Especifica o modo de exibição.

Aceita os seguintes valores:

‘combined’

todos os canais são exibidos na mesma linha

‘separate’

todos os canais são exibidos em linhas separadas

O valor padrão é ‘combined’.

color

Especifica o modo de cor de exibição.

Aceita os seguintes valores:

‘channel’

cada canal é exibido em uma cor separada

‘intensity’

cada canal é exibido usando o mesmo esquema de cores

‘rainbow’

cada canal é exibido usando o esquema de cores rainbow

‘moreland’

cada canal é exibido usando o esquema de cores moreland

‘nebulae’

cada canal é exibido usando o esquema de cores nebulae

‘fire’

cada canal é exibido usando o esquema de cores fire

‘fiery’

cada canal é exibido usando o esquema de cores fiery

‘fruit’

cada canal é exibido usando o esquema de cores fruit

‘cool’

cada canal é exibido usando o esquema de cores cool

‘magma’

cada canal é exibido usando o esquema de cores magma

‘green’

cada canal é exibido usando o esquema de cores green

‘viridis’

cada canal é exibido usando o esquema de cores viridis

‘plasma’

cada canal é exibido usando o esquema de cores plasma

‘cividis’

cada canal é exibido usando o esquema de cores cividis

‘terrain’

cada canal é exibido usando o esquema de cores terrain

O valor padrão é ‘intensity’.

scale

Especifica a escala usada para calcular os valores de cor de intensidade.

Aceita os seguintes valores:

‘lin’

linear

‘sqrt’

raiz quadrada, padrão

‘cbrt’

raiz cúbica

‘log’

logarítmica

‘4thrt’

raiz de 4ª ordem

‘5thrt’

raiz de 5ª ordem

O valor padrão é ‘log’.

fscale

Especifica a escala de frequência.

Aceita os seguintes valores:

‘lin’

linear

‘log’

logarítmica

O valor padrão é ‘lin’.

saturation

Define o modificador de saturação das cores exibidas. Valores negativos fornecem um esquema de cores alternativo. 0 significa nenhuma saturação. A saturação deve estar no intervalo [-10.0, 10.0]. O valor padrão é 1.

win_func

Define a função de janela.

Aceita os seguintes valores:

‘rect’ ‘bartlett’ ‘hann’ ‘hanning’ ‘hamming’ ‘blackman’ ‘welch’ ‘flattop’ ‘bharris’ ‘bnuttall’ ‘bhann’ ‘sine’ ‘nuttall’ ‘lanczos’ ‘gauss’ ‘tukey’ ‘dolph’ ‘cauchy’ ‘parzen’ ‘poisson’ ‘bohman’ ‘kaiser’

O valor padrão é hann.

orientation

Define a orientação do eixo tempo/frequência. Pode ser vertical ou horizontal. O padrão é vertical.

gain

Define o ganho de escala usado para calcular os valores de cor de intensidade. O valor padrão é 1.

legend

Desenha os eixos de tempo e frequência e as legendas. Ativado por padrão.

rotation

Define a rotação de cor, que deve estar no intervalo [-1.0, 1.0]. O valor padrão é 0.

start

Define a frequência inicial a partir da qual exibir o espectrograma. O padrão é 0.

stop

Define a frequência final até a qual exibir o espectrograma. O padrão é 0.

drange

Define a faixa dinâmica usada para calcular os valores de cor de intensidade. O padrão é 120 dBFS. O intervalo permitido vai de 10 a 200.

limit

Define o limite superior do volume das amostras de áudio de entrada, em dBFS. O padrão é 0 dBFS. O intervalo permitido vai de -100 a 100.

opacity

Define a intensidade de opacidade ao usar um pixel format de saída com componente alfa.

20.27.1 Exemplos

  • Extrai um espectrograma de áudio de uma faixa de áudio inteira em uma imagem de 1024x1024 usando ffmpeg:
    ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
    

20.28 showvolume

Converte o volume do áudio de entrada em uma saída de vídeo.

O filtro aceita as seguintes opções:

rate, r

Define a taxa de vídeo.

b

Define a largura da borda; o intervalo permitido é [0, 5]. O padrão é 1.

w

Define a largura do canal; o intervalo permitido é [80, 8192]. O padrão é 400.

h

Define a altura do canal; o intervalo permitido é [1, 900]. O padrão é 20.

f

Define o fade; o intervalo permitido é [0, 1]. O padrão é 0.95.

c

Define a expressão de cor do volume.

A expressão pode usar as seguintes variáveis:

VOLUME

Volume máximo atual do canal, em dB.

PEAK

Pico atual.

CHANNEL

Número do canal atual, começando em 0.

t

Se definido, exibe os nomes dos canais. Ativado por padrão.

v

Se definido, exibe os valores de volume. Ativado por padrão.

o

Define a orientação; pode ser horizontal: h ou vertical: v, o padrão é h.

s

Define o tamanho do passo; o intervalo permitido é [0, 5]. O padrão é 0, o que significa que o passo fica desativado.

p

Define a opacidade do plano de fundo; o intervalo permitido é [0, 1]. O padrão é 0.

m

Define o modo de medição; pode ser peak: p ou rms: r, o padrão é p.

ds

Define a escala de exibição; pode ser linear: lin ou log: log, o padrão é lin.

dm

Em segundos. Se definido para > 0., exibe uma linha com o nível máximo dos segundos anteriores. o padrão é desativado: 0.

dmc

A cor da linha de máximo. Usado quando a opção dm é definida para > 0. o padrão é: orange

20.29 showwaves

Converte a entrada de áudio em uma saída de vídeo, representando as ondas das amostras.

O filtro aceita as seguintes opções:

size, s

Especifica o tamanho do vídeo para a saída. Para a sintaxe desta opção, consulte a seção "Video size" do manual do ffmpeg-utils. O valor padrão é 600x240.

mode

Define o modo de exibição.

Os valores disponíveis são:

‘point’

Desenha um ponto para cada amostra.

‘line’

Desenha uma linha vertical para cada amostra.

‘p2p’

Desenha um ponto para cada amostra e uma linha entre eles.

‘cline’

Desenha uma linha vertical centralizada para cada amostra.

O valor padrão é point.

n

Define o número de amostras impressas na mesma coluna. Um valor maior reduz a taxa de quadros. Deve ser um número inteiro positivo. Esta opção só pode ser definida se o valor de rate não tiver sido especificado explicitamente.

rate, r

Define a taxa de quadros (aproximada) da saída. Isso é feito ajustando a opção n. O valor padrão é "25".

split_channels

Define se os canais devem ser desenhados separadamente ou sobrepostos. O valor padrão é 0.

colors

Define as cores, separadas por ’|’, que serão usadas para desenhar cada canal.

scale

Define a escala de amplitude.

Os valores disponíveis são:

‘lin’

Linear.

‘log’

Logarítmica.

‘sqrt’

Raiz quadrada.

‘cbrt’

Raiz cúbica.

O padrão é linear.

draw

Define o modo de desenho. É útil principalmente definir isso para valores altos de n.

Os valores disponíveis são:

‘scale’

Dimensiona os valores de pixel de cada amostra desenhada.

‘full’

Desenha cada amostra diretamente.

O valor padrão é scale.

20.29.1 Exemplos

  • Emite o áudio do arquivo de entrada e a representação em vídeo correspondente ao mesmo tempo:

    amovie=a.mp3,asplit[out0],showwaves[out1]
    
  • Cria um sinal sintético e o exibe com showwaves, forçando uma taxa de quadros de 30 quadros por segundo:

    aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
    

20.30 showwavespic

Converte a entrada de áudio em um único quadro de vídeo, representando as ondas das amostras.

O filtro aceita as seguintes opções:

size, s

Especifica o tamanho do vídeo para a saída. Para a sintaxe desta opção, consulte a seção "Video size" do manual do ffmpeg-utils. O valor padrão é 600x240.

split_channels

Define se os canais devem ser desenhados separadamente ou sobrepostos. O valor padrão é 0.

colors

Define as cores, separadas por ’|’, que serão usadas para desenhar cada canal.

scale

Define a escala de amplitude.

Os valores disponíveis são:

‘lin’

Linear.

‘log’

Logarítmica.

‘sqrt’

Raiz quadrada.

‘cbrt’

Raiz cúbica.

O padrão é linear.

draw

Define o modo de desenho.

Os valores disponíveis são:

‘scale’

Dimensiona os valores de pixel de cada amostra desenhada.

‘full’

Desenha cada amostra diretamente.

O valor padrão é scale.

filter

Define o modo de filtragem.

Os valores disponíveis são:

‘average’

Usa o valor médio das amostras para cada amostra desenhada.

‘peak’

Usa o valor de pico das amostras para cada amostra desenhada.

O valor padrão é average.

20.30.1 Exemplos

  • Extrai, usando o ffmpeg, uma representação por canais separados da forma de onda de uma faixa de áudio inteira em uma imagem de 1024x800:
    ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
    

20.31 sidedata, asidedata

Exclui os dados laterais (side data) do quadro, ou seleciona quadros com base neles.

Este filtro aceita as seguintes opções:

mode

Define o modo de operação do filtro.

Pode ser um dos seguintes:

‘select’

Seleciona todos os quadros com dados laterais de type.

‘delete’

Exclui os dados laterais de type. Se type não estiver definido, exclui todos os dados laterais do quadro.

type

Define o tipo de dados laterais usado em todos os modos. Deve ser definido para o modo select.

Os valores possíveis são:

‘PANSCAN’ ‘A53_CC’ ‘STEREO3D’ ‘MATRIXENCODING’ ‘DOWNMIX_INFO’ ‘REPLAYGAIN’ ‘DISPLAYMATRIX’ ‘AFD’ ‘MOTION_VECTORS’ ‘SKIP_SAMPLES’ ‘AUDIO_SERVICE_TYPE’ ‘MASTERING_DISPLAY_METADATA’ ‘GOP_TIMECODE’ ‘SPHERICAL’ ‘CONTENT_LIGHT_LEVEL’ ‘ICC_PROFILE’ ‘S12M_TIMECODE’ ‘DYNAMIC_HDR_PLUS’ ‘REGIONS_OF_INTEREST’ ‘VIDEO_ENC_PARAMS’ ‘SEI_UNREGISTERED’ ‘FILM_GRAIN_PARAMS’ ‘DETECTION_BOUNDING_BOXES’ ‘DETECTION_BBOXES’ ‘DOVI_RPU_BUFFER’ ‘DOVI_METADATA’ ‘DYNAMIC_HDR_VIVID’ ‘AMBIENT_VIEWING_ENVIRONMENT’ ‘VIDEO_HINT’

20.32 spectrumsynth

Sintetiza áudio a partir de 2 espectros de vídeo de entrada; o primeiro fluxo de entrada representa a magnitude ao longo do tempo e o segundo representa a fase ao longo do tempo. O filtro transforma o domínio da frequência, exibido nos vídeos, de volta ao domínio do tempo, apresentado na saída de áudio.

Este filtro foi criado principalmente para inverter saídas processadas do filtro showspectrum, mas também pode sintetizar som a partir de outros espectrogramas. Nesse caso, porém, os resultados tendem a ser ruins se os dados de fase não estiverem disponíveis, pois é necessário recriá-los, o que normalmente é feito a partir de ruído aleatório. Para obter os melhores resultados, use uma saída somente em tons de cinza (modo de cor channel no filtro showspectrum), escala log para o vídeo de magnitude e escala lin para o vídeo de fase. Para gerar a fase, use a opção data no segundo vídeo. Os vídeos de entrada devem geralmente usar o modo de deslizamento fullframe, pois isso economiza os recursos necessários para decodificar o vídeo.

O filtro aceita as seguintes opções:

sample_rate

Especifica a taxa de amostragem do áudio de saída; a taxa de amostragem do áudio a partir do qual o espectro foi gerado pode ser diferente.

channels

Define o número de canais representados nos espectros de vídeo de entrada.

scale

Define a escala usada ao gerar o espectro de magnitude de entrada. Pode ser lin ou log. O padrão é log.

slide

Define o modo de deslizamento usado ao gerar os espectros de entrada. Pode ser replace, scroll, fullframe ou rscroll. O padrão é fullframe.

win_func

Define a função de janela usada para a resíntese.

overlap

Define a sobreposição da janela. No intervalo [0, 1]. O padrão é 1, o que significa que a sobreposição ideal para a função de janela selecionada será escolhida.

orientation

Define a orientação dos vídeos de entrada. Pode ser vertical ou horizontal. O padrão é vertical.

20.32.1 Exemplos

  • Primeiro crie os vídeos de magnitude e fase a partir do áudio, supondo que o áudio seja estéreo com taxa de amostragem de 44100, depois ressintetize os vídeos de volta para áudio com spectrumsynth:
    ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut
    ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut
    ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
    

20.33 split, asplit

Divide a entrada em várias saídas idênticas.

asplit funciona com entrada de áudio, split com vídeo.

O filtro aceita um único parâmetro que especifica o número de saídas. Se não for especificado, o padrão é 2.

20.33.1 Exemplos

  • Cria duas saídas separadas a partir da mesma entrada:

    [in] split [out0][out1]
    
  • Para criar 3 ou mais saídas, é necessário especificar o número de saídas, como em:

    [in] asplit=3 [out0][out1][out2]
    
  • Cria duas saídas separadas a partir da mesma entrada, uma recortada e outra preenchida:

    [in] split [splitout1][splitout2];
    [splitout1] crop=100:100:0:0    [cropout];
    [splitout2] pad=200:200:100:100 [padout];
    
  • Cria 5 cópias do áudio de entrada com ffmpeg:

    ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
    

20.34 zmq, azmq

Recebe comandos enviados por um cliente libzmq e os encaminha para os filtros no filtergraph.

zmq e azmq funcionam como filtros de passagem (pass-through). zmq deve ser inserido entre dois filtros de vídeo, azmq entre dois filtros de áudio. Ambos são capazes de enviar mensagens para qualquer tipo de filtro.

Para habilitar esses filtros, é necessário instalar a biblioteca e os cabeçalhos do libzmq e configurar o FFmpeg com --enable-libzmq.

Para mais informações sobre libzmq, consulte: http://www.zeromq.org/

Os filtros zmq e azmq funcionam como um servidor libzmq, que recebe mensagens enviadas por uma interface de rede definida pela opção bind_address (ou pela abreviação "b"). O valor padrão dessa opção é tcp://localhost:5555. Você pode alterar esse valor conforme necessário, mas não se esqueça de fazer o escape de qualquer sinal ’:’ (veja o escape em filtergraph).

A mensagem recebida deve ter a seguinte forma:

TARGET COMMAND [ARG]

TARGET especifica o destino do comando, geralmente o nome da classe do filtro ou o nome de uma instância de filtro específica. O nome de instância de filtro padrão segue o padrão ‘Parsed__’, mas você pode sobrescrevê-lo usando a sintaxe ‘filter_name@id’ (veja a sintaxe do Filtergraph).

COMMAND especifica o nome do comando para o filtro de destino.

ARG é opcional e especifica a lista de argumentos opcionais para o COMMAND indicado.

Ao ser recebida, a mensagem é processada e o comando correspondente é injetado no filtergraph. Dependendo do resultado, o filtro enviará uma resposta ao cliente, adotando o formato:

ERROR_CODE ERROR_REASON
MESSAGE

MESSAGE é opcional.

20.34.1 Exemplos

Veja tools/zmqsend para um exemplo de cliente zmq que pode ser usado para enviar comandos processados por esses filtros.

Considere o seguinte filtergraph gerado pelo ffplay. Neste exemplo, o último filtro overlay tem um nome de instância. Todos os outros filtros terão nomes de instância padrão.

ffplay -dumpgraph 1 -f lavfi "
color=s=100x100:c=red  [l];
color=s=100x100:c=blue [r];
nullsrc=s=200x100, zmq [bg];
[bg][l]   overlay     [bg+l];
[bg+l][r] overlay@my=x=100 "

Para alterar a cor do lado esquerdo do vídeo, o seguinte comando pode ser usado:

echo Parsed_color_0 c yellow | tools/zmqsend

Para alterar o lado direito:

echo Parsed_color_1 c pink | tools/zmqsend

Para alterar a posição do lado direito:

echo overlay@my x 150 | tools/zmqsend

21 Fontes multimídia

A seguir está uma descrição das fontes multimídia atualmente disponíveis.

21.1 amovie

É igual à fonte movie, exceto que seleciona um fluxo de áudio por padrão.

21.2 avsynctest

Gera um teste de sincronização de áudio/vídeo.

O fluxo gerado exibe periodicamente um quadro de vídeo em flash e emite um bipe no áudio. Útil para inspecionar problemas de sincronização A/V.

Aceita as seguintes opções:

size, s

Define o tamanho do vídeo de saída. O valor padrão é hd720.

framerate, fr

Define a taxa de quadros do vídeo de saída. O valor padrão é 30.

samplerate, sr

Define a taxa de amostragem do áudio de saída. O valor padrão é 44100.

amplitude, a

Define a amplitude do bipe do áudio de saída. O valor padrão é 0.7.

period, p

Define o período do bipe do áudio de saída, em segundos. O valor padrão é 3.

delay, dl

Define o atraso do flash do vídeo de saída, em número de quadros. O valor padrão é 0.

cycle, c

Habilita a ciclagem dos atrasos de vídeo; desabilitado por padrão.

duration, d

Define a duração da saída do fluxo. Por padrão, a duração é ilimitada.

fg, bg, ag

Define a cor de primeiro plano/plano de fundo/adicional.

21.2.1 Comandos

Esta fonte oferece suporte a algumas das opções acima como comandos.

21.3 movie

Lê fluxo(s) de áudio e/ou vídeo de um container de filme.

Aceita os seguintes parâmetros:

filename

O nome do recurso a ser lido (não necessariamente um arquivo; também pode ser um dispositivo ou um fluxo acessado por meio de algum protocolo).

format_name, f

Especifica o formato assumido para o filme a ser lido, podendo ser o nome de um container ou de um dispositivo de entrada. Se não for especificado, o formato é deduzido a partir de movie_name ou por sondagem (probing).

seek_point, sp

Especifica o ponto de busca em segundos. Os quadros serão emitidos a partir desse ponto de busca. O parâmetro é avaliado com av_strtod, portanto o valor numérico pode ter um sufixo IS. O valor padrão é "0".

streams, s

Especifica os fluxos a serem lidos. Vários fluxos podem ser especificados, separados por "+". A fonte terá então tantas saídas, na mesma ordem. A sintaxe é explicada na seção "Stream specifiers" do manual do ffmpeg. Dois nomes especiais, "dv" e "da", especificam respectivamente o fluxo de vídeo e de áudio padrão (mais adequado). O padrão é "dv", ou "da" se o filtro for chamado como "amovie".

stream_index, si

Especifica o índice do fluxo de vídeo a ser lido. Se o valor for -1, o fluxo de vídeo mais adequado será selecionado automaticamente. O valor padrão é "-1". Obsoleto. Se o filtro for chamado como "amovie", selecionará áudio em vez de vídeo.

loop

Especifica quantas vezes o fluxo será lido em sequência. Se o valor for 0, o fluxo será repetido infinitamente em loop. O valor padrão é "1".

Observe que, quando o filme é reproduzido em loop, as marcas de tempo de origem não são alteradas, portanto serão geradas marcas de tempo que não crescem monotonicamente.

discontinuity

Especifica a diferença de tempo entre quadros acima da qual o ponto é considerado uma descontinuidade de marca de tempo, sendo removida ao ajustar as marcas de tempo posteriores.

dec_threads

Especifica o número de threads para a decodificação

format_opts

Especifica as opções de formato para o arquivo aberto. As opções de formato podem ser especificadas como uma lista de pares chave=valor separados por ’:’. O exemplo a seguir mostra como adicionar as opções protocol_whitelist e protocol_blacklist:

ffplay -f lavfi
"movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"

Isso permite sobrepor um segundo vídeo à entrada principal de um filtergraph, como mostrado neste grafo:

input -----------> deltapts0 --> overlay --> output
                                    ^
                                    |
movie --> scale--> deltapts1 -------+

21.3.1 Exemplos

  • Pula 3.2 segundos a partir do início do arquivo AVI in.avi e o sobrepõe à entrada rotulada como "in":

    movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
    [in] setpts=PTS-STARTPTS [main];
    [main][over] overlay=16:16 [out]
    
  • Lê de um dispositivo video4linux2 e o sobrepõe à entrada rotulada como "in":

    movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
    [in] setpts=PTS-STARTPTS [main];
    [main][over] overlay=16:16 [out]
    
  • Lê o primeiro fluxo de vídeo e o fluxo de áudio com id 0x81 de dvd.vob; o vídeo é conectado ao pad chamado "video" e o áudio é conectado ao pad chamado "audio":

    movie=dvd.vob:s=v:0+#0x81 [video] [audio]
    

21.3.2 Comandos

Tanto movie quanto amovie oferecem suporte aos seguintes comandos:

seek

Realiza a busca usando "av_seek_frame". A sintaxe é: seek stream_index|timestamp|flags

  • stream_index: Se stream_index for -1, um fluxo padrão é selecionado, e o timestamp é convertido automaticamente das unidades AV_TIME_BASE para o time_base específico do fluxo.
  • timestamp: Timestamp nas unidades AVStream.time_base ou, se nenhum fluxo for especificado, em unidades AV_TIME_BASE.
  • flags: Flags que selecionam a direção e o modo de busca.

get_duration

Obtém a duração do filme em unidades AV_TIME_BASE.

22 Veja também

ffmpeg, ffplay, ffprobe, libavfilter

23 Autores

Os desenvolvedores do FFmpeg.

Para 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-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