Files
packages/multimedia/ustreamer/files/ustreamer.hotplug
Georgi Valkov ab7fbfd12a ustreamer: add package 6.51
With mjpg-streamer pending removal [1], it would be nice if we add
a compatible replacement which is under active development.

ustreamer offers a better performance, especially when the
camera supports MJPEG encoding in hardware.

The package already includes OpenWRT support files ./pkg/openwrt
but they needed heavy editing, so it is more efficient to copy
the scripts and configuration, instead of using patches.

Notable changes:
While the init.d script can run in the background when no camera is
connected, it is more efficient to indicate no active instances.
A hotplug script is introduced to start and stop the service when
cameras are added or removed.

If the configured format or encoding are unsupported, a compatible
alternative is automatically selected, so I changed the default
configuration to use MJPEG encoding in hardware for better performance.

HACKS:
MAKE_FLAGS += WITH_SETPROCTITLE=0
is added to workaround the following linker error:
undefined reference to setproctitle_init

This symbol is defined in libbsd, however adding the build dependency
does not resolve the error, because -lbsd is added conditionally, only
when uname -s contains linux. This is unreliable and fails when
cross-compiling on a macOS host. An upstream fix is needed.

An alternative is to use
PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip=2 -xf $(DL_DIR)/$(PKG_SOURCE)
however this modifies the directory structure, so patches would need
path editing to maintain upstream compatibility.

TODO:
luci-app-mjpg-streamer which is also pending removal [2] is able to
open the HTTP stream from ustreamer. It would be nice to create
luci-app-ustreamer based on that.

[1] https://github.com/openwrt/packages/pull/28344
[2] https://github.com/openwrt/luci/pull/8221

Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
2026-02-07 12:25:12 +02:00

11 lines
202 B
Plaintext

case "$ACTION" in
add)
# start process
ls /dev/video* > /dev/null && /etc/init.d/ustreamer start
;;
remove)
# stop process
ls /dev/video* > /dev/null || /etc/init.d/ustreamer stop
;;
esac