Referências de cadeia Ffmpeg a outras partes do comando para tamanho dinâmico de marca d'água

1

Eu tenho lido os documentos do ffmpeg por um tempo agora. Mas não consigo entender como os filtros, os nomes e as referências anteriores funcionam. Ou se o que eu quero é mesmo possível.

Estou tentando converter uma marca d'água em uma fonte de saída. Isso não é documentado, mas o que eu não consigo encontrar é como usar dimensões de uma parte nos cálculos de outra.

Por exemplo, codificando uma marca d'água fixa em um vídeo:

ffmpeg -y -threads 8 -i bunny-source.mp4 \
-i wm.png -filter_complex \
"[1:v]scale=100:-1[watermark]; [0:v][watermark]overlay=10:main_h-overlay_h-10[outv]" \
-map "[outv]" -map 0:a  marked.mp4 

Isso gera uma marca d'água de 100 px na parte inferior da saída. Eu entendo que a saída de um filtro complexo é nomeada no acabamento [colchetes]. Descobri que o primeiro parâmetro no [a: b] é o índice numérico da entrada (-i). Mas o que significa o: v. E como eu mudaria o comando para que, em vez de 100, eu consiga 30% da largura da fonte de entrada? Isso é possível?

    
por jpluijmers 13.02.2015 / 14:30

1 resposta

1

But what does the :v mean?

Este é o especificador de fluxo . Por exemplo, 1:v refere-se a second input:all video streams (note que ffmpeg começa a contar a partir de 0).

Isso pode ser ainda mais refinado; 1:v:2 refere-se a second input:video stream type:third video stream . Então, isso escolherá o terceiro fluxo de vídeo da segunda entrada.

How would I go about changing the command so that instead of 100 pixel width, I get 30% of the input source width?

No filtro de escala, os valores das opções w e h são expressões que, entre outras coisas, podem fazer referência à largura de entrada ( iw ) e à altura ( ih ). Então, seu comando ficaria assim:

ffmpeg -y -i bunny-source.mp4 -i wm.png -filter_complex \
"[1:v]scale=iw*0.3:-1[watermark]; \
 [0:v][watermark]overlay=10:main_h-overlay_h-10[outv]" \
-map "[outv]" -map 0:a  marked.mp4

Isso aumentará wm.png a 30% de sua largura e, portanto, também a altura, já que você usou -1 , que escolherá automaticamente o valor correto com base no valor fornecido, preservando a proporção.

Consulte a documentação do filtro de vídeo em escala do FFmpeg para obter mais informações.

    
por 13.02.2015 / 18:49