luci-app-ustreamer: complete rewrite

New features:
- Implement all supported ustreamer features
- Detailed UI text and description based on the program help
- Input validation for all parameters
- Stream preview with link to the stream page
- Dark theme colours for the stream preview
- Bulgarian translation (complete)

Bug fixes:
- Use of poll.add inside the render function results in a fork bomb
- Repeated use if setTimeout results in a fork bomb when the stream
is not available (old bug from luci-app-mjpg-streamer)

Merge:
- I tried to keep existing translations as much as possible
- All existing features, except [video_devs]

Removed:
- [video_devs] parameters, this or a similar feature will be implemented
once I fully test it, and choose an optimal strategy, with support
for multiple video input devices. In order to comlpete work on this
feature, I need programatic access to the configuration name for
each instance:

config ustreamer 'configuration_name'

Formatting:
- Format code for readability and to fit 80 column where possible

Notes:
The values for image control varies between camera models, therefore
the range is unrestricted.

Due to a race condition, two instances of the package got created.
I put a lot of effort and testing in every single detail, and the
other implementation got merged first. All features and translations
are merged here, except for [video_devs], which will be reworked
later.

Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
Closes #8324
Link: https://github.com/openwrt/luci/pull/8324/
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
This commit is contained in:
Georgi Valkov
2026-02-14 15:09:12 +02:00
committed by Paul Donald
parent 60c348801d
commit 1c35eec004
3 changed files with 629 additions and 344 deletions

View File

@@ -1,18 +1,16 @@
#
# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
# Copyright (C) 2008-2026 The LuCI Team <luci@lists.subsignal.org>
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=ustreamer service configuration module
LUCI_TITLE:=uStreamer service configuration module
LUCI_DEPENDS:=+luci-base +ustreamer
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
PROVIDES:=luci-app-mjpeg-streamer
PKG_MAINTAINER:=Georgi Valkov <gvalkov@gmail.com>
include ../../luci.mk

View File

@@ -1,6 +1,6 @@
{
"admin/services/ustreamer": {
"title": "ustreamer",
"title": "µStreamer",
"action": {
"type": "view",
"path": "ustreamer/ustreamer"