@get-air/video owns Air's platform-neutral video controller. Playback is
explicit: applications select HTML directly or register a native adapter such
as Tauri. The standalone @get-air/transcode package supplies the GStreamer
fallback without coupling this browser package to a server runtime.
| Runtime | Backend | Playback path |
|---|---|---|
| Browser and Smart TV | html, webos, or vizio |
Platform <video> |
| Samsung Tizen | tizen |
AVPlay |
| Tauri | tauri from @get-air/video-tauri |
Native platform engine |
| Browser fallback | transcode from @get-air/transcode |
GStreamer HLS |
There is no automatic backend or client-side demux/decoder. Pass one backend ID or an explicit ordered fallback list:
import { createVideoClient } from '@get-air/video'
import { tauriVideoBackend } from '@get-air/video-tauri'
import { transcodeVideoBackend } from '@get-air/transcode/video'
const client = createVideoClient({
adapters: [
tauriVideoBackend(),
transcodeVideoBackend({ client: transcode }),
],
})
const player = await client.attach(video, {
source,
backend: ['html', 'tauri', 'transcode'],
})HTML must reach canplay and produce non-zero video dimensions. A failed
backend advances only through the fallback IDs the caller explicitly supplied.
npm install @get-air/videoimport { attachVideo } from '@get-air/video'
const player = await attachVideo(document.querySelector('video')!, {
source: 'https://media.example/movie.mp4',
backend: 'html',
autoplay: true,
})
await player.seek(90)
await player.load('https://media.example/next.mp4')| Entrypoint | Purpose |
|---|---|
@get-air/video |
Promise-based DOM and TV API |
@get-air/video/effect |
Effect services and typed errors |
@get-air/video/react |
React player and TV focus |
@get-air/video/canvas |
Framework-neutral canvas integration |
@get-air/video/solid |
SolidTV helpers |
@get-air/video/blits |
Blits helpers |
The Tauri adapter comes from
@get-air/video-tauri.
The transcode adapter comes from
@get-air/transcode.
API · Platforms · Versioning · Contributing
MIT OR Apache-2.0