4.8 KiB
SRS Smoke Test Profile
Status
OPTIONAL / NON-BLOCKING
Use these checks when you want to verify RTMP interoperability or a real cvmmap-to-SRS forward path. They are not part of the mandatory acceptance matrix.
Covered Paths
- Synthetic RTMP smoke using
rtmp_output_tester - Live cvmmap ingest -> FFmpeg encoder -> RTMP -> SRS HTTP-FLV forward
- Live cvmmap ingest -> FFmpeg encoder -> RTMP -> SRS WHEP/WebRTC playback
Prerequisites
- Project built under
./build - Local SRS checkout at
~/Code/srs, or overrideSRS_ROOT ffprobe,ffmpeg, andcurlavailable inPATH- For the live test, a running cvmmap producer. Pass the URI explicitly.
Reproducible Test: Synthetic RTMP Matrix
cmake -B build -S .
cmake --build build
./scripts/rtmp_srs_smoke.sh
Useful overrides:
ENCODER_DEVICE=nvidia ./scripts/rtmp_srs_smoke.sh
SRS_ROOT=~/Code/srs ./scripts/rtmp_srs_smoke.sh
What it verifies:
libavformatRTMP output withh264ffmpeg_processRTMP output withh264libavformatRTMP output withh265ffmpeg_processRTMP output withh265- pullback from SRS HTTP-FLV with
ffprobe
Reproducible Test: Live cvmmap Forward
cmake -B build -S .
cmake --build build
./scripts/live_srs_forward_smoke.sh 'cvmmap://zed@/tmp/cvmmap'
The script defaults to:
CODEC=h264ENCODER_BACKEND=ffmpegENCODER_DEVICE=nvidiaRTMP_TRANSPORT=libavformatINGEST_MAX_FRAMES=120STREAM_NAME=<instance>_live, derived fromINPUT_URI
Useful overrides:
INPUT_URI='cvmmap://zed@/tmp/cvmmap' ./scripts/live_srs_forward_smoke.sh
./scripts/live_srs_forward_smoke.sh 'cvmmap://front_cam@/tmp/cvmmap' front_cam_smoke
ENCODER_BACKEND=auto ENCODER_DEVICE=software ./scripts/live_srs_forward_smoke.sh 'cvmmap://zed@/tmp/cvmmap'
STREAM_NAME=zed_test INGEST_MAX_FRAMES=300 ./scripts/live_srs_forward_smoke.sh 'cvmmap://zed@/tmp/cvmmap'
SRS_ROOT=~/Code/srs ./scripts/live_srs_forward_smoke.sh 'cvmmap://zed@/tmp/cvmmap'
What it does:
- Reuses a healthy local SRS instance if one is already listening on
127.0.0.1:1985 - Otherwise starts SRS from
~/Code/srs - Writes a temporary SRS config with
daemon offand a loweredmax_connections - Publishes the cvmmap stream to
rtmp://127.0.0.1/live/<stream> - Verifies the forwarded HTTP-FLV mount at
http://127.0.0.1:8080/live/<stream>.flv - Attempts to decode a short sample through
ffmpeg - Stores logs and probe output under
build/live_srs_forward_smoke_*
Expected success signals:
- The script exits
0 ffprobe_httpflv.logreports the expected codec and dimensionsstreamer.logshowsRTMP_OUTPUT_READYstreamer.logends withPIPELINE_METRICSandRTMP_OUTPUT_METRICS
The HTTP-FLV probe is the authoritative pass/fail signal. The optional ffmpeg decode sample is best-effort because a very short bounded publish can disappear before the second client attaches.
Manual Test: WHEP / WebRTC
SRS supports WHEP playback, and it is the better path when RTMP or HTTP-FLV playback feels too slow.
This repo includes a local SRS config copy at srs.local.conf. It enables:
- RTMP publish on
:1935 - HTTP API on
:1985 - HTTP player pages on
:8080 - WebRTC UDP on
:8000 rtmp_to_rtc on
Start SRS with that config:
cd ~/Code/srs/trunk
./objs/srs -t -c /home/crosstyan/Code/cvmmap-streamer/docs/smoke/srs.local.conf
./objs/srs -c /home/crosstyan/Code/cvmmap-streamer/docs/smoke/srs.local.conf
Publish from the streamer:
cd ~/Code/cvmmap-streamer
./build/cvmmap_streamer \
--run-mode pipeline \
--input-uri 'cvmmap://zed@/tmp/cvmmap' \
--codec h264 \
--encoder-backend ffmpeg \
--encoder-device nvidia \
--rtmp \
--rtmp-url 'rtmp://127.0.0.1/live/zed_live' \
--rtmp-transport libavformat
Open the WHEP player page in a browser:
- Player page:
http://127.0.0.1:8080/players/whep.html - WHEP API URL:
http://127.0.0.1:1985/rtc/v1/whep/?app=live&stream=zed_live
Notes:
- VLC is not the right client for WHEP. Use a browser or another WebRTC/WHEP-capable player.
- Keep the stream codec on
h264for browser compatibility. - If the browser runs on another host and SRS picks the wrong NIC, replace
candidate *;in srs.local.conf with the reachable host IP.
Artifacts
Both smoke scripts write evidence under build/:
srs-smoke.loglive_srs_forward_smoke_*/streamer.loglive_srs_forward_smoke_*/ffprobe_httpflv.loglive_srs_forward_smoke_*/ffmpeg_decode_httpflv.loglive_srs_forward_smoke_*/srs_api_streams.json