recloudstream / recloudstream/cloudstream

Feature Request: Internal Proxy Server with Custom Headers for External Player Compatibility

Open
#1,786 0 comments 10 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Kotlin
Stars
10.7k
Forks
1.1k
Avg merge
1d 23h
Merged PRs (30d)
15

Description

Describe your suggested feature

Many Cloudstream extensions rely on custom HTTP headers—such as User-Agent, Referer, Authorization, and Cookie—to fetch and stream video content from protected sources. While the internal player supports direct header injection, it is currently limited:

  - Media3 ExoPlayer often fails to handle HLS streams correctly, leading to MediaCodec errors or undetected audio tracks.
  - As a result, many users are forced to use external players.
  - However, external players like VLC, MPV, and MX Player were able to play those files but wont get custom headers.

🧩 Problem Statement

  - Many sources require specific headers for access.
  - Internal player issues (e.g., with HLS or codecs) necessitate external playback.
  - External players do not reliably support header injection, especially for complex headers or cookies.
  - This causes many links to break, even though they are valid and playable with headers.
  - Extensions become harder to maintain, and users have a degraded experience.

🎯 Proposed Solution

  - Introduce a lightweight local HTTP proxy server within Cloudstream that:
  - Runs on a loopback address (e.g., http://127.0.0.1:12345).
  - Accepts a request with:
                  - a video or subtitle URL
                  - extension-defined headers
                  - Performs the request with headers applied.
                  - Streams the content back to the requesting external player.
Other details

No response

Acknowledgements
  • My suggestion is NOT about adding a new provider
  • I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points, so a contributor must first locate the external-player handoff and networking code. Done is not fully specified; the proposal describes a loopback proxy that applies extension-supplied headers and streams video or subtitle content successfully to external players.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.