下面给出三部分内容:

  • 一份最小可用的 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(鉴权)、httpsforwardingestsrtgb28181 等模块,或设置 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 限制。 

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