Estoy tratando de cambiar la velocidad de fotogramas de un video MP4 (es un video GoPro de 120 fps, quiero reproducirlo a 30 fps para un efecto de cámara lenta).
Estoy usando avconv para esto:
avconv -i SourceMovie.mp4 -vf setpts=4.0*PTS -r 30 DestMovie.mp4
Eso técnicamente funciona, pero vuelve a codificar la película. Además de ser lento, obviamente es un problema de calidad. Técnicamente debería haber una manera de configurar los fps en el encabezado del video, ¿cómo puedo cambiar eso? (Cualquier herramienta que no sea avconv también funcionaría).
video
avconv
video-conversion
EboMike
fuente
fuente
MP4Box -add source.mp4#video -raw 1 -new test
) y luego guárdela como MP4 nuevamente (MP4Box -add test_track1.h264:fps=30 -new dest.mp4
). También puede agregar una pista de audio allí (a través de #audio).-single
opción para el primer comando.MP4Box -single 1 -raw 1 SourceMovie.mp4
crea solo un archivo enSourceMovie_track1.h264
lugar de dos.Cambiar la velocidad de fotogramas en el encabezado del video (contenedor) no tiene ningún efecto en la videostream (o audiostream) en sí. La recodificación es la única opción.
Videostreams tiene marcas de tiempo y en la mayoría de los videos los cuadros son interdependientes entre sí debido a la compresión entre cuadros. Algunos jugadores pueden acelerar y ralentizar el video, pero no mediante comandos integrados o algo así. Ningún jugador puede cambiar la velocidad de fotogramas sobre la marcha cuando un comando de contenedor lo solicita. El archivo de video terminará fuera de las especificaciones (es decir, no seguirá los estándares) y el 99.9% de los jugadores se negarán a cumplirlo. Es imposible hacer lo que quiere sin recodificar. Por supuesto, puede esperar con la recodificación hasta el último paso en su edición.
fuente
En el caso de que su intención principal sea reproducirlo en cámara lenta, y no mantener el archivo como MP4, puede usar la herramienta GUI MKVmerge para remuxarlo a un contenedor Matroska que puede cambiar fácilmente la velocidad de fotogramas. Remuxing es mucho mejor que volver a codificar, porque solo cambia los metadatos, y no la secuencia en sí.
Primero instalas el paquete
Luego inicia MKVmerge GUI. Te enfrentarás a una ventana como esta
Simplemente presione el botón Agregar y seleccione su archivo o simplemente arrastre y suelte el archivo en el área "Archivos de entrada". En este punto, debería poder seleccionar la transmisión de video en su video. También puede eliminar otras transmisiones, ya que de todos modos se interpondrán en el camino.
Una vez que lo haya seleccionado, debería ver que las pestañas inferiores se activan:
Cambiar a "Formatear acciones específicas"
Puede ver que hay un campo "FPS", donde puede ingresar el valor de fotogramas por segundo. Parecía que planeabas ralentizar las cosas cuatro veces, por lo que tu objetivo sería aproximadamente 7 fotogramas por segundo. También puede usar la opción "Estirar por".
Después de eso, puede cambiar el nombre del archivo de salida (si lo desea) y presionar "Iniciar muxing".
El programa se ejecutará y deberías tener tu archivo.
fuente
También quería ralentizar sin pérdidas mis películas de 120 FPS a 30 FPS. Hice un script que lo hace cambiando el tempo del sonido y modificando FPS directamente en el contenedor MP4. Se requieren las siguientes herramientas:
La secuencia de comandos utilizada para la conversión está aquí:
Este script crea una copia de MP4 con _slow postfix.
fuente