Video Hosting
Host and stream videos from Hippius S3. The S3 API supports range requests, so browsers can seek through videos without downloading the entire file.
Pick the closest region for best performance
Swap s3.hippius.com for eu-central-1.hippius.com (Europe) or us-east-1.hippius.com (US) to use the regional cache closest to you. See the S3 API Reference for details.
How It Works
- Upload your video to Hippius S3
- Generate a presigned URL (or use a public bucket)
- Point an HTML5
<video>tag at the URL - The browser handles seeking and buffering via HTTP range requests
Upload a Video
aws s3 cp my-video.mp4 s3://my-videos/ \
--profile hippius --endpoint-url https://s3.hippius.com
Or with Python:
import os
from dotenv import load_dotenv
import boto3
from botocore.config import Config
load_dotenv()
s3 = boto3.client(
"s3",
endpoint_url="https://s3.hippius.com",
aws_access_key_id=os.environ["HIPPIUS_ACCESS_KEY"],
aws_secret_access_key=os.environ["HIPPIUS_SECRET_KEY"],
region_name="decentralized",
config=Config(signature_version="s3v4", s3={"addressing_style": "path"}),
)
s3.upload_file("my-video.mp4", "my-videos", "my-video.mp4")
print("Uploaded.")
Option A: Public Bucket
Make the bucket public and reference the video directly:
aws s3api put-bucket-acl --bucket my-videos --acl public-read \
--profile hippius --endpoint-url https://s3.hippius.com
<video controls width="720">
<source src="https://s3.hippius.com/my-videos/my-video.mp4" type="video/mp4">
</video>
Option B: Presigned URL
Keep the bucket private and generate a time-limited URL:
url = s3.generate_presigned_url(
"get_object",
Params={"Bucket": "my-videos", "Key": "my-video.mp4"},
ExpiresIn=3600,
)
<video controls width="720">
<source src="PRESIGNED_URL_HERE" type="video/mp4">
</video>
Complete HTML Player
player.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Video Player</title>
<style>
body { font-family: system-ui, sans-serif; max-width: 800px; margin: 2rem auto; }
video { width: 100%; border-radius: 8px; }
</style>
</head>
<body>
<h1>My Video</h1>
<video controls>
<source src="https://s3.hippius.com/my-videos/my-video.mp4" type="video/mp4">
</video>
</body>
</html>
tip
Live demo: https://s3.hippius.com/micky/index.html
Key Points
- Hippius S3 supports HTTP range requests out of the box — no configuration needed
- Large videos benefit from multipart upload (the SDK handles this automatically for files > 5MB)
- For private videos, generate presigned URLs server-side and inject them into your HTML
- Presigned URLs work in any player that supports standard
HTTPvideo (VLC, mobile browsers, etc.)