Video recordings
The Video Recordings tile is the in-mission viewer for every piece of video and still media tied to the current operation. It merges two distinct sources into one sortable table:
- TACLINK stream recordings — anything recorded off a live peer (drone, bodycam, webcam, survcam) captured through the TACLINK media pipeline.
- DJI dock media — photos and videos fetched from every DJI dock
assigned to the operation (
dockSnsinput), via the dock media API.
Rows are merged, sorted newest-first, and paginated 10 / 25 / 50 per page.
Columns
| Column | What it shows |
|---|---|
| Type | Source badge with colour. DRONE (cyan), BODYCAM (purple), WEBCAM (green), SURVCAM (orange), DJI PHOTO / DJI VIDEO (amber). Each row also carries an icon — flight, videocam, linked_camera, photo_camera. |
| Operator | Stream rows: asset chip with the sender’s name, callsign, and colour. DJI rows: Dock XXXX (last 4 of the serial) in amber. |
| Recorded | Time (HH:mm:ss) plus a short date underneath (dd MMM). |
| Duration / Size | Stream videos: duration pill (1m 23s). DJI videos: file size — DJI does not report duration in the listing, so a dash replaces the time. DJI photos: file size (4.2 MB). |
| Status | Processing badge on stream rows — PROCESSING, REDACTED, FAILED. |
| Actions | Expand chevron. |
Filtering the list
The header has chip toggles: All, Drone, Webcam, Bodycam, Survcam, DJI Photo, DJI Video. The search magnifier on the right opens an inline text search that matches operator name, track id, DJI file name, and DJI dock serial.
Inline playback
Click a row to expand. The detail panel resolves the media URL lazily:
- Stream recordings prefer
recordingUrl, otherwise fall back to a presigned S3 URL fors3Bucket/s3Key. If the recording was redacted (status === 'redacted'withs3KeyRedactedpopulated), a REDACTED / ORIGINAL version toggle appears and REDACTED is selected by default so blurred faces and plates never leak accidentally. Click ORIGINAL to request the un-redacted copy (permissioned). - DJI media resolves via the dock service’s
getMediaUrlcall, which streams through the cloud.
Photos render inline in an <img>; videos render in an HTML
<video controls> with preload="metadata". A DOWNLOAD link opens the
resolved URL with the download attribute set.
Metadata on expand
Stream rows list: Started, Finished, Duration, Track ID,
Asset (drone recordings only), and Operator with callsign colour
dot. DJI rows list: File, Dock, Captured, Size, and — if
the file carries geolocation — Position as lat, lng @ altitude.
Rows tied to a flight task also show Task.
Deleting recordings
Only the commander of the operation sees a delete control in the
expanded panel — detected by comparing the signed-in UID against the
operation’s commanderUid. Deletion is two-click: the first click arms
the button (Confirm delete), a 3-second timer resets it, and the second
click calls deleteStreamRecording. That removes the Firestore entry and
schedules asynchronous garbage collection of the S3 object. There is
no soft-delete — once confirmed, the object is gone.
DJI media deletion is not supported from ARGUS. The dock is the system of record, so retention is managed from DJI Cloud. The delete button is suppressed on DJI rows.
Trim and clip export (aspirational)
Trimming a clip to a sub-range before download or report attachment is not yet implemented. Today, download the whole file and trim in your editor of choice. A trim UI is on the roadmap and will write a trimmed MP4 back to S3 as a new object without touching the original.