news 2026/4/24 10:39:10

Windows平台SRS流媒体服务器Docker部署实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows平台SRS流媒体服务器Docker部署实战

1. 为什么选择Docker部署SRS流媒体服务器

在Windows平台上直接部署SRS流媒体服务器会遇到不少麻烦。SRS原本是为Linux环境设计的开源流媒体服务器,虽然理论上可以通过Cygwin等工具在Windows上运行,但实际会遇到各种兼容性问题。我刚开始尝试时,就遇到了编译失败、依赖缺失等问题,折腾了半天也没能成功运行。

这时候Docker就成了最佳解决方案。Docker通过在Windows上创建一个轻量级的Linux容器环境,完美避开了原生Windows的兼容性问题。实测下来,使用Docker部署SRS不仅成功率大大提高,还能保持与Linux原生环境完全一致的功能特性。另外,Docker的容器化部署还有以下优势:

  • 环境隔离:SRS运行在独立的容器中,不会污染主机环境
  • 快速部署:无需手动安装各种依赖,直接使用官方镜像
  • 版本管理:可以方便地切换不同版本的SRS
  • 资源控制:可以限制容器使用的CPU、内存等资源

2. 环境准备:Windows上的Docker运行环境

2.1 启用Hyper-V虚拟化

Docker Desktop for Windows依赖于Hyper-V虚拟化技术。在安装Docker之前,我们需要先确保Hyper-V已经启用。这里有个坑需要注意:启用Hyper-V后,VMware等第三方虚拟机软件可能无法正常工作。如果你同时需要使用其他虚拟机软件,可能需要考虑其他方案。

启用Hyper-V的具体步骤:

  1. 右键点击开始菜单,选择"应用和功能"
  2. 在右侧找到"程序和功能"
  3. 点击"启用或关闭Windows功能"
  4. 勾选"Hyper-V"选项
  5. 点击确定并重启电脑

也可以通过PowerShell快速启用:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

2.2 安装Docker Desktop

  1. 访问Docker官网下载Windows版本安装包
  2. 双击安装包,按照向导完成安装
  3. 安装完成后,Docker会自动启动
  4. 在命令行输入docker version验证安装是否成功

安装完成后建议进行以下配置:

  • 在Docker Desktop设置中调整资源分配(建议至少4GB内存)
  • 配置镜像加速器提升国内下载速度
  • 启用WSL 2后端以获得更好的性能

3. 获取并运行SRS Docker镜像

3.1 拉取SRS官方镜像

SRS官方提供了维护良好的Docker镜像,我们可以直接使用:

docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5

这个镜像是阿里云镜像仓库的国内加速版本,下载速度会比Docker Hub快很多。如果需要使用最新开发版,可以使用:dev标签。

3.2 运行SRS容器

下面是启动SRS容器的完整命令:

docker run -d --name srs \ -p 1935:1935 \ -p 1985:1985 \ -p 8080:8080 \ -p 8085:8085 \ -p 8000:8000/udp \ registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 \ ./objs/srs -c conf/docker.conf

这个命令做了以下几件事:

  • -d:让容器在后台运行
  • --name srs:给容器命名为srs
  • -p参数映射了SRS需要的所有端口:
    • 1935:RTMP协议端口
    • 1985:HTTP API端口
    • 8080:HTTP服务端口
    • 8085:HLS/HTTP-FLV端口
    • 8000:WebRTC使用的UDP端口

3.3 验证容器运行状态

运行以下命令检查容器状态:

docker ps -a

如果看到srs容器状态为"Up",说明运行成功。也可以通过日志查看运行情况:

docker logs srs

4. 配置与使用SRS服务器

4.1 基本配置调整

SRS的配置文件位于容器内的/usr/local/srs/conf/docker.conf。如果需要修改配置,可以通过以下步骤:

  1. 将配置文件复制到本地:
docker cp srs:/usr/local/srs/conf/docker.conf ./srs.conf
  1. 修改本地配置文件
  2. 将修改后的配置文件复制回容器:
docker cp ./srs.conf srs:/usr/local/srs/conf/docker.conf
  1. 重启容器使配置生效:
docker restart srs

4.2 测试推流与播放

RTMP推流测试

使用FFmpeg进行推流测试:

ffmpeg -re -i test.mp4 -c copy -f flv rtmp://localhost/live/stream

其中test.mp4是你本地的视频文件。

