Skip to content

Everything between your upload button and the play button

Video storage, encoding, delivery, playback and analytics work as one system behind one API.

Storage

Video storage that keeps each file and its versions together

Each video is stored with its renditions, thumbnails, captions and access rules, and you manage all of it through the same API.

  • Uploads that survive bad networks

    Chunked and resumable, sent straight from the client with a short-lived upload URL.

  • Automatic storage tiers

    Videos nobody has watched for 90 days move to cold storage and still play as usual.

  • Control who can watch

    Signed URLs, domain allowlists and expiring tokens keep private libraries private.

  • Choose your data region

    Pick where your originals are stored to meet data residency rules.

Media library

1284 files

1.84 / 5 TB used

  • Two people seated for a lit interview in a brick-walled studio48:12

    keynote-2026.mp4

    Hot tier
  • Morning fog drifting through a pine forest04:31

    course-intro.mov

    Hot tier
  • Aerial view of city towers and glowing streets at night02:05

    product-tour.mp4

    Hot tier
  • Drone shot of waves breaking on a rocky coastline11:40

    drone-coast.mov

    Cold tier
  • Green and purple aurora above a calm lake and mountains06:18

    aurora-timelapse.mp4

    Hot tier
  • Golden sand dunes with soft ridges in warm light09:02

    dunes-b-roll.mov

    Cold tier

Example data for illustration, not live measurements.

Streaming

Video streaming that starts fast and stays sharp

Viewers leave when the spinner appears. We serve the first segment from nearby, and the player adjusts quality before anyone notices.

  • Adaptive bitrate

    The player switches between 240p and 4K as the network changes, without pausing playback.

  • Multi-CDN edge

    Each viewer's traffic goes through whichever CDN is performing best for them at that moment.

  • Low-latency live

    LL-HLS for events, classes and auctions, where a few seconds of delay make a difference.

  • Protected content

    Widevine, FairPlay and PlayReady DRM, plus token authentication on every request.

HanoiTokyoSydneyMumbaiFrankfurtLondonVirginiaSão PauloSingapore

Bitrate ladder

  • 240p0.4 Mbps
  • 480p1.2 Mbps
  • 720p3 Mbps
  • 1080p6 Mbps
  • 1440p10 Mbps
  • 4K16 Mbps

Example data for illustration, not live measurements.

Analytics

See how playback went for your viewers

Track startup time, rebuffering, quality changes and drop-off for each video and region, so you catch problems before users report them.

0.3s0.4s0.5s0.6s0.7s00:0004:0008:0012:0016:0020:0024:00p50 · 0.41 s
Example chart of viewer startup time over a day
00:000.52 s
02:000.48 s
04:000.45 s
06:000.44 s
08:000.47 s
10:000.55 s
12:000.62 s
14:000.58 s
16:000.49 s
18:000.43 s
20:000.41 s
22:000.4 s
24:000.42 s

Example data for illustration, not live measurements.

From upload to playback in five steps

Each step runs on its own and reports its status, so you can always see where a video is.

  1. 1. Upload

    Resumable, chunked uploads from the browser, a phone or your server. If the connection drops, the upload continues from where it stopped.

  2. 2. Encode

    Video encoding builds an adaptive ladder from 240p to 4K in H.264, HEVC and AV1, tuned to the complexity of each scene.

  3. 3. Store

    The original and every rendition sit in replicated object storage. Older videos move to a cheaper tier automatically.

  4. 4. Deliver

    HLS and DASH segments are cached across several CDNs, so viewers in Hanoi and in Berlin both get a fast start.

  5. 5. Play

    The player SDK picks the right quality for each viewer's network and sends playback data to your dashboard.

Player SDK

A working video player in about ten lines of code

Install the package and pass a playback ID. You get adaptive streaming, captions and analytics in a player your designers can restyle.

npm install @we11cloud/player
Read the quick start
player.ts
import { createPlayer } from '@we11cloud/player'

const player = createPlayer('#video', {
  playbackId: 'pl_8Hq2xK',
  autoplay: 'muted',
  captions: ['en', 'vi'],
})

player.on('qualitychange', ({ height }) => {
  console.log(`Now playing ${height}p`)
})

Build your video product on We11cloud

Tell us what you are building. We will set up your beta workspace and help you ship your first stream.