Tengo dos cámaras de video submarinas en red en un observatorio de aguas profundas que están atadas a tierra mediante un cable de fibra óptica y transmiten los datos de video a la costa. Me gustaría encontrar una forma de cortar o fusionar automáticamente estos archivos de video según su línea de tiempo. ¿Se puede incluso si se puede hacer? ¿Si es así, cómo?

Problema: Las cámaras subacuáticas escriben un archivo (.asf) cada vez que se interrumpe su conexión de red. Esto significa clips de duración aleatoria, lo que dificulta la catalogación de los datos. Lo ideal es que queramos archivos de una hora de duración que comiencen y terminen en las horas (por ejemplo, Camera1_00: 00-00: 59.asf, Camera1_01: 00-01: 59.asf, etc.). El nombre de archivo de cada video contiene la marca de tiempo del primer fotograma. No hay información de tiempo almacenada en los metadatos.

Pregunta: ¿Cómo puedo unir estos archivos de video y dividirlos en la hora?
Mi mejor conjetura hasta ahora es algo en este sentido (pero no tengo idea de cómo hacerlo):

  1. Extraer la marca de tiempo inicial del nombre del archivo
  2. Obtener la duración del archivo.
  3. Agregue la duración a la marca de tiempo inicial para obtener la hora UTC de inicio / parada
  4. [de alguna manera] únete a los videos hasta que haya cruzado el límite de una hora
  5. Dividir el video a la hora (¿supongo que la hora se computaría a partir de la duración y la hora de inicio?)
  6. Guarde el video de 1 hora cuando termine, y guárdelo para usarlo al comienzo de la siguiente hora
  7. Repetir

Tenga en cuenta que tenemos algunas brechas en los datos de video, y la solución ideal podría:

  • Escribir varios archivos durante una hora (por ejemplo, 03: 00-03: 15 y 03: 17-03: 59)
  • Escriba un archivo que tenga menos de una hora de duración, uniendo los huecos con unos pocos marcos negros

No tengo idea de cómo hacer nada de esto. ¿Hay algún software que pueda hacerlo por mí? ¿Tengo que escribir algún código para hacer esto? Si este último, ¿qué idioma es el mejor? ¿Qué pasa con ffmpeg?

Estoy abierto a mejores ideas. ¡Gracias de antemano por su ayuda!

Max B.
fuente