Bitrail

Home/Docs/Quickstart

Quickstart

Pick a URL from the catalogue and pass it to whatever you already use. Nothing below needs a key.

Play it

ffplay, which is the quickest way to see whether a file is sane:

ffplay https://vid.thisaintu.sbs/media/timecode/timecode-720p.mp4

VLC, including the HLS ladder:

vlc https://vid.thisaintu.sbs/media/timecode/hls/master.m3u8

Inspect it

What the container actually claims, rather than what the filename suggests:

ffprobe -v error -show_streams -of json \
  https://vid.thisaintu.sbs/media/motion/motion-1080p.mp4

Confirm the moov atom is at the front, which is what makes progressive playback start before the download finishes:

curl -s -r 0-1023 https://vid.thisaintu.sbs/media/timecode/timecode-360p.mp4 \
  | xxd | head

Fetch it

A plain download with the transfer summary kept:

curl -O https://vid.thisaintu.sbs/media/sustained/sustained-1080p.mp4

A byte range, which is what a player issues when you seek:

curl -r 1048576-2097151 -o chunk.bin \
  https://vid.thisaintu.sbs/media/sustained/sustained-1080p.mp4

Verify what arrived:

curl -sO https://vid.thisaintu.sbs/media/SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing

In a browser

Progressive MP4 needs no library at all:

<video controls
       src="https://vid.thisaintu.sbs/media/timecode/timecode-720p.mp4"></video>

HLS plays natively in Safari and on iOS. Everywhere else it needs a player such as hls.js — see the HLS notes for why, and for the one attribute people usually get wrong.

In CI

Read the catalogue instead of hardcoding paths, so a new rendition does not require editing the job:

curl -s https://vid.thisaintu.sbs/api/streams.json \
  | jq -r '.streams[] | select(.id=="motion") | .progressive["1080p"]'

If a job needs to detect an outage rather than a content problem, request /health.txt. It is three bytes and is not cached, which keeps a health check from succeeding against a stale edge.