Add YouTube playback and queue flow
This commit is contained in:
@@ -6,7 +6,7 @@ This project is a web video player for clients that can decode audio and still i
|
||||
|
||||
The UI intentionally has only two screens:
|
||||
|
||||
- URL entry screen with a stream URL input, a `Next` button, globally stored recently played URLs, and globally stored favorites.
|
||||
- URL entry screen with a stream URL input, a `Play` button, a `Queue` button, globally stored recently played URLs, and globally stored favorites.
|
||||
- Fullscreen player screen with JPEG frames drawn to a canvas and native audio playback through an `<audio>` element.
|
||||
- Playback controls are overlay controls toggled by tapping/clicking the frame area, similar to YouTube.
|
||||
- Do not reintroduce debug panels, frame counters, settings forms, explanatory marketing copy, or visible ffmpeg details into the normal UI.
|
||||
@@ -28,6 +28,7 @@ Main public endpoints:
|
||||
|
||||
- `POST /api/session`: validates the stream URL, stores recent URL, creates a short-lived playback session.
|
||||
- `GET /api/recent-urls`: returns global recent URL entries with `url`, redacted `displayUrl`, and `lastPlayedAt`.
|
||||
- `POST /api/recent-urls`: validates a stream URL and stores it globally without creating a playback session.
|
||||
- `GET /api/favorites`: returns global favorite entries with `title` and `url`.
|
||||
- `PUT /api/favorites`: replaces the global favorites list. Each favorite has a user-provided `title` and stream `url`.
|
||||
- `GET /audio/:sessionId`: serves MP3 audio to the browser audio element.
|
||||
@@ -172,6 +173,9 @@ Runtime:
|
||||
|
||||
- `PORT`: HTTP port, default `3000`.
|
||||
- `FFMPEG_PATH`: ffmpeg binary path, default `ffmpeg`.
|
||||
- `YT_DLP_PATH`: yt-dlp binary path, default `yt-dlp`.
|
||||
- `YT_DLP_FORMAT`: yt-dlp format selector for YouTube URLs, default `best[ext=mp4][vcodec!=none][acodec!=none]/best[vcodec!=none][acodec!=none]/best`.
|
||||
- `YT_DLP_TIMEOUT_MS`: yt-dlp resolution timeout, default `45000`.
|
||||
- `FFMPEG_LOG_LEVEL`: ffmpeg log level, default `warning`.
|
||||
- `FFMPEG_INPUT_SEEKABLE`: HTTP input seekable option, default `0`.
|
||||
- `FFMPEG_HTTP_RECONNECT`: enable ffmpeg HTTP reconnect options for HTTP inputs, default `1`.
|
||||
@@ -206,7 +210,7 @@ Session playback options are accepted by `POST /api/session` even though the UI
|
||||
|
||||
## Docker Notes
|
||||
|
||||
The Docker image installs ffmpeg and runs as non-root `node`.
|
||||
The Docker image installs ffmpeg and yt-dlp and runs as non-root `node`. yt-dlp is installed from the upstream master branch when the image is built.
|
||||
|
||||
Hardware acceleration is not required. Device passthrough may help only if server CPU decode is saturated. It does not fix audio/frame coupling issues; `relay` was built for that.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user