Pregunta FFMPEG parpadea superposición


Tengo una manipulación de video bastante compleja (para mí) para completar:

  • obtener un video fuente
  • recortarla
  • voltearlo
  • superposición con una imagen: 3s OFF, 80s ON

He logrado completar los primeros pasos:

ffmpeg.exe -i source.flv -vf "movie=overlay.jpg [logo]; 
           [in] crop=854:430:0:50 [crop]; [crop] hflip [flipped]; 
           [flipped][logo] overlay=0:0 [out]" 
           -c:v h264 -c:a copy output.mp4

Pero realmente no sé por dónde empezar para que la superposición aparezca y desaparezca varias veces durante el video ...

Eché un vistazo a manual de filtro de recubrimiento y vi esta muestra
overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
Tal vez podría usar una fórmula similar para mis propósitos: si remainder (t / 83) <= 2 entonces NAN, de lo contrario 0: 0 ... pero ¿cómo puedo calcular el resto? En C # puedo usar t% 83, pero ¿qué pasa con ffmpeg?
¿Hay otra manera?


3


origen




Respuestas:


Finalmente encontré una solución jugando con la muestra y la lectura Página de evaluación de expresiones:

ffmpeg.exe -i source.flv -vf "movie=overlay.jpg [logo]; 
           [in] crop=854:430:0:50 [crop]; 
           [crop] hflip [flipped]; 
           [flipped][logo] overlay=x='if(lt(mod(t,83),3),NAN,0)':y=0 [out]" 
           -c:v h264 -c:a copy output.mp4

La idea es encontrar el resto de t / 83: si es menor que 3, entonces la superposición no se debe mostrar; de lo contrario, sí.
Espero eso ayude...


3



Edición de línea de tiempo puede ser útil. Puedes volcar el movie filtro de fuente multimedia y acortar el comando de alguna manera: ffmpeg -i source.flv -i overlay.jpg -filter_complex "[0:v]crop,hflip[cf];[cf][1:v]overlay... - LordNeckbeard