Install rtp2httpd on OpenWrt via one-click script
uclient-fetch -q -O - https://raw.githubusercontent.com/stackia/rtp2httpd/main/scripts/install-openwrt.sh | shwebsite·Indexed 31 days ago
https://rtp2httpd.com/Documentation for rtp2httpd, a tool for converting multicast RTP streams to HTTP unicast streams. It features support for Fast Channel Change (FCC) for millisecond-level response, M3U/M3U8 playlist integration, a built-in Web player, and FFmpeg-based video snapshots. The guide covers installation on OpenWrt, configuration parameters, URL formats, and network troubleshooting for firewalls, IGMP, and Docker.
uclient-fetch -q -O - https://raw.githubusercontent.com/stackia/rtp2httpd/main/scripts/install-openwrt.sh | shrtp2httpd_<version>_<arch>.ipk), the LuCI Web interface (luci-app-rtp2httpd_<version>_all.ipk), and the Chinese language pack (luci-i18n-rtp2httpd-zh-cn_<version>_all.ipk).# Identify device architecture
cat /etc/openwrt_release | grep ARCH
# Install uploaded ipk packages
opkg install rtp2httpd_*.ipk luci-app-rtp2httpd_*.ipk luci-i18n-rtp2httpd-*.ipkchmod +x). By default, it reads configuration from /etc/rtp2httpd.conf, but this can be overridden using --config or disabled with --noconfig.# Check architecture
uname -m
# Download and make executable
wget https://github.com/stackia/rtp2httpd/releases/download/vX.Y.Z/rtp2httpd-X.Y.Z-x86_64
chmod +x rtp2httpd-X.Y.Z-x86_64
# Run with config file
./rtp2httpd-X.Y.Z-x86_64 --config /path/to/rtp2httpd.conf
# Run with CLI arguments only
./rtp2httpd-X.Y.Z-x86_64 --noconfig --verbose 2 --listen 5140 --maxclients 20feeds.conf.default. You can specify the main branch or a specific version tag.# In feeds.conf.default
src-git rtp2httpd https://github.com/stackia/rtp2httpd.git
# OR for specific version
src-git rtp2httpd https://github.com/stackia/rtp2httpd.git;v3.10.1# Update feeds
./scripts/feeds update rtp2httpd
./scripts/feeds install rtp2httpd
# In make menuconfig: LuCI -> Applications -> luci-app-rtp2httpd
# Compile specifically
make package/feeds/rtp2httpd/luci-app-rtp2httpd/compile -j1 V=scbuild-essential, cmake, pkg-config, curl, and Node.js LTS (for the Web UI).# Install dependencies (Ubuntu/Debian)
sudo apt-get install build-essential cmake pkg-config curl
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
corepack enable
# Build process
git clone https://github.com/stackia/rtp2httpd.git
cd rtp2httpd
# Build Web UI
pnpm install --frozen-lockfile
pnpm run web-ui:build
# Compile
cmake -B build -DCMAKE_BUILD_TYPE=Release -DENABLE_AGGRESSIVE_OPT=ON
cmake --build build -j$(getconf _NPROCESSORS_ONLN)
# Install
sudo cmake --install buildhttp://<server_address>:<port>/playlist.m3urtp2httpd reduces per-client overhead through shared parsing and batching:
buffer-pool-max-size * 1536 bytes.buffer_ref_t views. Each view tracks its own send offset and remaining length. The underlying memory is returned to the pool only after the last view is released.To use FCC, you must first identify the FCC server associated with your multicast source. There are two primary methods:
ChannelFCCIP and ChannelFCCPort fields in channel list requests, or use the Wireshark FCC protocol plugin to identify FCC protocol packets.SIGHUP signal to the supervisor process to trigger a log reopen after rotation. This requires the pid-file to be configured.# 1. Enable PID file in config
[global]
pid-file = /var/run/rtp2httpd.pid# 2. logrotate configuration example
/var/log/rtp2httpd/access.log {
daily
rotate 7
missingok
notifempty
compress
create 0644 root root
sharedscripts
postrotate
[ ! -s /var/run/rtp2httpd.pid ] || kill -HUP "$(cat /var/run/rtp2httpd.pid)" 2>/dev/null || true
endscript
}rtp2httpd supports hot-reloading of configuration without restarting the entire process. Signals must be sent to the supervisor process (the main PID).
[bind] addresses or workers count change, the supervisor will restart worker processes to apply changes. Other changes are forwarded to workers.# Hot-reload configuration (SIGHUP)
kill -HUP <supervisor_pid>
# Restart all worker processes (SIGUSR1)
kill -USR1 <supervisor_pid>