Summary
Allow users to download videos in original or transcoded formats.
Current State
Videos can only be streamed via HLS. There's no way to download the original source file or a specific quality variant.
Proposed Features
- Download Original: Download the source file as uploaded
- Download Transcoded: Download a specific quality (e.g., 1080p MP4)
- Optional: Generate downloadable MP4 from HLS segments
API Endpoints
GET /api/videos/{slug}/download/original
GET /api/videos/{slug}/download/{quality} # e.g., 1080p
Configuration Options
VLOG_DOWNLOADS_ENABLED: Enable/disable download feature
VLOG_DOWNLOADS_REQUIRE_AUTH: Require authentication for downloads
VLOG_DOWNLOADS_RATE_LIMIT: Rate limit download requests
VLOG_DOWNLOADS_ORIGINAL_ONLY: Only allow original downloads (no transcoded)
UI Changes
- Download button on video page
- Quality selector dropdown for transcoded downloads
- Download progress indication (for large files)
Implementation Considerations
- Streaming response for large files (don't load into memory)
- Consider generating MP4 from HLS segments on-demand or pre-generating
- Track download analytics (similar to view tracking)
- Consider bandwidth implications for self-hosted deployments
Security
- Optional authentication requirement
- Rate limiting to prevent abuse
- Consider signed URLs with expiration
Priority
High - common feature request for video platforms
Summary
Allow users to download videos in original or transcoded formats.
Current State
Videos can only be streamed via HLS. There's no way to download the original source file or a specific quality variant.
Proposed Features
API Endpoints
Configuration Options
VLOG_DOWNLOADS_ENABLED: Enable/disable download featureVLOG_DOWNLOADS_REQUIRE_AUTH: Require authentication for downloadsVLOG_DOWNLOADS_RATE_LIMIT: Rate limit download requestsVLOG_DOWNLOADS_ORIGINAL_ONLY: Only allow original downloads (no transcoded)UI Changes
Implementation Considerations
Security
Priority
High - common feature request for video platforms