Skip to content

Video download support #202

@filthyrake

Description

@filthyrake

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions