Solucionando la pérdida de frames en PySceneDetect

Al usar scenedetect con el comando split-video, es común notar que los últimos frames de cada escena desaparecen justo antes del corte. A primera vista, uno podría pensar que esto se debe a un error en la biblioteca misma.

Diagrama mostrando la pérdida de frames en un flujo de video con la herramienta PySceneDetect.
Visualización de cómo los frames finales desaparecen al usar split-video por defecto.

El problema real de la pérdida de frames

No obstante, el análisis muestra que PySceneDetect no elimina los fotogramas por sí mismo. El problema suele aparecer específicamente durante la exportación. Si utilizas FFmpeg en modo -c copy, sin recodificar, las cortes solo pueden realizarse en keyframes. Cuando el punto de corte detectado no coincide exactamente con un keyframe, los últimos frames del clip se desplazan o desaparecen para evitar solapamientos.

Para solucionar esto y garantizar una precisión máxima, la mejor práctica es evitar split-video. En su lugar, sigue estos dos pasos:

Diagrama del proceso recomendado que usa list-scenes para generar un CSV y cortar manualmente con FFmpeg.
El flujo de trabajo recomendado usando list-scenes para cortar videos sin errores.
Imagen comparando el modo -c copy limitado a keyframes frente al modo con recodificación precisa.
Comparativa visual entre el modo de copia y la recodificación en FFmpeg para cortar videos.
  1. Genera el listado de escenas usando el comando scenedetect -i "%origen%" list-scenes.
  2. Utiliza ese archivo CSV para cortar tu video con FFmpeg en una etapa posterior.

Al hacerlo, obtienes un control total sobre si el frame de corte pertenece al clip anterior o al siguiente, eliminando la incertidumbre del proceso automático.