Vídeo · Recuperar un clip

Extrae un clip bajo demanda. Envíalo a tu nube.

Siete operaciones de servicio cubren el ciclo de vida de los medios almacenados. Extracción de clip por copia de flujo — sin decodificación, sin recodificación, ~1–2 s de desplazamiento GOP por borde. Carga SFTP con anclaje de clave de host, protección contra traversal de ruta y mp4-reduce.

Cómo funciona

Siete operaciones de servicio. Una ruta de carga.

GetSegments consulta el índice de segmentos por objetivo y rango temporal; ExtractClip realiza la extracción solo mux por copia de flujo con ~1–2 s de desplazamiento GOP; Upload envía vía SFTP con anclaje de clave de host; mp4-reduce elimina los átomos free/skip y corrige los desplazamientos stco. Snapshot (keyframe a JPEG ~50 ms) y Protect/Unprotect se muestran como rutas laterales en línea discontinua.

flowchart LR
  G[GetSegments<br/>por objetivo + rango temporal] --> X[ExtractClip<br/>solo mux · ~1–2 s desplazamiento GOP]
  X --> U[Upload<br/>SFTP · clave de host anclada]
  U --> M[mp4-reduce<br/>eliminar free/skip · corregir stco]
  S[Snapshot<br/>keyframe → JPEG ~50 ms] -.-> X
  P[Protect / Unprotect] -.-> G
GetSegments → ExtractClip (solo mux) → Upload (SFTP) → mp4-reduce — Snapshot y Protect/Unprotect como rutas laterales
Superficie service-call mos-dashcam — recuperación de clip y ciclo de vida de medios
Operación Entrada Salida
GetSegments objetivo, start_ts, end_ts lista de SegmentRow
ExtractClip segment_id, start_offset, end_offset ruta del clip en disco
Snapshot segment_id, keyframe_offset ruta JPEG
Protect segment_id — (idempotente)
Unprotect segment_id — (idempotente)
Remove segment_id — (elimina archivo + fila)
Upload rutas, destination_uri, opciones flujo de estado de carga
7 operaciones de servicio GetSegments · ExtractClip · Snapshot · Protect · Unprotect · Remove · Upload
~50 ms keyframe→JPEG qtic2vdec · jpegenc · sin decodificación completa
~1–2 s desplazamiento GOP por borde copia de flujo; sin decodificación; sin recodificación
0 recodificación ExtractClip solo mux · mp4-reduce solo corrección de átomos

Architecture

Lo que no escribes — la infraestructura entregada por MOS4.

service mos-dashcam

Índice de segmentos (SQLite, en memoria con snapshots), controlador de retención y las siete operaciones de servicio — GetSegments, ExtractClip, Snapshot, Protect, Unprotect, Remove, Upload. Nivel gamma: listo para producción en rutas de grabación internas.

pipeline splitmuxsrc ! qtmux ! filesink

Pipeline GStreamer solo mux para ExtractClip — splitmuxsrc lee el segmento fuente; qtmux remuxea el flujo; filesink escribe el clip de salida. Sin decodificación, sin recodificación, sin ida y vuelta de pixel.

transporte russh-sftp ring backend

Transporte de carga SFTP — russh-sftp con un backend ring, anclaje de clave de host, protección contra traversal de ruta y sustitución de URL por token de contexto. La integración proporciona una URI; el micro service gestiona el handshake SSH y la transferencia de flujo.

post-carga mp4-reduce

Elimina los átomos free y skip del contenedor MP4, luego corrige las tablas de desplazamiento de chunk stco / co64 para mantener el archivo válido. Reduce la carga de subida sin recodificar un solo frame.

service dashcam-controller BETA

Integración de dashcam externa de marca blanca vía Wi-Fi HTTP y notificación TCP. Cola de solicitudes pendientes con TTL que gestiona los huecos de conectividad. Distinto de mos-dashcam — este micro service controla una unidad de hardware externa, no el pipeline de grabación interno en el dispositivo MOS4.

mos-dashcam vs dashcam-controller

mos-dashcam (gamma) es el grabador interno: corre en el dispositivo MOS4, posee el FIFO de segmentos y expone las siete operaciones de servicio documentadas arriba. dashcam-controller (BETA) controla una unidad dashcam externa de marca blanca vía Wi-Fi HTTP y notificación TCP — hardware separado, ciclo de vida separado, mismo vehículo. Ambos pueden funcionar simultáneamente; no comparten estado.

Preguntas frecuentes

Preguntas frecuentes

  • ¿Puedo solicitar un clip en una ventana temporal específica?

    Sí — GetSegments(objetivo, start_ts, end_ts) devuelve los segmentos coincidentes; ExtractClip(segment_id, start_offset, end_offset) escribe un MP4 copiado por flujo con ~1–2 s de desplazamiento GOP por borde.

  • ¿Qué velocidad tiene una miniatura?

    ~50 ms keyframe→JPEG en QCS6490 vía qtic2vdec y jpegenc — sin decodificación completa, sin recodificación.

  • ¿Cómo sobrevive la carga a los cortes de celular?

    El micro service expone el estado de carga vía service-call; la lógica de reintento en la capa de integración gestiona los cortes de celular. mp4-reduce reduce la carga antes de subir — sin recodificación, solo eliminación de átomos free/skip y corrección de desplazamientos stco.

  • ¿Cuál es la diferencia entre mos-dashcam y dashcam-controller?

    mos-dashcam (gamma) es el grabador interno que corre en el dispositivo MOS4 — posee el índice de segmentos, el controlador de retención y las siete operaciones de servicio. dashcam-controller (BETA) controla hardware dashcam externo de marca blanca vía Wi-Fi HTTP y notificación TCP. Ambos pueden coexistir en el mismo vehículo.

  • ¿Y si necesito grabación interna Y una dashcam externa conectada?

    Se componen. La grabación interna usa mos-dashcam; la dashcam externa es controlada por dashcam-controller (BETA) — la cola de solicitudes pendientes con TTL gestiona los huecos de conectividad entre ambos.

Trae tus cámaras y tu caso de uso.

MIPI / GMSL / RTSP / WebRTC / SRT, grabación interna, dashcam externa de marca blanca, despertar por evento — elige tu función y esbozaremos el pipeline.