# srs-env **Repository Path**: secondriver/srs-env ## Basic Information - **Project Name**: srs-env - **Description**: SRS enables one-click deployment, facilitating the rapid development of video streaming push and pull functions, as well as the setup of test environments. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-03 - **Last Updated**: 2026-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SRS Docker 部署说明 基于 Docker Compose 的 SRS 直播服务,经 Nginx 反代对外提供 HTTP / HTTPS 播放。 完整技术文章(架构、配置全文、OBS/FFmpeg 推流、工具下载):见 [docs/SRS流媒体服务搭建完整指南.md](docs/SRS流媒体服务搭建完整指南.md)。 相关说明: | 文档 | 内容 | |------|------| | [data/README.md](data/README.md) | 本地视频放置与命名 | | [tools/ingest/README.md](tools/ingest/README.md) | 新增一路循环推流(视频 / 脚本 / srs.conf) | | [tools/ffmpeg/README.md](tools/ffmpeg/README.md) | 容器内 Linux 静态 FFmpeg | ## 需求对照 | 需求 | 说明 | |------|------| | HTTP `32555` / HTTPS `32556` 自签证书 | 默认已配置;证书启动时按 `.env` 自动生成 | | 仅改 `.env` 即可换部署地址与端口 | 改后执行 `docker compose up -d` | | 播放路径 | 与 SRS 一致,无额外前缀(如 `/live/1.flv`) | ## 快速启动 ```bash # 1. 编辑配置(部署机 IP、端口) # Windows: 记事本打开 .env # Linux: vim .env # 2. 确保 ffmpeg / 推流脚本可执行(从 Windows 拷贝后常丢失 +x) chmod +x tools/ffmpeg/bin/ffmpeg tools/ffmpeg/bin/ffprobe tools/ingest/*.sh # 3. 启动 docker compose up -d # 4. 查看状态 docker compose ps docker logs srs --tail 50 docker logs srs-nginx --tail 50 ``` 视频文件放到 `data/`,需与 `conf/srs.conf` / `tools/ingest/*.sh` 中文件名一致。仓库默认仅配置 **一路**(`1.mp4` → `live/1`);追加第 2 路起见 [tools/ingest/README.md](tools/ingest/README.md)。 停止: ```bash docker compose down ``` ## 仅改 `.env` 换机 / 换端口 打开 `.env`: ```env # 对外 IP(WebRTC + 自签证书主 IP) CANDIDATE=192.168.20.170 # 证书额外 SAN IP(逗号分隔,可留空) SSL_EXTRA_IPS=192.168.30.200 # Nginx NGINX_HTTP_PORT=32555 NGINX_HTTPS_PORT=32556 # SRS 协议端口 RTMP_PORT=1935 WEBRTC_PORT=8000 ``` 然后重建: ```bash docker compose up -d ``` Nginx 启动时会根据 `CANDIDATE` / `SSL_EXTRA_IPS` **自动重签自签证书**,无需手改 `openssl.cnf`。 ## 访问地址 将下面的 `HOST` 换成 `.env` 里的 `CANDIDATE`(或实际访问 IP)。 ### HTTP(端口见 `NGINX_HTTP_PORT`,默认 32555) | 用途 | URL | |------|-----| | HTTP-FLV | `http://HOST:32555/live/1.flv` | | HLS | `http://HOST:32555/live/1.m3u8` | | 播放器 | `http://HOST:32555/players/srs_player.html` | | 控制台 | `http://HOST:32555/console/` | | API | `http://HOST:32555/api/v1/versions` | ### HTTPS(端口见 `NGINX_HTTPS_PORT`,默认 32556) | 用途 | URL | |------|-----| | HTTP-FLV | `https://HOST:32556/live/1.flv` | | HLS | `https://HOST:32556/live/1.m3u8` | | 播放器 | `https://HOST:32556/players/srs_player.html` | | API | `https://HOST:32556/api/v1/versions` | 自签证书浏览器会提示不安全,选择「继续访问」即可。默认本地循环流为 `live/1`;若已按文档追加多路,则对应 `live/2`、`live/3`…。 ### 其他协议(不经 Nginx) | 协议 | 地址 | |------|------| | RTMP | `rtmp://HOST:1935/live/1` | | WebRTC | 端口 `WEBRTC_PORT`(默认 8000,TCP/UDP) | ## 目录结构 ``` srs-env/ ├── .env # 部署地址与端口(主要改这里) ├── docker-compose.yml ├── README.md ├── docs/ │ └── SRS流媒体服务搭建完整指南.md ├── conf/srs.conf # SRS 配置 ├── data/ # 本地视频(ingest 输入,含 README.md) ├── nginx/ │ ├── conf.d/ # Nginx 反代 │ ├── ssl/ # 自签证书(启动自动生成) │ └── docker-entrypoint.d/ # 启动时按 env 生成证书 └── tools/ ├── ffmpeg/ # Linux 静态 ffmpeg(含 README.md) └── ingest/ # 循环推流脚本(默认 live1.sh,含 README.md) ``` ## 防火墙 需放行:`NGINX_HTTP_PORT`、`NGINX_HTTPS_PORT`、`RTMP_PORT`、`WEBRTC_PORT`(TCP+UDP)。 ## 常见问题 1. **`permission denied` 执行 ffmpeg**:从 Windows 拷贝后常无执行位。在部署目录执行: ```bash chmod +x tools/ffmpeg/bin/ffmpeg tools/ffmpeg/bin/ffprobe tools/ingest/*.sh docker compose up -d --force-recreate ``` 2. **HLS 播不出、FLV 可以**:优先用 FLV。 3. **HTTPS 打不开**:确认 `NGINX_HTTPS_PORT` 已映射,并在浏览器信任自签证书。 4. **换 IP 后 WebRTC 异常**:检查 `.env` 的 `CANDIDATE` 是否为客户端可达 IP,并已 `docker compose up -d`。 5. **无画面只有声音**:源片需能被转成 H.264+AAC(当前 ingest 脚本已转码)。