HTTP-FLV播放测试

可以使用VLC播放器打开以下地址:

http://localhost:8080/live/stream.flv

或者使用SRS自带的Web播放器:

http://localhost:8080/players/srs_player.html
HLS播放测试

HLS流地址为:

http://localhost:8080/live/stream.m3u8

5. 常见问题与解决方案

5.1 端口冲突问题

如果启动容器时遇到端口冲突错误,可以修改-p参数中的主机端口号。例如:

-p 11935:1935

这样就将主机的11935端口映射到容器的1935端口。

5.2 容器启动失败

如果容器启动后立即退出,可以通过查看日志定位问题:

docker logs srs

常见原因包括:

  • 配置文件语法错误
  • 端口被占用
  • 权限问题

5.3 性能调优建议

对于高并发场景,建议进行以下优化:

  • 调整Docker容器的资源限制
  • 修改SRS配置中的worker进程数
  • 启用TCP_NODELAY减少延迟
  • 根据网络状况调整GOP大小

6. 进阶使用技巧

6.1 使用Docker Compose管理服务

对于更复杂的部署场景,建议使用Docker Compose。创建一个docker-compose.yml文件:

version: '3' services: srs: image: registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 container_name: srs ports: - "1935:1935" - "1985:1985" - "8080:8080" - "8085:8085" - "8000:8000/udp" volumes: - ./srs_conf:/usr/local/srs/conf command: ["./objs/srs", "-c", "conf/docker.conf"] restart: unless-stopped

然后运行:

docker-compose up -d

6.2 持久化数据存储

如果需要持久化存储录像文件等数据,可以通过-v参数挂载卷:

-v /path/on/host:/usr/local/srs/objs/record

6.3 监控与日志收集

可以通过以下命令查看实时日志:

docker logs -f srs

也可以将日志导出到文件:

docker logs srs > srs.log

对于生产环境,建议配置ELK等日志收集系统。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 10:38:46

K8s Pod 网络通信故障排查

Kubernetes(K8s)作为容器编排领域的标杆,其网络模型一直是集群稳定性的核心。Pod作为最小调度单元,网络通信故障可能导致服务雪崩,但排查过程往往涉及多层面交织的问题。本文将深入浅出解析典型排查场景,帮…

作者头像 李华
网站建设 2026/4/24 10:38:05

Python的__enter__方法上下文建立与__exit__方法清理

Python中的上下文管理器通过__enter__和__exit__方法,为资源管理提供了优雅的解决方案。无论是文件操作、数据库连接还是线程锁,上下文管理器都能确保资源在使用后被正确释放,避免内存泄漏或资源竞争。本文将深入探讨这一机制的核心原理与实际…

作者头像 李华
网站建设 2026/4/24 10:37:22

3个数据洞察,让你从普通炉石玩家变成战略分析师

3个数据洞察,让你从普通炉石玩家变成战略分析师 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker 你是否曾经在炉石对战中感到"信息焦虑"&#xff1…

作者头像 李华
网站建设 2026/4/24 10:35:09

从零到一:RTX 4060 Ti显卡Windows系统下UNet-PyTorch环境搭建实战

1. 环境准备:从驱动检查到CUDA安装 刚拿到RTX 4060 Ti显卡时,我像大多数新手一样迫不及待想跑深度学习模型。但现实很快给我上了一课——环境配置才是真正的第一关。Windows系统下的环境搭建就像玩俄罗斯方块,版本对齐错一位就会全盘崩溃。 首…

作者头像 李华
网站建设 2026/4/24 10:35:09

实战:用Intel RealSense D455相机跑通ORB-SLAM3,从参数配置到实时建图

实战:用Intel RealSense D455相机跑通ORB-SLAM3,从参数配置到实时建图 在机器人导航、增强现实和三维重建领域,实时定位与地图构建(SLAM)技术正成为核心基础设施。而Intel RealSense D455深度相机凭借其优异的深度感知…

作者头像 李华
网站建设 2026/4/24 10:33:17

Mistral:以自主理念突围,抗衡美中巨头打造140亿美元AI帝国

【Mistral的自主愿景与市场契机】总部位于巴黎的Mistral,最初目标是打造顶级AI模型,与OpenAI和Anthropic竞争,可惜未实现。但很多企业不在意AI是否处于技术前沿,只要不是美国或中国造的就行。今年2月,法国头部AI企业Mi…

作者头像 李华