Streamplace VOD JAM
ATmosphereConf 2026 was recorded live on Streamplace. All talks are now available as VODs stored on our new beta Video on Demand service. But there's no frontend yet. That's where you come in.
In a world where Streamplace and the AT Protocol are successful, there won't be just one app or website for everyone's content. Solving video for everybody forever means: many apps, many websites, thousands of unique experiences for every situation. We want your take!
TLDR:
DURATION: Submissions will close in two weeks: Sun Apr 12, at 11:59 PDT.
REQUIREMENTS: Your app or website has to show the AtmosphereConf VODs, one way or another. Websites must be accessible on the public internet. Native apps must have clear instructions for building and installation. Within those parameters, get creative!
SUBMISSION:
PRIZE: All valid submissions will receive a VOD badge that may be equipped to show up next to your name in Streamplace chat from now until the end of time. Show off that you were here when it all started!
Streamplace VOD Beta Documentation
We wanted to get the VODs out as quickly as possible, but they're rough at the moment; the timestamps need to get sliced nicely. We'll be cleaning them up over the course of the jam — by the end we'll have working apps with clean video! Other things that will be added as we go:
We'll update this post as we get things polished.
The data
Every talk is a place.stream.video record in the did:plc:rbvrr34edl5ddpuwcubjiost repository (@stream.place). You can list them all on pds.ls.
Each record looks like this:
{
"$type": "place.stream.video",
"title": "How Streamplace Works: VODs",
"source": {
"ref": "bafkr4igmxmm3dei6tsgmwmfyuyyas74dlmminco5zfhad3lcinm3q3aa4e",
"size": 1448011796,
"$type": "place.stream.muxl.defs#archiveBlob",
"mimeType": "video/mp4"
},
"creator": "did:plc:jcahd7fl7h23c24ftxuhkhiw",
"duration": 2019548316666,
"createdAt": "2026-03-28T23:44:48Z",
"livestream": {
"cid": "bafyreifdrkhtt2gpeqxq26aqb64rfsxhc6eysfjksldkaw6os4ihck4za4",
"uri": "at://did:plc:jcahd7fl7h23c24ftxuhkhiw/place.stream.livestream/3mi5stzyxji2e"
}
}Key fields:
The livestream field links back to the original place.stream.livestream record if you want additional context about the stream.
Playing a video
We have a beta service set up for this at vod-beta.stream.place, and the data structures and XRPC endpoints may change as we move toward generally-available VOD. The primary XRPC that you'll need is place.stream.playback.getVideoPlaylist, which returns a standard HLS CMAF playlist.
Given a record URI like at://did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.video/3mi2ikg6gij26, you'll want to hit:
https://vod-beta.stream.place/xrpc/place.stream.playback.getVideoPlaylist?uri=at://did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.video/3mi2ikg6gij26
Clipping!! (New 2026-04-03)
We've successfully implemented a rough version of clipping! Two ways to access it:
https://vod-beta.stream.place/xrpc/place.stream.playback.getVideoPlaylist?uri=at://did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.video/3mi2ikg6gij26&start=23867000000000&end=25581000000000{
"$type": "place.stream.video",
"title": "How Streamplace Works: VODs",
"source": {
"end": 25581000000000,
"ref": "bafkr4iex2pp52cxwzrm6dfess3gk3gnfp4vwtg4de6akkezb2egt4ph33a",
"size": 14601435604,
"$type": "place.stream.muxl.defs#archiveBlob",
"start": 23867000000000,
"mimeType": "video/mp4"
},
"creator": "did:plc:jcahd7fl7h23c24ftxuhkhiw",
"duration": 1714000000000,
"createdAt": "2026-03-28T23:44:48Z",
"livestream": {
"cid": "bafyreifdrkhtt2gpeqxq26aqb64rfsxhc6eysfjksldkaw6os4ihck4za4",
"uri": "at://did:plc:jcahd7fl7h23c24ftxuhkhiw/place.stream.livestream/3mi5stzyxji2e"
}
}(Note that you can't yet use this mechanism to upload your own VODs; for now any records you create will need to reference the blobs in the @stream.place repo. VOD upload coming soon!)
What we're looking for
Good luck and happy vodding!
Discussion in the ATmosphere