For developer
Depends:
OptDepends:
Binary and source code
| Binary | Package | Comment |
|---|---|---|
live777 | liveion | Core, SFU Server |
liveman | liveman | Live777 Cluster Manager |
whipinto | livetwo | rtp, rtsp to whip |
whepfrom | livetwo | whep ro rtp, rtsp |
livenil | livenil | Only at developer, test, demo |
Release build
# Build Web UI
pnpm install
pnpm -r build
# Live777 Core (SFU Server)
cargo build --release
# Live777 Manager
cargo build --release --bin=liveman
# whipinto / whepfrom
cargo build --release --bin=whipinto
cargo build --release --bin=whepfromFeature flags
Live777 supports the following Cargo feature flags to customize the build:
| Feature | Package | Description |
|---|---|---|
webui | liveion | Enable Web UI (embedded assets) |
cascade | liveion | Enable cascade push/pull between servers |
recorder | liveion | Enable stream recording (H264/H265) |
source | liveion | Enable source pulling (RTSP, WHEP, SDP) |
source-sdp | liveion | Source pulling via SDP |
source-rtsp | liveion | Source pulling via RTSP |
source-whep | liveion | Source pulling via WHEP (static cascade-pull) |
target | liveion | Base shared by all target-* kinds (enables no kind on its own) |
target-whip | liveion | Target pushing via WHIP (static cascade-push) |
target-rtp | liveion | Target sending as plain RTP/UDP (multicast sender) |
target-rtsp | liveion | Target pushing via RTSP (ANNOUNCE/RECORD client) |
net4mqtt | liveion | Enable MQTT tunnel proxy |
Enable features at build time:
cargo build --release --features "cascade,recorder"The default build includes no optional features. Use --all-features to enable everything:
cargo build --release --all-featuresIf you need configuration, you can use
cp conf/live777.toml live777.toml
cp conf/liveman.toml liveman.tomlCustom log
Use RUST_LOG environment variable for set custom log level
For live777, default log set
RUST_LOG=live777=<cfg.log.level>,net4mqtt=<cfg.log.level>,http_log=<cfg.log.level>,webrtc=error",You can use this for override default log set
RUST_LOG=live777=error,net4mqtt=debug,webrtc=error",Run in developer mode
WebUI
pnpm install
# live777 debugger
pnpm --filter debugger dev
# live777 webui
pnpm --filter liveion dev
# liveman webui
pnpm --filter liveman devLive777
cargo run -- -c conf/live777.tomlLiveMan
cargo run --bin=liveman -- -c conf/liveman.tomlLiveNil
If you want quick up a cluster, you can use this up a cluster for develop environment
up one liveman and N live777
cargo run --bin=livenil -- -c conf/livenilEdge-cloud cascade demo
conf/livenil/edge-cloud/ is a pre-made topology: two edge nodes simulate cameras (one provisioned stream each, capped at one direct viewer via a liveman [[node_rules]] glob — pattern = "edge*", sub_max = 1) and one cloud node acts as the central SFU, all managed by one liveman:
just run-edge-cloudPublish a camera pinned to its edge node, then open any number of viewers on liveman (http://127.0.0.1:8890/whep/cam0). The first viewer of a stream is proxied to the edge node directly; when a second viewer arrives the edge is full, so liveman cascades the stream to the cloud node (pull mode: the cloud WHEP-pulls the stream from the edge), kicks the direct viewer (close_other_sub = true), and its player reconnects onto the cloud. The edge never sends more than one copy of the stream upstream, saving edge bandwidth. See the comments in conf/livenil/edge-cloud/ for the full flow.
whipinto && whepfrom
cargo run --bin=whipinto
cargo run --bin=whepfromSo. We support parameter command, You can use this:
cargo run --bin=whipinto -- -i input.sdp -w http://localhost:7777/whip/777 --command \
"ffmpeg -re -f lavfi -i testsrc=size=640x480:rate=30 -vcodec libvpx -f rtp 'rtp://127.0.0.1:5002' -sdp_file input.sdp"cargo run --bin=whepfrom -- -o output.sdp -w http://localhost:7777/whep/777 --command \
'ffplay -protocol_whitelist rtp,file,udp -i output.sdp'Use Web browser debug
Most browser build-in WebRTC debug tools
| Firefox | Chrome | Edge |
|---|---|---|
about:webrtc | chrome://webrtc-internals/ | edge://webrtc-internals/ |
chrome://webrtc-logs/ | edge://webrtc-logs/ |