
Estou tentando executar o seguinte cmd, que deve adicionar uma marca d’água ao vídeo e também aumentá-lo.
ffmpeg -i "in.avi" -i "\logo.png" -vf scale=854:-1 -preset
veryfast -crf 20 -filter_complex overlay=5:5 "ou.mkv"
Eu recebo o seguinte erro.
Filtergraph 'scale=854:-1' was specified through the
-vf/-af/-filter option for output stream 0:0, which is fed from
a complex filtergraph. -vf/-af/-filter and -filter_complex
cannot be used together for the same stream.
Antes de tentar fazer o upscale (sem a escala -vf=854:-1), o cmd funcionava com marca d'água.
Como posso conseguir ambos?
O que eu tentei?
- Movendo o parâmetro -vf antes da entrada, depois da entrada etc.
Responder1
Você pode usar umgráfico de filtropara fazer toda a filtragem:
ffmpeg -i input.avi -i logo.png -filter_complex \
"[0:v]scale=854:-2[scaled]; \
[scaled][1:v]overlay=5:5[out]" \
-map "[out]" -map 0:a -c:v libx264 -c:a copy output.mkv
[0:v]
refere-se ao(s) fluxo(s) de vídeo da primeira entrada (input.avi
neste exemplo).[1:v]
é o vídeo da segunda entrada (logo.png
neste exemplo).O áudio évapor copiadoneste exemplo, em vez de ser recodificado; assumindo que sua primeira entrada tenha áudio.
A melhor prática é nomear manualmente as entradas e saídas do filtro, como neste exemplo, em vez de confiar em padrões que podem resultar em seleções de fluxo inadequadas.
-2
nofiltro de vídeo em escalaé usado em vez de-1
porque x264 exige que a saída seja divisível por 2 ao enviar para subamostragem de croma 4:2:0:
Se um dos valores for -n com n > 1, o filtro de escala também utilizará um valor que mantém a proporção da imagem de entrada, calculada a partir da outra dimensão especificada. Depois disso, porém, certificar-se-á de que a dimensão calculada é divisível por n e ajustará o valor se necessário.