Superponer imagen en video y pausar el video y el audio durante el intervalo específico

Superponer imagen en video y pausar el video y el audio durante el intervalo específico

¿Es posible pausar el audio y el vídeo durante el período de superposición? Una vez que el audio está en pausa, ¿es posible agregar una nueva pista de audio solo durante ese intervalo? Tiempo restante que debe reproducirse el audio original.

Por ejemplo,

Estoy usando ffmpeg para superponer varias imágenes en un video usando el comando mencionado a continuación,

ffmpeg -i 2.mp4 -i guantes.png -i calcetines.png -filter_complex "[1:v]scale=320:240 [ovrl]; [0:v][ovrl]overlay=y=Hh:enable=' entre(t,3,8)'[v1];[2:v]scale=320:240 [ovrl1];[v1][ovrl1]overlay=y=Hh:enable='entre(t,15,20) '[v2]" -map "[v2]" -map 0:a -c:a copia salidaVideo.mp4

Ahora necesito pausar el video y el audio entre 3 y 8 segundos, reproducir un audio nuevo solo durante los 3 a 8 segundos y continuar con el audio anterior durante el tiempo restante.

Por favor ayúdenme con esto.

Respuesta1

Para pausar el audio y el vídeo, puede realizar looplas transmisiones o compensar el PTS.

Secuencias en bucle

loop=loop={len_frames}:size=1:start={pos_frames},setpts=N/FRAME_RATE/TB

Aquí, {len_frames}está la longitud del bucle en fotogramas y {pos_frames}es la posición de la pausa en fotogramas. Puedes calcular estos números obteniendo la velocidad de fotogramas del vídeo y multiplicándola por la duración elegida y la marca de tiempo en segundos.

Lo mismo ocurre con la parte de audio, para la que hay que utilizar aloopy asetpts, respectivamente, y la frecuencia de muestreo en Hz. Además, debes silenciar el audio configurando el archivo volume=0.

Las transmisiones de video y audio en bucle serán más largas que las originales y luego podrá mostrar la superposición sobre ellas.

Como estos comandos son bastante complejos de armar, escribí unprograma pitónque inserta un indicador de "almacenamiento en búfer" mientras el video y el audio están en pausa. Puedes comprobar cómo se generan los comandos de bucle.aquí.

Compensación para PTS

Ver Gyanresponde aquí, que esencialmente hace:

setpts='PTS+gte(T\,{start_time})*({shift}/TB)'

combinado con -vsync vfr, donde {start_time}es el momento en el que se desplazan los fotogramas y {shift}se aplica el desplazamiento.

Cambio de audio

En cuanto a reproducir el audio durante un intervalo de tiempo particular, puedeutilizar la -itsoffsetopción de entradapara compensar su inicio.

O compensa el PTS de la transmisión de audio con una cantidad fija usando el asetptsfiltro.

información relacionada