BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 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