From 8c2fbfef74fa53f6767cf8f812150b95af54f134 Mon Sep 17 00:00:00 2001 From: kodi Date: Thu, 12 Mar 2026 10:37:06 +0100 Subject: [PATCH] feat: videoplayer toegevoegd --- project_docs/VIDEO_STREAMING_V1_DESIGN.md | 228 ++++++++++++++++++ .../__pycache__/routes_files.cpython-313.pyc | Bin 2852 -> 3605 bytes webui/backend/app/api/routes_files.py | 18 +- .../filesystem_adapter.cpython-313.pyc | Bin 6402 -> 7115 bytes webui/backend/app/fs/filesystem_adapter.py | 11 + .../file_ops_service.cpython-313.pyc | Bin 14153 -> 17860 bytes .../backend/app/services/file_ops_service.py | 95 ++++++++ .../test_api_video_golden.cpython-313.pyc | Bin 0 -> 9177 bytes .../test_ui_smoke_golden.cpython-313.pyc | Bin 9580 -> 10127 bytes .../tests/golden/test_api_video_golden.py | 120 +++++++++ .../tests/golden/test_ui_smoke_golden.py | 7 + webui/html/app.js | 98 +++++++- webui/html/index.html | 11 + webui/html/style.css | 8 + 14 files changed, 593 insertions(+), 3 deletions(-) create mode 100644 project_docs/VIDEO_STREAMING_V1_DESIGN.md create mode 100644 webui/backend/tests/golden/__pycache__/test_api_video_golden.cpython-313.pyc create mode 100644 webui/backend/tests/golden/test_api_video_golden.py diff --git a/project_docs/VIDEO_STREAMING_V1_DESIGN.md b/project_docs/VIDEO_STREAMING_V1_DESIGN.md new file mode 100644 index 0000000..b7c6469 --- /dev/null +++ b/project_docs/VIDEO_STREAMING_V1_DESIGN.md @@ -0,0 +1,228 @@ +# Video Streaming v1 + +## Doel + +Video Streaming v1 voegt een kleine, veilige manier toe om videobestanden direct vanuit de webui af te spelen in de browser, zonder eerst een volledige lokale kopie te maken. Dat past bij de bestaande dual-pane workflow: bestanden blijven centraal browsebaar, en video openen wordt een gerichte viewer-actie binnen dezelfde app. + +De kern is browser-native streaming via HTTP, niet het bouwen van een mediaserver. De app blijft een file manager met een beperkte preview-/playbackfunctie. + +## Scope + +Video Streaming v1 ondersteunt: + +- `mp4` +- `mkv` +- afspelen in een modal/popup video viewer +- browser-native: + - play/pause + - seek/scrub bar + - volume + - fullscreen + +Niet in scope voor v1: + +- transcoding +- codecconversie +- adaptive bitrate streaming +- playlists +- thumbnails / chapter support +- picture-in-picture specifieke UI-logica +- ingebedde subtitle-extractie uit containers + +Ondertiteling in v1 is alleen kansrijk als losse subtitle-bestanden later eenvoudig gekoppeld kunnen worden; dat is niet de basis van deze eerste slice. + +## Open-/Afspeelgedrag in de UI + +Aanbevolen v1-gedrag: + +- dubbelklik op videobestand = afspelen +- `Enter` op geselecteerd videobestand = afspelen +- gewone single click blijft selectie +- klik op directorynaam blijft directory openen + +Dit sluit aan op standaard file-manager gedrag: + +- selecteren en openen blijven gescheiden +- directory-open gedrag blijft intact +- video-open is alleen voor videobestanden + +Rechtermuisknop/contextmenu blijft buiten scope. Dat zou extra event-complexiteit toevoegen zonder noodzaak voor een eerste bruikbare versie. + +## Streamingmodel + +De aanbevolen techniek is een read-only HTTP endpoint met `Range` request ondersteuning. + +Waarom: + +- browsers kunnen dan direct streamen en seeken +- grote bestanden hoeven niet volledig in memory of eerst volledig gedownload te worden +- dit past goed bij `