Cortando los videos basados ​​en la hora de inicio y finalización usando ffmpeg

Traté de cortar el video usando la hora de inicio y finalización del video usando el siguiente comando

ffmpeg -ss 00:00:03 -t 00:00:08 -i movie.mp4 -acodec copy -vcodec copy -async 1 cut.mp4 

Al usar el comando anterior, quiero cortar el video de 00:00:03 a 00:00:08 . Pero no está cortando el video entre esos momentos en lugar de cortar el video con los primeros 11 segundos. ¿Alguien puede ayudarme a resolver esto?

Editar 1:

Intenté cortar usando el siguiente comando sugerido por mark4o

 ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4 

Pero se mostró el siguiente error.

el codificador ‘aac’ es experimental, pero los códecs experimentales no están habilitados

así que agregué el -strict -2 en el comando, es decir,

 ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 -strict -2 cut.mp4 

Ahora está funcionando bien.

Probablemente no tenga un fotogtwig clave en la marca de 3 segundos. Debido a que los fotogtwigs no codificados codifican las diferencias de otros fotogtwigs, requieren todos los datos que comienzan con el fotogtwig clave anterior.

Con el contenedor mp4 es posible cortar en un fotogtwig no clave sin recodificar usando una lista de edición. En otras palabras, si el fotogtwig clave más cercano a 3s está en 0s, copiará el video comenzando en 0 y usará una lista de edición para decirle al jugador que comience a jugar 3 segundos.

Si está utilizando el último ffmpeg de git master, lo hará utilizando una lista de edición cuando se invoque con el comando que proporcionó. Si esto no funciona para usted, probablemente esté usando una versión anterior de ffmpeg o su reproductor no admita listas de edición. Algunos jugadores ignorarán la lista de edición y siempre reproducirán todos los medios en el archivo de principio a fin.

Si desea cortar con precisión comenzando en un fotogtwig no clave y desea que se reproduzca comenzando en el punto deseado en un reproductor que no admite listas de edición, o si desea asegurarse de que la parte de corte no está realmente en el archivo de salida (por ejemplo si contiene información confidencial), puede hacerlo codificando de nuevo para que haya un fotogtwig clave exactamente a la hora de inicio deseada. La re-encoding es la predeterminada si no especificas la copy . Por ejemplo:

 ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4 

Al volver a codificar, es posible que también desee incluir opciones adicionales relacionadas con la calidad o un codificador AAC particular. Para más detalles, consulte la Guía de encoding x264 de ffmpeg para video y la Guía de encoding AAC para audio.

Además, la opción -t especifica una duración, no una hora de finalización. El comando anterior codificará 8s de video comenzando en 3s. Para comenzar en 3s y terminar a los 8s use -t 5 . Si está utilizando una versión actual de ffmpeg, también puede reemplazar -t con -to en el comando anterior para finalizar a la hora especificada.

Intenta usar esto. Es el camino más rápido y mejor que he descubierto:

  ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c copy output.mp4 

¡Este comando recorta tu video en segundos!

Lo he explicado en mi blog aquí :

-i: Esto especifica el archivo de entrada. En ese caso, es (input.mp4).
-ss: Usado con -i, esto busca en el archivo de entrada (input.mp4) posicionar.
00:01:00: Este es el momento en que comenzará tu video recortado.
-to: Esto especifica la duración desde el inicio (00:01:40) hasta el final (00:02:12).
00:02:00: Este es el momento en que su video recortado terminará.
-c copia: esta es una opción para recortar a través de la copia de secuencia. (Nota: muy rápido)

El formato de tiempo es: hh: mm: ss

Tenga en cuenta que la respuesta actual altamente votada es obsoleta y el recorte sería extremadamente lento. Para más información, mira este artículo oficial de ffmpeg.

 ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 -c copy cut.mp4 

Use -c copy para make in al instante. En ese caso, ffmpeg no volverá a codificar el video, solo cortará según el tamaño.

  ffmpeg -i movie.mp4 -vf trim=3:8 cut.mp4 

Suelta todo excepto del segundo 3 al segundo 8.