Estoy intentando cambiar la velocidad de fotogramas de un vídeo para que dure un poco más. No quiero volver a codificar y quiero que el audio permanezca sincronizado. Pude extraer el video sin procesar del video y luego remuxarlo usando...
ffmpeg -i source.mkv -c copy -f h264 video.h264
ffmpeg -r 23.976 -i video.h264 -c copy dest.mp4
Esto crea un vídeo que ahora se reproduce en el momento correcto sin audio.
¿Cómo puedo obtener un .mp4 terminado con el audio?
Respuesta1
Deberá ajustar la velocidad del audio para que coincida con el video y volver a codificarlo, pero puede hacerlo sin volver a codificar el video.
Primero, calcule cuánto necesita ajustar el audio. Suponiendo que originalmente se trataba de un vídeo de 25 fps, estás reduciendo la velocidad a 23,976, tu factor de velocidad es 23,976/25 = 0,959. Lo conectaremos al atempo
filtro para ajustar la velocidad del audio, sacándolo del original source.mkv
.
ffmpeg -i source.mkv -r 23.976 -i video.h264 -filter_complex "[0:a]atempo=0.959[out]" -map 1:v -map "[out]" -c:a aac -c:v copy out.mp4
Aquí -filter_complex
se toma la secuencia de audio del archivo de entrada cero ( source.mkv
) y se ejecuta a través del atempo
filtro, luego se nombra la salida [out]
. Luego usamos -map
argumentos para decir que queremos tomar esa transmisión de audio así como la transmisión de video del primer archivo de entrada (comenzando desde cero, por lo que en realidad es el segundo video.h264
). Tenemos que recodificar el audio porque queremos cambiarlo, pero podemos simplemente copiar el video en el contenedor.