SRS配置各个端口作用
本文介绍了SRS流媒体服务器的基本配置、端口功能及故障排查方法。1)提供最小srs.conf示例,包含RTMP(1935)、HTTP API(1985)、HTTP服务(8080)和WebRTC(8000/UDP)的基础配置;2)详解各端口用途:1935用于RTMP推/拉流,1985用于管理API,8080提供HTTP-FLV/HLS服务,8000用于WebRTC媒体传输;3)分析端口不通的影响:R
下面给出三部分内容:
- 一份最小可用的
srs.conf示例(ASCII,仅示例配置,放到conf/srs.conf后启动 SRS); - 各端口的作用说明 + 常用端口;
- 端口被阻断(不通)会导致的影响与排查建议(含常用检测命令与防火墙打开示例)。我也同时给出常见 Docker 端口映射示例以便参考。关键事实出处已标注。
1) Minimal srs.conf 示例
(把下面内容保存为 conf/srs.conf,启动时用 ./objs/srs -c conf/srs.conf 或对应的 Docker 运行命令。)
# minimal srs.conf
listen 1935;
max_connections 10000;
srs_log_tank console;
daemon off;
http_api {
enabled on;
listen 1985;
crossdomain on;
}
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
# WebRTC / RTC (media over UDP)
rtc_server {
enabled on;
listen 8000; # UDP port used by WebRTC media/ICE (default 8000)
# candidate is usually set to server public IP if needed
# candidate 1.2.3.4;
}
vhost __defaultVhost__ {
enabled on;
# simple hls/http-flv
hls {
enabled on;
hls_fragment 10;
hls_window 60;
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
# a simple publish/live app
application live {
enabled on;
live on;
}
}
注:这是最小演示配置;生产环境通常需要配置
security(鉴权)、https、forward、ingest、srt、gb28181等模块,或设置rtc_server.candidate为公网 IP / TURN 配置以保证 NAT 下可连通。官方文档有更多字段说明。 ossrs.net+1
2) 各端口作用 & 常用端口
下面列出 SRS 常见端口及用途(源自 SRS 文档与官方示例):
-
TCP 1935 — RTMP
RTMP 推流/拉流端口(OBS/FFmpeg 等推送到rtmp://server:1935/app/stream)。几乎所有 RTMP 客户端默认使用 1935。 ossrs.net -
TCP 1985 — HTTP API / management / control
SRS 的内置 HTTP API 与控制台监听端口(用于查看控制台、统计、发送控制请求等)。默认示例中通常是 1985。 ossrs.net -
TCP 8080 — HTTP server (HTTP-FLV / HLS / players / static files)
SRS 内嵌的 HTTP 服务端口,用于 HTTP-FLV、HLS 切片访问、播放器 demo 页面等(也常改为 80/443 或反向代理到这些端口)。 ossrs.net -
UDP 8000 — WebRTC / RTC media (ICE / RTP/DTLS over UDP)
SRS 在启用 WebRTC/RTC 时会监听 UDP(默认 8000)用于媒体传输、ICE/DTLS 等(有时也支持 TCP fallback)。 若 NAT/防火墙阻断 UDP,需要配置 TURN 或使用 TCP 传输。 ossrs.net+1 -
可选 HTTPS / 管理端口(示例)
-
TCP
8088可用于 HTTPS HTTP-FLV/HLS(如果你启用 HTTPS); -
TCP
1990有时用于 HTTPS API(可按需配置)。这类端口在不同部署中可自定义。 ossrs.net
-
-
其他协议:SRT、GB28181、MPEG-DASH 等模块会使用额外端口(依模块配置而定,见官方文档与 conf 模块说明)。 GitHub
Docker 常见映射示例(快速启动 SRS 时常见):
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 8000:8000/udp ossrs/srs:5
(这会把容器的 1935/1985/8080、以及 UDP 8000 映射到宿主机相同端口)。 blog.brightcoding.dev
3) 端口不通的影响(按端口分类说明)
下面列出当某端口被防火墙、网络策略或 NAT 阻断时会出现的典型问题和表现,帮助快速定位。
a) 如果 TCP 1935 (RTMP) 不通
-
影响:无法用 OBS/FFmpeg/其他 RTMP 客户端推流到服务器;也不能通过 RTMP 播放(如使用 RTMP 播放器)。
-
表现:推流端报连接超时、TCP 连接失败或 “could not connect to server” 类错误。SRS 日志不会显示推流连接。
-
解决方向:打开/映射 1935;在客户端尝试
telnet server 1935或Test-NetConnection -Port 1935。 ossrs.net
b) 如果 TCP 8080 (HTTP-FLV / HLS / Web UI) 不通
-
影响:网页播放器、HTTP-FLV 播放、HLS 切片访问、SRS 内置播放器 demo 和控制台静态页面无法访问。
-
表现:在浏览器访问
http://server:8080/players/...返回连接超时或拒绝;前端播放失败但 RTMP 推流仍可能正常。 -
解决方向:检查 HTTP 服务是否启动,防火墙是否允许 8080 或反向代理(nginx)是否正确转发。 ossrs.net
c) 如果 TCP 1985 (HTTP API / console) 不通
-
影响:不能访问 SRS 管理/统计 API(
/console、api endpoints),一些自动化管理或监控请求会失败。某些 WebRTC/信令路径也可能依赖 HTTP API。 -
表现:控制台页面不可达、API 请求超时,但基础流媒体传输(RTMP/HTTP-FLV)可能仍然可用。 ossrs.net
d) 如果 UDP 8000(WebRTC media) 不通
-
影响:WebRTC 的媒体通道 (RTP/ICE/DTLS over UDP) 无法建立 P2P 媒体流;浏览器端通常会失败在 ICE 协商阶段,出现 “NO_ICE_CANDIDATE” 或连接长时间处于 checking。
-
表现:浏览器显示无法建立媒体通道(但可能仍能建立信令连接),或需要强制使用 TURN(中继)才能传输媒体。
-
解决方向:开放 UDP 8000,或配置 TURN 服务器以便在 UDP 被阻断时使用 TCP/TLS 中继。注意 NAT/企业防火墙经常阻断 UDP。 ossrs.net+1
e) NAT / 双向连接与 TURN 的角色
-
即便端口在服务器侧打开,客户端如果处于严格 NAT/防火墙后面也可能看不到对端候选(no host/public candidate)。在这种情况下需要配置 TURN(中继)或使用公网 IP(candidate)/端口转发,保证ICE候选互通。 ossrs.net
4) 排查建议(命令与快速检测)
TCP 端口检测
- Linux:
# check listening
ss -ltnp | grep srs
# check from remote
telnet SERVER_IP 1935
# or
nc -vz SERVER_IP 1935
- Windows (PowerShell):
Test-NetConnection -ComputerName SERVER_IP -Port 1935
UDP 端口检测(更困难)
-
从 Linux 端尝试用
nc或nmap:# send UDP packet (requires listener) echo "ping" | nc -u -w1 SERVER_IP 8000 # nmap UDP scan nmap -sU -p 8000 SERVER_IP -
对于 WebRTC,优先查看浏览器
chrome://webrtc-internals,观察 ICE 状态、candidate 交换与 DTLS/ICE 错误(非常有用)。 ossrs.net
查看 SRS 日志
-
SRS 控制台日志或
objs/srs.log,以及 HTTP API 的/console页面(若 1985 可达)都能帮助定位连接 / ICE / DTLS 错误。 ossrs.net
防火墙打开示例
-
Windows (管理员 PowerShell):
-
New-NetFirewallRule -DisplayName "Allow SRS RTMP" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1935 New-NetFirewallRule -DisplayName "Allow SRS HTTP" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8080 New-NetFirewallRule -DisplayName "Allow SRS API" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1985 New-NetFirewallRule -DisplayName "Allow SRS RTC UDP" -Direction Inbound -Action Allow -Protocol UDP -LocalPort 8000 -
Linux (ufw):
-
sudo ufw allow 1935/tcp sudo ufw allow 8080/tcp sudo ufw allow 1985/tcp sudo ufw allow 8000/udp
5) 常见提示与建议
-
在内网或云环境下,确保同时开放 TCP(1935/1985/8080)和 UDP(8000)(如果需要 WebRTC)。官方示例在 Docker 启动里通常映射
-p 1935:1935 -p 8080:8080 -p 1985:1985 -p 8000:8000/udp。 blog.brightcoding.dev -
若客户端在严格 NAT / 企业网络下,WebRTC 可能需要 TURN 中继(否则 UDP 被拦截时无法直连)。务必在
rtc_server或前端配置合适的 ICE servers/candidates。 ossrs.net -
为生产环境考虑使用 HTTPS / WSS / TURN (TLS),并在前端把 HTTP(S) 与 WebSocket(S) 指向正确的端口以避免浏览器混合内容或被 CSP 限制。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)