Como posso dimensionar uma sobreposição dentro de um ffmpeg filtercomplex?

2

Eu gostaria de aplicar uma sobreposição do PNG (marca d'água) a um arquivo de vídeo arbitrário usando o ffmpeg. Gostaria que o vídeo ficasse com o tamanho original (que eu não conheço antes) e o PNG como dimensionado em relação ao vídeo.

Por exemplo, o comando a seguir coloca a sobreposição no canto superior esquerdo:

ffmpeg.exe -i input.mov -i header.png -filter_complex \
    "[0][1] overlay=0:0" output.mkv

E o seguinte comando dimensiona a sobreposição em relação a si mesma (1/5 da largura, altura relativa):

ffmpeg.exe -i input.mov -i header.png -filter_complex \
    "[1] scale=iw/5:-1 [scaled]; \
    [0][scaled] overlay=0:0" output.mkv

Como eu poderia fazer a sobreposição de 1/5 da largura de input.mov ? (Por exemplo, é possível armazenar e / ou consultar a largura de outra cláusula de filtro?)

A pergunta mais próxima que eu encontrei é Sobreposição de marca d'água em escala por tamanho de vídeo com ffmpeg mas essa resposta usa comandos externos do Linux / Cygwin. marca d'água FFmpeg também foi útil enquanto eu estava imaginando o ffmpeg. No entanto, estou no Windows e invocando ffmpeg via Python, então eu gostaria de fazer tudo dentro da cláusula filter_complex. Se isso não for possível, eu gostaria de ter certeza para poder parar de tentar:)

    
por d3vid 01.07.2015 / 13:41

1 resposta

3

Minha abordagem seria dois comandos separados, um para calcular as dimensões e outro para sobrepor. Você pode simplesmente usar FFprobe que vem junto com FFmpeg . Para calcular as dimensões, você pode usar o seguinte comando.

ffprobe -v error -show_entries stream=width,height -of default=noprint_wrappers=1 input_video

Isso resultará como segue.

width=1280

height=720

Depois de fazer o que quiser, aplique-o ao seu comando de sobreposição. Também aqui são mais algumas opções de escalonamento.

Espero que isso ajude!

    
por 01.07.2015 / 14:47