¿Existe un método estándar para aplicar un filtro ffmpeg desde una posición inicial con nombre, o esto varía según los diferentes filtros?
Si aplico un desenfoque, por ejemplo, puedo desenfocar todo el clip fácilmente, pero si quisiera desenfocar a partir de 5 segundos, ¿cómo lo lograría (sin recortar y concatinar nuevamente)?
Respuesta1
El método más sencillo es utilizar un filtro que tengasoporte de línea de tiempo(la enable
opción).
Vea la lista de filtros con ffmpeg -filters
y busque el T
que está al lado del nombre. Ejemplo:
Filters:
T.. = Timeline support
.S. = Slice threading
..C = Command support
A = Audio input/output
V = Video input/output
N = Dynamic number and/or type of input/output
| = Source or sink filter
[...]
TSC avgblur V->V Apply Average Blur filter.
T.. boxblur V->V Blur the input.
T.C dblur V->V Apply Directional Blur filter.
TSC gblur V->V Apply Gaussian Blur filter.
T.. sab V->V Apply shape adaptive blur.
T.. smartblur V->V Blur the input video without impacting the outlines.
TS. unsharp V->V Sharpen or blur the input video.
TSC yaepblur V->V Yet another edge preserving blur filter.
Entonces todos estos filtros de desenfoque lo admiten.
Comando de ejemplo para difuminar desde la marca de tiempo 5 hasta el final:
ffmpeg -i input.mp4 -vf "boxblur=enable='gt(t,5)'" -c:a copy output.mp4
Verlista de funciones adicionales.
Si un filtro no admite una línea de tiempo, se puede utilizar una solución alternativarecortaryajustesfiltros para seleccionar el tiempo del video a filtrar, luegocubriroconcatfiltros para colocarlo. Debería haber varios ejemplos en este sitio.