
Tengo un vídeo que es un partido de fútbol. Me gustaría acortar el tiempo before the game
, during half time
y por fin el final del juego.
Longitud total del clip 1h 51m
o111m
Lo ideal es que los cortes y tiempos sean los siguientes:
+------------+-------------+---------------------+
| Start Time | Finish Time | Clip Duration |
+------------+-------------+---------------------+
| 1:30 | 47:30 | 47:30 |
| 53:00 | 100:00 | 47 |
+------------+-------------+---------------------+
Sin embargo mi video termina en
ffmpeg -ss 00:01:30 -i Tripod_Camera.mp4 -t 00:47:30 -ss 00:53:00 -t 00:47:00 -c copy VideoClip.mp4
Respuesta1
Make
input.txt
que contiene las marcas de tiempo (en segundos) para cortar:file 'input.mp4' inpoint 90 outpoint 2850 file 'input.mp4' inpoint 3180 outpoint 6000
Corre
ffmpeg
para concatenar con eldemultiplexor concat:ffmpeg -f concat -i input.txt -c copy output.mp4
Esta voluntadcopia de flujo, por lo que no se produce ninguna recodificación, lo que significa que todo el proceso será rápido y se preservará la calidad. Sin embargo, se realizarán cortes en los fotogramas clave, por lo que es posible que no sea lo suficientemente preciso. Si se necesita una mayor precisión, tendrá que usar un método mucho más lento, como usar los filtros (a)trim, (a)setpts y concat, que requieren una recodificación.
Si obtienes desincronización A/V entoncesobtener marcas de tiempo de fotogramas clave, utilice marcas de tiempo de fotogramas clave como su
inpoint
, pero agregue 0,001 a cadainpoint
marca de tiempo eninput.txt
.
Respuesta2
UsarVideograbadoque he escrito con este propósito. Debido a su propio muxer, es más preciso que ffmpeg y proporciona una interfaz gráfica.
Dado que se basa en ffmpeg (o sus bibliotecas), el corte no produce pérdidas.