Ffmpeg: cambiar la velocidad de fotogramas sin volver a codificar

Ffmpeg: cambiar la velocidad de fotogramas sin volver a codificar

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 atempofiltro 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_complexse toma la secuencia de audio del archivo de entrada cero ( source.mkv) y se ejecuta a través del atempofiltro, luego se nombra la salida [out]. Luego usamos -mapargumentos 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.

información relacionada