
Estoy intentando ejecutar el siguiente cmd, que debería agregar una marca de agua al video y también mejorarlo.
ffmpeg -i "in.avi" -i "\logo.png" -vf scale=854:-1 -preset
veryfast -crf 20 -filter_complex overlay=5:5 "ou.mkv"
Recibo el siguiente error.
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 intentar aumentar la escala (sin la escala -vf = 854: -1), el cmd funcionaba con la marca de agua.
¿Cómo puedo lograr ambos?
¿Qué he probado?
- Mover el parámetro -vf antes de la entrada, después de la entrada, etc.
Respuesta1
Puedes usar unográfico de filtropara hacer todos los filtrados:
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]
se refiere a las transmisiones de video de la primera entrada (input.avi
en este ejemplo).[1:v]
es el vídeo de la segunda entrada (logo.png
en este ejemplo).El audio escopiado al vaporen este ejemplo en lugar de volver a codificarse; suponiendo que su primera entrada tenga audio.
La mejor práctica es nombrar manualmente las entradas y salidas del filtro, como en este ejemplo, en lugar de confiar en valores predeterminados que pueden resultar en selecciones de flujo incorrectas.
-2
en elfiltro de vídeo de escalase usa en lugar de-1
porque x264 requiere que la salida sea divisible por 2 cuando se genera en submuestreo de croma 4:2:0:
Si uno de los valores es -n con n > 1, el filtro de escala también usará un valor que mantiene la relación de aspecto de la imagen de entrada, calculada a partir de la otra dimensión especificada. Después de eso, sin embargo, se asegurará de que la dimensión calculada sea divisible por n y ajustará el valor si es necesario.