Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LiveProxy Link Builder

A static, browser-only tool for turning video URLs into LiveProxy playback links.

Build

npm install
npm run build
npm test

Upload the contents of public/ to a web server, including assets/. Relative asset paths support hosting in a subdirectory. You can also open public/index.html directly in a modern browser. Node.js is only needed for development; no PHP or backend is required.

After editing src/, run npm run build to refresh the minified assets used by the page. For CSS-only changes, use npm run build:css:min. Changes to public/index.html take effect directly without a build.

Use

  1. Enter a complete HTTP(S) video or stream URL.
  2. Set the LiveProxy host and port (default 127.0.0.1:53422). HTTPS is selected by default as specified. Select HTTP for a standard local LiveProxy installation; HTTPS requires TLS at the destination.
  3. Set Streamlink command to the executable name or path on your server (default streamlink), for example /home/pi/liveproxy/venv/bin/streamlink. Enter the path without quotes; paths containing spaces are quoted automatically. This field accepts the executable only; use the checkboxes for options.
  4. Choose a stream quality and any optional Streamlink settings. Enable a checkbox to reveal its value inputs; expand More Streamlink settings for language, buffering, headers, and server paths.
  5. Copy the generated link into a network media player, or download an M3U playlist.

The command preview and encoded playback link update as you edit, including when you change the Streamlink executable. Generate link validates the fields and focuses the result. Reset all restores defaults, including streamlink for the executable. Clipboard fallback supports ordinary HTTP hosting; manual selection is offered if copying is blocked. Inputs are not saved or sent anywhere by this app. Opening a generated link or playing a playlist connects to your chosen server.

LiveProxy and Streamlink must be installed and available on the destination server. 127.0.0.1 refers to the device opening the playback link; use a reachable server address for playback on other devices. Stream and option support depend on that server's Streamlink version. Quality choices include Best available, 4K (2160p), 1080p, 720p, 480p, Lowest available, and Audio only. Best available has no 1080p limit and can select 4K when available. Resolution choices fall back to best; the 4K choice requests 2160p,best. Audio-only quality requires an audio_only stream.

Optional settings

All settings are disabled initially. Only enabled settings are included in the generated command. Values below are the builder's starting values when enabled, not necessarily Streamlink's own defaults.

Setting Values and behavior
Start from the beginning Starts at the earliest available point in an HLS live stream.
Low latency Enables Twitch low-latency streaming.
Wait for a stream Editable retry interval (initially 5 seconds) and maximum retries (10). A maximum of 0 allows unlimited retries when the interval is positive.
Parallel downloads Editable download-thread count, from 1-10 (initially 4).
Include subtitles Muxes available subtitles when supported.
Use IPv4 Resolves stream server addresses using IPv4 only.
Preferred language Language dropdown for audio/subtitles where supported (initially German, de_DE).
Retry opening a stream Number of attempts to open a discovered stream (initially 3).
Stream timeout Seconds to wait for more stream data (initially 120).
Buffer size Choice of 16, 32, 64, or 128 MiB (initially 32 MiB).
HLS live delay Segments behind live to start (initially 3). Lower values may increase buffering.
Custom HTTP headers Add or remove name/value pairs, such as Referer or User-Agent. At least one header is required when enabled.
FFmpeg executable Required executable path on the destination server when enabled.
Server configuration file Required Streamlink configuration-file path on the destination server when enabled.
Stream types Adds --stream-types with an editable type or ordered comma-separated list (initially dash). Use dash for DASH only, or dash,hls,http,* to include other types.

Paths are entered without quotes and quoted automatically when needed. Reset all clears custom headers and paths, restores initial values, and disables every option.

To request a 4K YouTube stream using DASH, choose 4K (2160p), expand More Streamlink settings, and enable Stream types, leaving its value at dash. The command includes --stream-types dash and 2160p,best; quality fallback stays within the allowed stream types. Availability depends on the source and the server's Streamlink installation.

Implementation

  • src/app.jsx: interface behavior, clipboard and playlist download; vanilla JavaScript without a runtime framework.
  • src/builder.mjs: option definitions and field metadata, validation, command quoting, UTF-8 Base64 and link generation.
  • src/styles.css: responsive styles with local system fonts.
  • public/index.html: static page; public/assets/ contains minified esbuild output and the favicon.
  • tests/builder.test.mjs: Node tests for URL generation and validation.

The complete command, including your chosen Streamlink executable, is encoded as UTF-8 using URL-safe Base64 with = padding retained and placed in /base64/<payload>/. This matches LiveProxy's URL-safe decoder and keeps the payload in a single URL path segment. Standard Base64 can contain /, which would truncate the payload in LiveProxy and cause an “Incorrect padding” error. The checkboxes use options from the Streamlink CLI reference.

Tests verify command construction and encoding, not playback against a running LiveProxy server.

Command builder API

buildLink accepts enabled option IDs in options and field values in optionValues. Values alone do not enable a setting. Omitted values use the field's initial value; enabled headers and server paths require explicit values. OPTIONS and ADVANCED_OPTIONS export the available IDs and field definitions.

import { buildLink } from './src/builder.mjs';

const { command, base64, link } = buildLink({
  video: 'https://example.com/live',
  executable: '/home/pi/liveproxy/venv/bin/streamlink',
  options: ['retry', 'threads', 'locale', 'headers', 'config'],
  optionValues: {
    retryStreams: 5,
    retryMax: 10,
    segmentThreads: 4,
    locale: 'de_AT',
    httpHeaders: [{ name: 'User-Agent', value: 'My Player' }],
    configPath: '/home/pi/streamlink.conf',
  },
});

About

A static, browser-only tool for turning video URLs into LiveProxy playback links.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages