BikeControl (SwiftControl)
Zwift Click과 Shimano 컨트롤러를 MyWhoosh와 Rouvy와 Zwift에서 쓴다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Measure jump height from video, frame by frame, in the browser.
Airtime turns a clip of a jump into flight time, contact time and jump height. Open a local video, step to the frame the feet leave the ground and the frame they touch down, and Airtime does the math (h = g·t²/8), including for slow-motion footage.
Airtime has two pages:
/ is a time tool for a clip you just took: mark an in point and an out point and read the time and frame count between them. It saves nothing./alpha is the full app described below: jump marking, analysis, saved sessions and trends. It's still in alpha.Privacy first: videos are loaded from your device into the browser using local object URLs. Airtime does not include an upload API or application backend.
Open the deployed Airtime site in a modern desktop or mobile browser, then choose Open video or drag a video onto the player.
Requirements:
git clone https://github.com/andresaclan/airtime.git
cd airtime
bun install
bun run dev -- --open
The development server starts at http://localhost:5173.
Airtime is built around an approach jump: three marks give contact time, flight time, jump height and RSI. A marking guide under the video shows which step you're on and lights up the button that marks it.
R to slow down) until you're near your last step before the jump, then pause., and . to the first frame your plant foot touches the ground and press Landing (L).T).L). The analysis panel shows the jump.⌘S / Ctrl+S to save. Open the same file later to pick up where you left off.Hide the guide with Hide; bring it back from the keyboard shortcuts dialog (?).
Press ? in the app to see these at any time.
| Shortcut | Action |
|---|---|
Space or K | Play or pause |
, / . | Step one frame backward / forward |
Shift + ← / → | Step one frame backward / forward |
R | Cycle playback speed 1× / ½× / ¼× |
↑ / ↓ | Volume up / down |
M | Mute or unmute |
T | Mark takeoff on this frame |
L | Mark landing on this frame |
[ / ] | Jump to previous / next mark |
Backspace / Delete | Delete the mark at the playhead |
⌘ / Ctrl + Z | Undo a mark change |
⌘ / Ctrl + Shift + Z | Redo a mark change |
A | Show or hide the analysis panel |
⌘ / Ctrl + S | Save the session to this browser |
← / →, Home / End | Scrub the timeline when it has focus |
Airtime accepts common video extensions such as MP4, M4V, MOV, WebM, MKV, AVI, WMV, FLV, MPEG, 3GP, and OGV. Actual playback depends on the codecs supported by the browser and operating system.
Source frame-rate parsing is currently implemented for ISO Base Media File Format containers, including MP4, M4V, and MOV. Other formats can still play when supported by the browser, and their frame rate is measured during playback. If that fails too, Airtime won't mark the video rather than guess its frame rate.
For best results:
requestVideoFrameCallback support for the most accurate runtime playback detection.Airtime is designed for local review:
If you use a hosted deployment, the hosting provider may still collect normal website and infrastructure metadata. See the deployment configuration and hosting provider policies for those details.
Install dependencies with Bun:
bun install
Useful commands:
bun run dev -- --open # Start the Vite development server
bun run check # Run Svelte and TypeScript diagnostics
bun run test # Run unit tests
bun run lint # Check formatting and ESLint rules
bun run format # Format the repository
bun run build # Create the static production build
bun run preview # Preview the production build locally
The project uses:
@sveltejs/adapter-staticBefore opening a pull request, run:
bun run check
bun run test
bun run lint
bun run build
These checks also run in GitHub Actions for pull requests targeting main.
src/
├── lib/
│ ├── components/ # Video viewer, controls, scrubber, analysis panel, dialogs
│ ├── session/ # Saved sessions (IndexedDB), fingerprinting, export/import
│ └── video/ # Frame-rate detection, timecode, marks and jump analysis
└── routes/
├── +page.svelte # The time tool: in and out points, nothing saved
├── alpha/+page.svelte # The full app and its local file lifecycle
└── layout.css # Application theme and shared styles
Airtime is built as a static SvelteKit site:
bun run build