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
fadedeclara 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=
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
irgaindefinido explicitamente para o valor estimado e comirnormdesabilitado:"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
ffmpegpara 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_notchda bibliotecaVCF: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 - Metronomeda bibliotecaC* 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 Pluginsde Steve Harris:ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2 -
Atenua frequências baixas usando o Multiband EQ da coleção
SWH Pluginsde 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
Narrowerda bibliotecaC* 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
ffmpegpara 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 é:
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
flitee o dispositivolavfi: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_processusandoffmpegegnuplot: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’.
11.63 delogo
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:
- Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN). Consulte http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf.
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=10define a largura de todas as bordas como 10boxborderw=10|20define a largura das bordas superior e inferior como 10 e a largura das bordas esquerda e direita como 20boxborderw=10|20|30define a largura da borda superior como 10, a largura da borda inferior como 30 e a largura das bordas esquerda e direita como 20boxborderw=10|20|30|40define 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:
texto topo do glifo mais alto da primeira linha de texto é posicionado em ybaselinea linha de base da primeira linha de texto é posicionada em yfonta 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
ffprobee 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/3e 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.5e raio8: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)
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
ffmpegcom 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;
WxHdeve 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.
11.212 removelogo
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:
- Modelo Super-Resolution Convolutional Neural Network (SRCNN). Consulte https://arxiv.org/abs/1501.00092.
- Modelo Efficient Sub-Pixel Convolutional Neural Network (ESPCN). Consulte https://arxiv.org/abs/1609.05158.
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
5imagens em uma área de3x2quadros, com7pixels entre elas e2pixels 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
ffmpegpara 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 bibliotecallvmdeve 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 cudaou-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,
nullsrcpode ser usado. O comando a seguir gera ruído no plano de luma empregando o filtrogeq: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
ffmpegpara 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.YDIFcom 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_
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