Capture on the iPhone app, upload on the web, or import from Frame.io
Film
Footage enters Surflink three ways: the iPhone app's camera, the web Upload page, and Frame.io import. Every clip becomes part of a video session (an analysis artifact) and, ideally, is linked to the training session it was filmed at, so watch data and the schedule line up with the video.
Film on the iPhone
- Open the Film tab in the iPhone app. The capture screen shows who's surfing now — athletes on in-progress training sessions and anyone whose Apple Watch is recording — and pre-selects the most likely one. Confirm or switch.
- Film the rides. Clips upload in the background as you shoot; a Live Activity on the lock screen tracks the upload. Each clip carries its true start time and frame rate.
- If the selected athlete's watch is recording, the clip is bound to that watch session at capture time, so footage and watch data pair with no extra step.
- You can also import from the camera roll: clips filmed on any camera are uploaded through the same path.
Clips land in the library analyzed. The iPhone's display rotation is probed at analyze time and restored at finalize, so clips play right-side-up with aligned overlays in every player.
Upload on the web — Quick session
The Upload button (/upload) opens the Quick session tab:
- Drop your clips into the drop zone (or click to pick files).
- Fill in Session Details — title, spot, date, description.
- Tap athlete names under Athletes in Session to tag who is in the footage (you can also assign tracked surfers later — see Analyze).
- Surflink reads each clip's recording date in the browser and, if you have an unlinked training session on that day, offers a one-tap link to it.
- Click Analyze N Clips. Clips upload two at a time and are sent for analysis; you are redirected to the session page, where processing continues.
Two controls appear only in specific situations: Compress before upload shows when your browser supports SharedArrayBuffer (it is not enabled in the default deployment, so uncompressed upload is the normal path), and Processing Mode (Cloud vs a local GPU server) is an operator control, not something a coach needs to touch.
Upload on the web — Batch upload
When a folder holds clips from many sessions, switch to the Batch upload tab (/upload?mode=batch, also linked from Training Sessions):
- Drag in your session folders — named like
2026-06-17_SouthPoint(YYYY-MM-DDplus an optional spot). Add more at any time; optionally drop a session-log CSV for athletes, times and link hints. - Review & link — clips are grouped by folder and each folder gets a suggested training session (by date and spot, preferring sessions with no footage yet). Nothing is auto-applied: Accept, pick a different session, or create a new one; Accept all suggestions confirms them at once. Athletes are prefilled from the CSV when names match your roster.
- Pick clips — every clip shows a tick box (on by default), a still frame grabbed in your browser, and click-to-preview. If a session already has footage, choose Add to it or Keep existing only; duplicate filenames are resolved per clip (keep / add / replace).
- Import — uploads run two at a time, analysis three at a time, with per-clip progress through uploading → analyzing → caching → complete.
Resume any time. Leave the tab or follow the batch notification and you land back on the live view in resume mode — already-uploaded clips keep going without re-uploading. Clips longer than the analysis limit are skipped with a note asking you to trim to the wave. You get one digest notification when the batch finishes instead of one per clip.
Import from Frame.io
On the Upload page, Import from Frame.io → Sign in with Adobe (first time only) → pick a workspace and project → browse folders and tap video files (only video/* files are selectable) → Import Clips (up to 10 per import). Surflink downloads the assets, creates the session, and sends each clip for analysis.
What happens next
Raw clips are stored in Surflink's storage; analysis produces a processed video, a stats file and overlay sidecars per clip. Follow it on the session page — see Analyze. Deleting a session or a clip also removes its storage objects, so nothing is orphaned.