Я использую live555 Media Server. Его надо собирать самому из исходников, стандартно его нет в репозитории
Добавил:
1. Мои конфигурационные файлы для RPi 4.
1.1. Koманда создания makefiles live server ./genMakefiles linux-rPi
pi@SmartHome:~/live555/live $ cat config.linux-rPI
COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_OPENSSL=1
C = c
C_COMPILER = cc
C_FLAGS = $(COMPILE_OPTS) $(CPPFLAGS) $(CFLAGS) -mcpu=cortex-a72+crypto -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard
CPP = cpp
CPLUSPLUS_COMPILER = c++
CPLUSPLUS_FLAGS = $(COMPILE_OPTS) -Wall -DBSD=1 $(CPPFLAGS) $(CXXFLAGS) -mcpu=cortex-a72+crypto -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard
OBJ = o
LINK = c++ -o
LINK_OPTS = -L. $(LDFLAGS)
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIBRARY_LINK = ar cr
LIBRARY_LINK_OPTS =
LIB_SUFFIX = a
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =
1.2. Koманда создания proxy makefiles ./genMakefiles rPi
pi@SmartHome:~/live555/live555ProxyServerEx $ cat config.rPI
LIBRARIES_DIR = ../live/
INCLUDES_PREFIX = ../live/
INCLUDES = -I$(INCLUDES_PREFIX)/UsageEnvironment/include -I$(INCLUDES_PREFIX)/groupsock/include -I$(INCLUDES_PREFIX)/liveMedia/include -I$(INCLUDES_PREFIX)/BasicUsageEnvironment/include
COMPILE_OPTS = $(INCLUDES) -fPIC -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_OPENSSL=1
C = c
C_COMPILER = cc
C_FLAGS = $(COMPILE_OPTS) -mcpu=cortex-a72+crypto -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard
CPP = cpp
CPLUSPLUS_COMPILER = c++
CPLUSPLUS_FLAGS = $(COMPILE_OPTS) -Wall -Wno-deprecated -DBSD=1 -mcpu=cortex-a72+crypto -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard
OBJ = o
LINK = c++ -o
LINK_OPTS = -L.
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIB_SUFFIX = a
EXE =
DESTDIR =
2. Конфигурационный файл прокси. У Прокси много возможностей, но я использую только базовые
pi@SmartHome:/home $ cat /usr/local/etc/live555Proxy/live555Proxy.CameraProxy.cfg
[general]
verbosity = 0
stream_rtp_over_tcp = 0
server_tunneling_over_http = 0
rtsp_server_port = 60000
[auth]
username = YourUserNameForMonitor
password = YourPasswordForMonitor
[streams]
url = rtsp://ReolinkUser
assword@Camera-Gate:554/h264Preview_01_sub
name = cam/realmonitor?channel=1&subtype=0&proto=Dahua3
# ^ channel number for monitor configuration channel 1
url = rtsp://ReolinkUser
assword@Camera-Gate:554/h264Preview_01_main
name = Camera-Gate/Main
url = rtsp://ReolinkUser
assword@Camera-Garden:554/h264Preview_01_sub
name = cam/realmonitor?channel=2&subtype=0&proto=Dahua3
# ^ channel number for monitor configuration channel 2
#url = rtsp://ReolinkUser
assword@Camera-Garden:554/h264Preview_01_main
#name = Camera-Garden/Main
url = rtsp://ReolinkUser
assword@Camera-Entrance:554/h264Preview_01_sub
name = cam/realmonitor?channel=3&subtype=0&proto=Dahua3
# ^ channel number for monitor configuration channel 3
url = rtsp://ReolinkUser
assword@Camera-Entrance:554/h264Preview_01_main
name = Camera-Entrance/Main
3. Кофигурационний файл для systemd.
systemctl enable CameraProxy
systemctl start CameraProxy
systemctl status CameraProxy
● CameraProxy.service - Outside cameras RSTP Proxy
Loaded: loaded (/etc/systemd/system/CameraProxy.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-06-20 11:38:24 CEST; 1 months 0 days ago
Main PID: 854 (live555ProxySer)
Tasks: 1 (limit: 4915)
CPU: 7h 16min 34.479s
CGroup: /system.slice/CameraProxy.service
└─854 /usr/local/bin/live555ProxyServerEx -c /usr/local/etc/live555Proxy/live555Proxy.CameraProxy.cfg
cat /etc/systemd/system/CameraProxy.service
[Unit]
Description=Outside cameras RSTP Proxy
After=multi-user.target network-online.target
[Service]
Type=idle
User=cameraproxy
# Security advise is to create a separate user with nologin and run the proxy under its credentials
ExecStart=/usr/local/bin/live555ProxyServerEx -c /usr/local/etc/live555Proxy/live555Proxy.CameraProxy.cfg
Restart=always
RestartSec=60
WorkingDirectory=/home/cameraproxy
StandardOutput=inherit
StandardError=inherit
[Install]
WantedBy=multi-user.target
4. Фото конфигурации монитора