Recorte rápido y preciso de piezas pequeñas de archivos mp4


2

Estoy buscando un método para recortar rápidamente alrededor de 2 fotogramas de los bordes de los archivos mp4. Usando ffmpeg puedo hacerlo con lo siguiente, sin embargo, me gustaría algo más rápido:

ffmpeg -y -i myVid.mp4 -ss 0.066 -t 0.066 -c:a copy result.mp4

Esto funciona porque estoy usando la opción de búsqueda relativamente lenta [poner ss después del nombre del archivo] y codificar. Tengo que codificar (según los desarrolladores de ffmpeg) porque estoy recortando menos del tiempo de GOP (mi VID GOP es de 33 cuadros).

Ahora quiero hacer esto más rápido. Parece horrible tener que codificar todo el video para este pequeño recorte.

Mi pregunta es si hay un buen método para hacerlo más rápido, y qué posibles advertencias existen con esta solución propuesta [que sé que no funciona al 100%]:

  1. Segmente el archivo en 3 partes, usando el segmento muxer, usando segmento_ veces para pedir un comienzo y final relativamente pequeños. Esto debería crear 3 segmentos.
  2. recorte usando -ss del primer segmento. recorte usando -t el último segmento (después de calcular su duración). ambos se hacen usando la codificación de cuadros de video (estoy usando un valor predeterminado, solo señalando -c: una copia).
  3. concatéalos de nuevo a través de demuxer concat, con copia de flujos.

intentando esto que en algunos jugadores, la parte media simplemente se omite. Así que supongo que algo está mal.


No estoy seguro de que comprenda cómo funcionan los códecs de video. No puedes cortar el primer fotograma y esperar que todo salga bien. El primer cuadro es I-frame y de todos modos tienes que decodificar y codificar GOP. En cuanto al resto del archivo mp4, tiene metadatos (átomo de moov) que también deben modificarse después de cambiar los datos de video, y generalmente se encuentra al final del archivo. Cambiar el contenedor probablemente puede resolver este problema.
ptQa

Gracias @ptQa. Podría tener que explicar un poco más. El paso 1 se realiza con el segmento muxer. en lo que respecta a mi comprensión, se asegura de segmentar en fotogramas clave. El paso n. ° 2 recorta y codifica los segmentos primero y final. No solo estoy cortando el primer cuadro. Esta nueva codificación también debería tener el primer y último segmento con fotogramas clave. Entonces, en lo que respecta a los fotogramas clave, no espero problemas. RE container, ¿alguna recomendación que pueda hacer a algo que permita este tipo de procedimiento? o cualquier recorte más rápido?
gal kahana

Bueno, no es la forma correcta, pero puede intentar usar el formato mpegts y luego usar "cat" para unir todos los segmentos excepto el primero y el último
ptQa
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.