Estoy intentando dividir un video más grande de acuerdo con un conjunto de rangos de fotogramas que introduzco en ffmpeg. Algunas preguntas con respecto a la opción -f segment -segment_frames y lo que se espera/produce. Esto es lo que estoy ejecutando:
ffmpeg -i full_movie.mov -f segment -segment_frames 123 -reset_timestamps 1 -c:a copy -map 0 "/Users/sjan/Desktop/%03d_test.mov"
ffmpeg -i full_movie.mov -f segment -segment_frames 124, 163 -reset_timestamps 1 -c:a copy -map 0 "/Users/sjan/Desktop/%03d_test.mov"
¿El primer comando ffmpeg pasará de 0 a 123 o de 1 a 123?
¿El ffmpeg con la opción -segment_frames comienza en 0 cuando se lee la película QT, considerando que esta película cuando se abre en QT comienza en 0? ¿Debo esperar alimentarlo con mis rangos de fotogramas para tener en cuenta esto restando 1 si comienza en 0? Veo resultados inconsistentes en los rangos adecuados y probablemente se deba a esto.
Respuesta1
Sí, segment_frames comienza desde 0. Como regla general, casi todos los contadores de índice en ffmpeg comienzan desde 0.
Entonces, -segment_times 124,163
le dice a ffmpeg que cree un segmento para cada cuadro 0-123, 124-162 y 163-END. Sin embargo, si estos fotogramas iniciales no son fotogramas clave, ffmpeg comenzará el segmento con el primer fotograma clave encontrado después de estos fotogramas.
Agregue -break_non_keyframes 1
para forzar la segmentación en los marcos especificados. Sin embargo, es posible que los fotogramas iniciales no se decodifiquen correctamente hasta que se encuentre un fotograma clave, si el segmento se reproduce de forma independiente. Dado que está codificando video, puede forzar fotogramas clave en los puntos del segmento agregando-force_key_frames expr:eq(n\,124)+eq(n\,163)