SRS Support
by @winlinvip
Answer SRS (Simple Realtime Server) questions for users and operators — protocols, configuration, codecs, ecosystem tools, deployment, and troubleshooting. U...
clawhub install srs-support📖 About This Skill
name: srs-support description: Answer SRS (Simple Realtime Server) questions for users and operators — protocols, configuration, codecs, ecosystem tools, deployment, and troubleshooting. Use when anyone asks about SRS features, how SRS works, supported protocols (RTMP, SRT, WebRTC/WHIP/WHEP, HLS, DASH, HTTP-FLV, RTSP, GB28181), codec support, transmuxing, transcoding, configuration, performance, or the SRS ecosystem (srs-bench). Also use when someone asks how to publish or play streams, compare SRS to other media servers, or troubleshoot streaming issues.
SRS Support
Help users deploy, configure, operate, monitor, and troubleshoot SRS — a simple, high-efficiency, real-time media server.
This skill is for operators, users, and DevOps — answering questions about using SRS, not changing its code.
Scope:
Out of scope:
Workflow
Follow these three steps in order for every question.
Step 1: Setup
All files are in the current working directory. Find everything from here — no discovery logic needed.
Available directories: trunk/, cmd/, internal/, cmake/, docs/, memory/
All AI tools — OpenClaw, Codex, Claude Code, Kiro CLI — see the same relative paths.
Step 2: Load Knowledge
Load knowledge in layers. Start minimal, expand only if needed.
Layer 1 — Always load:
memory/srs-overview.md — covers protocols, codecs, transmuxing, configuration, features, ecosystem, performance. This answers most general questions.Layer 2 — Load the relevant doc file(s) based on the question topic:
Use this mapping to decide which doc file to load. Only load what's relevant — don't load all of them.
| Topic | Doc file(s) to load |
|---|---|
| RTMP config, tuning, RTMPS | trunk/3rdparty/srs-docs/doc/rtmp.md |
| HLS config, latency, encryption, fMP4 | trunk/3rdparty/srs-docs/doc/hls.md |
| WebRTC setup, candidate, connection issues | trunk/3rdparty/srs-docs/doc/webrtc.md |
| HTTP-FLV, WebSocket FLV | trunk/3rdparty/srs-docs/doc/flv.md |
| SRT config, streamid, latency modes | trunk/3rdparty/srs-docs/doc/srt.md |
| RTSP playback | trunk/3rdparty/srs-docs/doc/rtsp.md |
| HEVC/H.265 protocol support | trunk/3rdparty/srs-docs/doc/hevc.md |
| DVR, recording to file | trunk/3rdparty/srs-docs/doc/dvr.md |
| HTTP callbacks, authentication | trunk/3rdparty/srs-docs/doc/http-callback.md |
| IP allow/deny, access control | trunk/3rdparty/srs-docs/doc/security.md |
| HTTP API, stream monitoring | trunk/3rdparty/srs-docs/doc/http-api.md |
| Prometheus, Grafana, metrics | trunk/3rdparty/srs-docs/doc/exporter.md |
| Ports, firewall, resource planning | trunk/3rdparty/srs-docs/doc/resource.md |
| Embedded HTTP server, reverse proxy | trunk/3rdparty/srs-docs/doc/http-server.md |
| Nginx for HLS/DASH distribution | trunk/3rdparty/srs-docs/doc/nginx-for-hls.md |
| Edge server, CDN clustering | trunk/3rdparty/srs-docs/doc/edge.md |
| Origin cluster, proxy server | trunk/3rdparty/srs-docs/doc/origin-cluster.md |
| Low latency tuning | trunk/3rdparty/srs-docs/doc/low-latency.md |
| Performance profiling, benchmarks | trunk/3rdparty/srs-docs/doc/performance.md |
| Ingest external streams | trunk/3rdparty/srs-docs/doc/ingest.md |
| Forward to other servers | trunk/3rdparty/srs-docs/doc/forward.md |
| FFmpeg transcoding | trunk/3rdparty/srs-docs/doc/ffmpeg.md |
| Snapshots, thumbnails | trunk/3rdparty/srs-docs/doc/snapshot.md |
| Getting started with Docker | trunk/3rdparty/srs-docs/doc/getting-started.md |
| Building from source | trunk/3rdparty/srs-docs/doc/getting-started-build.md |
Layer 3 — Last resort (if you need source code to answer):
memory/srs-codebase-map.md — load the entire file (do not truncate or read partial content). Then: reason about which module/files are relevant to the question based on the map's descriptions, and search only those specific files. DO NOT grep broadly (e.g., trunk/src/ or the repository root). The map exists so you can go directly to the right 2-3 files instead of scanning the whole tree.Step 3: Answer by Topic
Classify the question into one of the topics below, then apply that topic's strategy. If a question spans multiple topics, combine the relevant strategies.
Answering rules (apply to all topics):
trunk/doc/source.flv test file for publish examples (it ships with the repo)Protocol Questions
Codec Questions
Configuration Questions
trunk/conf/full.conf as the complete configuration referencetrunk/conf/console.conf for local testingDeployment & Getting Started
cd trunk && ./configure && maketrunk/conf/docker.conf and load getting-started.mdArchitecture Questions
Performance Questions
Comparison Questions
Ecosystem Questions
Step 4: Troubleshooting
When the user reports a problem ("it's not working", "stream won't play", "high latency", etc.), follow this troubleshooting strategy.
Gather information first — ask the user if not provided:
curl http://localhost:1985/api/v1/versions)SRS diagnostic tools:
curl http://localhost:1985/api/v1/streams. Check clients: curl http://localhost:1985/api/v1/clients. Check server info: curl http://localhost:1985/api/v1/summaries. Load the http-api.md doc for full API reference.trunk/objs/srs.log or console output.exporter.md for setup.Common failure patterns and solutions:
*WebRTC won't connect from remote browser:*
candidate in rtc_server must be set to the server's public IP, not 127.0.0.1 or a private IP. Load webrtc.md for details.getUserMedia.curl and nc to verify connectivity (see "Connection Failures" section in webrtc.md).*HLS latency is too high (20-30 seconds):*
hls_fragment (e.g., 2s), decrease hls_window (e.g., 10s), and ensure the encoder's GOP/keyframe interval matches the fragment duration.hls.md and low-latency.md for config details.*Stream plays fine in one protocol but not another:*
rtmp_to_rtc on for RTMP-to-WebRTC, srt_to_rtmp on for SRT-to-RTMP.*VLC shows high latency even with low-latency protocols:*
*Stream not found / no playback:*
curl http://localhost:1985/api/v1/streams*SRS behind Nginx/reverse proxy — streams don't work:*
http-server.md for reverse proxy config examples (Nginx, Caddy)*Connection limit reached:*
max_connections in config (default varies by version)curl http://localhost:1985/api/v1/summaries*Ports and firewall:*
resource.md for the full port reference