summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-10-14 13:36:14 -0700
committeryum <yum.food.vr@gmail.com>2025-10-28 17:19:35 -0700
commit8a852c013733d0170ac80a761e6b9414c02a2078 (patch)
tree11ac026ac5018c364e4b1861fb70c91398cd93dc /README.md
parentc3fa121f1a3ec74c5980bc8981e4836ca3a708f2 (diff)
switch to HLS, works better
Diffstat (limited to 'README.md')
-rw-r--r--README.md17
1 files changed, 11 insertions, 6 deletions
diff --git a/README.md b/README.md
index 9c21585..d84fb76 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,19 @@
-Shitty service to proxy data from OBS into a low-latency MPEG-DASH stream VRChat understands.
+Shitty service to proxy data from OBS into an HTTP Live Streaming (HLS) feed VRChat understands.
## Usage
1. Configure OBS with a custom server pointing at `rtmp://<your-domain>/live` and the pre-shared key stored in `STREAM_PSK`.
-2. Start the Python service (see `etc/systemd/system/obsproxy.service` for a sample unit).
-3. When the service starts it prints a session-specific manifest URL like `https://<your-domain>/dash/<session-hex>/manifest.mpd`; share that exact URL with your VRChat video player. Multiple viewers can consume the feed concurrently.
+2. Install runtime dependencies: `pip install -r opt/obsproxy/requirements.txt`.
+3. Start the Python service (see `etc/systemd/system/obsproxy.service` for a sample unit). The bundled entrypoint now runs under [Waitress](https://docs.pylonsproject.org/projects/waitress/en/stable/) so you get a production-grade WSGI server out of the box.
+4. When the service starts it prints a session-specific playlist URL like `https://<your-domain>/hls/<session-hex>/stream.m3u8`; share that exact URL with your VRChat video player. Multiple viewers can consume the feed concurrently.
Environmental knobs:
-- `STREAM_PSK`: required PSK for the single ingest client.
-- `DASH_SEGMENT_TIME` / `DASH_FRAGMENT_TIME`: tweak DASH segment/fragment durations to balance latency vs resilience.
+- `OBS_STREAM_KEY` / `STREAM_PSK`: required PSK for the single ingest client.
+- `HLS_SEGMENT_TIME`: length (in seconds) of the `.ts` segments emitted by FFmpeg (defaults to `2`).
+- `HLS_PLAYLIST_SIZE`: number of segments retained in the rolling playlist (defaults to `6`).
+- `HOST`: interface Waitress binds to (defaults to `0.0.0.0`).
+- `PORT`: TCP port Waitress listens on (defaults to `5000`).
+- `FFMPEG_LOGLEVEL`: override the log verbosity passed to FFmpeg (defaults to `info`).
-The server seeds a fresh 128-bit session ID on every restart and writes DASH fragments under `<STREAM_DIR>/live/<session-hex>`. The manifest and segments are only exposed under `/dash/<session-hex>/`, making it infeasible to guess a live session path.
+The server seeds a fresh 128-bit session ID on every restart and writes HLS artifacts under `<STREAM_DIR>/live/<session-hex>`. The playlist and segments are only exposed under `/hls/<session-hex>/`, making it infeasible to guess a live session path.