Divida el video en segmentos de igual duración

Actualmente estoy usando ffmpeg para dividir videos en 10segmentos de segundos. He tomado dos enfoques, pero ninguno parece dar los resultados deseados. El enfoque número uno es usar el corte básico con las opciones -t y -ss para obtener los segmentos. Esto brinda segmentos casi precisos, pero tiene algunos problemas con los cuadros al final de algunos videos. La segunda opción es usar segmento: genial y rápido pero da segmentos de duración desigual. ¿Alguna idea de cómo obtener segmentos de la misma duración y sin problemas en los marcos? En otras palabras, si los reproduzco en una lista, debería reproducirse sin problemas.

manera general

ffmpeg – i input.mp4  -ss <start> -t <duration> -vcodec copy -acodec copy output%03d.mp4

Usando segmento

ffmpeg -i input.mp4 -c copy -map 0 -segment_time 8 -f segment output%03d.mp4
¿Encontraste alguna solución o motivo?

Respuestas (1)

Es muy probable que el problema con los marcos sea el resultado de usar h264 y no volver a codificar el video. h264 generalmente no tiene fotogramas individuales (a menos que esté codificado con un perfil interno), sino grupos de fotogramas (GOP), ffmpeg cortará en una posición de fotograma clave, es decir. al final o al principio de un GOP. O no en el caso de su primer acercamiento, lo que le genera problemas con los GOP afectados.

El problema debe resolverse volviendo a codificar (-vcodec libx264 -preset lento) o si eso también produce errores al transcodificar a un códec sin pérdidas como jpeg2000 ( -vcodec libopenjpeg), corte su video y luego codifique en h264 nuevamente (o cualquier otro códec que prefiera) .

¿Qué pasa con el uso del parámetro -g? (establecer el tamaño de GOP)
Eso no te ayudaría con el corte preciso del marco. El tema es que hay republicanos. si divide un video dentro de un GOP, destruirá fotogramas al final de su clip.
¿Qué quieres decir con "destruirás fotogramas al final de tu clip"?
Los marcos dentro de un GOP necesitan todos los demás marcos en el GOP, por lo que si corta un GOP, los marcos que quedan no tienen toda la información necesaria. Técnicamente, podría volver a codificar solo el último GOP, pero no creo que haya una herramienta que pueda hacer esto por usted.