Pestaña TACLINK
TACLINK es la primera pestaña del tile de streams. Muestra cada pista de vídeo peer-to-peer actualmente publicada en la sala de la operación, sin importar su origen — drones Android de mano, DJI docks, bodycams, cámaras de móvil, cualquier cosa con una pista de vídeo publicada.
Qué hay en la cuadrícula
Cada fila de status.video.streams[] se convierte en una tarjeta con:
- Miniatura en directo — el primer frame de la pista, actualizada con cada keyframe.
- Nombre del drone — resuelto mediante búsqueda de asset en Firebase a partir del drone ID del peer. Antes de completarse la resolución, se muestra el propio drone ID. Los peers DJI usan como fallback el SN del dock si no hay ningún drone vinculado.
- Badge de dispositivo — píldora de texto que muestra cuál es la fuente: p. ej. “Dock 3” para aeronaves de DJI dock, “Android” para handhelds, “Bodycam” para cámaras corporales.
- Badge DJI — sólo en peers DJI (
peerId.startsWith('dji-dock-')). Muestra “DJI Cloud API” en un color de acento distintivo para que los operadores sepan que al hacer clic se enrutará a través del transporte DJI Cloud. - Latencia de depuración (sólo en modo depuración) — milisegundos,
consultados cada 2 s desde
getStats(). - Botón Abrir — emite el evento streamSelected al resto de la consola.
Las pistas secundarias del drone están ocultas
La mayoría de drones producen más de una pista de vídeo — p. ej. una pista FPV
primaria + una lente zoom + una vista térmica. Sólo la pista primaria se
muestra en la cuadrícula TACLINK. Las pistas secundarias (aquellas cuyo
trackId empieza por VIDEO_DRONE_TRACK_ID + '_') son accesibles desde dentro
del tile de drone-stream una vez que has seleccionado la primaria de ese
drone. Motivo: el ciclado a nivel de cuadrícula debe representar “qué drone”,
no “qué lente”, para que los operadores no se saturen con miniaturas
duplicadas.
Detección de peers DJI
El tile usa isDjiPeer(peerId) — peerId.startsWith('dji-dock-') — para
detectar participantes DJI. Por dock entran dos formatos de identidad DJI en la
sala:
- Peer de telemetría — identidad
dji-dock-{sn}. Publica el canal de datos protobuf (estado del dock, estado de la aeronave, telemetría de flight-status). No transporta vídeo. - Peer de ingress de vídeo — identidad
dji-dock-{sn}-{videoSlug}. Publicado por el ingress WHIP (ya sea el autopilot o unstreams/startmanual). Transporta la pista H.264 real.
TACLINK muestra el peer de vídeo en la cuadrícula. Cuando se abre la tarjeta,
el tile resuelve el peer de telemetría (telemetryPeerIdForDjiPeer(peerId)
elimina el slug de vídeo) para que las lecturas de estado del dock sigan
funcionando — las búsquedas dockStatusByPeer[telemetryId] y
aircraftStatusByPeer[telemetryId] apuntan al peer correcto.
El chip del modelo de dock
Para peers DJI, la tarjeta muestra un chip “Dock 1 / Dock 2 / Dock 3” basado en el modelo reportado por el dock. Resolución:
- Buscar
dockStatusByPeer[telemetryId].dockModel. - Si está vacío, usar
aircraftStatusByPeer[telemetryId].dockModel. - Normalizar el string (p. ej.
dock_3→Dock 3).
Si ninguna fuente tiene aún un string de modelo (conexión nueva, telemetría todavía no publicada), el chip se renderiza como “DJI” sin número de versión.
Abrir un stream
Haz clic en cualquier tarjeta o en el botón Abrir explícito. El tile emite
streamSelected con:
{ peerId: 'dji-dock-1ZNDH1D0010098-1ZNDH1D0010098_39_0_7_normal_0', trackId: 'video-1', isDrone: true, dockSn: '1ZNDH1D0010098', mode: 'djiCloud'}…o para un handheld:
{ peerId: 'peer-abc-123', trackId: 'video-drone-main', isDrone: true, mode: 'taclink'}La consola padre escucha esto e intercambia la fuente enlazada del tile de drone-stream.
Cicla entre streams
Los botones chevron a nivel de cabecera ciclan el stream seleccionado hacia
delante/atrás. Indicador de posición N / total. Wrap-around en los extremos.
Filtros y ordenación
La cuadrícula TACLINK actualmente no tiene UI de filtros — cada stream activo se renderiza. Si tienes muchos streams simultáneos, la cuadrícula maneja hasta ~16 miniaturas con elegancia antes de que el rendimiento se degrade (todas las miniaturas están en directo, no son estáticas — realmente están decodificando). Para escenarios de muchos streams, abre streams específicos en el tile de drone-stream y deja la cuadrícula colapsada.
El orden es efectivamente “orden de publicación” — los streams aparecen en el orden en que se unieron a la sala. Los streams más nuevos aparecen al final.
Limitaciones conocidas
- Sin filtros de cuadrícula (por tipo, drone, equipo) en la build actual. Previsto.
- Sin mute por stream desde la cuadrícula — el mute ocurre dentro del tile de drone-stream.
- Sin pinning — no puedes fijar un stream específico para que se renderice siempre en la posición 0.
Relacionado
- Resumen de streams
- Drone stream tile — lo que se abre al hacer clic en una tarjeta.
- Reenvío de streams — envía un stream TACLINK a RTMP / RTSP.