¿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 loop
las 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 aloop
y 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 -itsoffset
opción de entradapara compensar su inicio.
O compensa el PTS de la transmisión de audio con una cantidad fija usando el asetpts
filtro.