AtmosphereConf VOD Bundle#
An at-run bundle providing video listing, metadata, and muxed HLS playlist generation for AtmosphereConf 2026 recordings.
Endpoints#
listVideos#
List all available VOD recordings.
curl http://localhost:3000/bundle/did:plc:xxx/atmosphereconf-vod/latest/listVideos
Response:
{
"videos": [
{
"uri": "at://did:plc:xxx/place.stream.video/abc123",
"title": "Opening Keynote",
"creator": "did:plc:yyy",
"duration": 3600000000000,
"createdAt": "2026-03-30T09:00:00Z"
}
]
}
getVideo#
Get metadata for a specific video.
curl -X POST http://localhost:3000/bundle/did:plc:xxx/atmosphereconf-vod/latest/getVideo \
-H "Content-Type: application/json" \
-d '{"uri": "at://did:plc:xxx/place.stream.video/abc123"}'
getVideoStreams#
Get available quality levels and audio tracks.
curl -X POST http://localhost:3000/bundle/did:plc:xxx/atmosphereconf-vod/latest/getVideoStreams \
-H "Content-Type: application/json" \
-d '{"uri": "at://did:plc:xxx/place.stream.video/abc123"}'
Response:
{
"uri": "at://...",
"streams": [
{
"quality": "1080p",
"width": 1920,
"height": 1080,
"bandwidth": 2996327,
"codecs": "avc1.42c01f,mp4a.40.2",
"frameRate": 59.498
}
],
"audioTracks": [
{ "name": "opus", "default": false },
{ "name": "mp4a.40.2", "default": true }
]
}
getPlaylist#
Generate a muxed HLS master playlist combining video and audio tracks.
curl -X POST http://localhost:3000/bundle/did:plc:xxx/atmosphereconf-vod/latest/getPlaylist \
-H "Content-Type: application/json" \
-d '{"uri": "at://did:plc:xxx/place.stream.video/abc123", "quality": "1080p"}'
Response (HLS m3u8):
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="opus",DEFAULT=NO,...
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="mp4a.40.2",DEFAULT=YES,...
#EXT-X-STREAM-INF:BANDWIDTH=2996327,CODECS="avc1.42c01f,mp4a.40.2",...
https://vod-beta.stream.place/...
Permissions#
{
"net": [
"vod-beta.stream.place",
"iameli.com",
"plc.directory"
]
}
Build & Deploy#
# Build
bun build apps/vod/src/index.ts --outfile=apps/vod/dist/bundle.js --target=browser
# Deploy
bun packages/at-run/cli/src/index.ts deploy apps/vod/dist/bundle.js
Usage with Frontend#
Point your hls.js player at the getPlaylist endpoint:
const hls = new Hls()
const playlistUrl = `${RUNNER_URL}/bundle/${DID}/atmosphereconf-vod/latest/getPlaylist?uri=${encodeURIComponent(videoUri)}&quality=1080p`
hls.loadSource(playlistUrl)
hls.attachMedia(videoElement)