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的具体步骤右键点击开始菜单选择应用和功能在右侧找到程序和功能点击启用或关闭Windows功能勾选Hyper-V选项点击确定并重启电脑也可以通过PowerShell快速启用Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All2.2 安装Docker Desktop访问Docker官网下载Windows版本安装包双击安装包按照向导完成安装安装完成后Docker会自动启动在命令行输入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需要的所有端口1935RTMP协议端口1985HTTP API端口8080HTTP服务端口8085HLS/HTTP-FLV端口8000WebRTC使用的UDP端口3.3 验证容器运行状态运行以下命令检查容器状态docker ps -a如果看到srs容器状态为Up说明运行成功。也可以通过日志查看运行情况docker logs srs4. 配置与使用SRS服务器4.1 基本配置调整SRS的配置文件位于容器内的/usr/local/srs/conf/docker.conf。如果需要修改配置可以通过以下步骤将配置文件复制到本地docker cp srs:/usr/local/srs/conf/docker.conf ./srs.conf修改本地配置文件将修改后的配置文件复制回容器docker cp ./srs.conf srs:/usr/local/srs/conf/docker.conf重启容器使配置生效docker restart srs4.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.htmlHLS播放测试HLS流地址为http://localhost:8080/live/stream.m3u85. 常见问题与解决方案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 -d6.2 持久化数据存储如果需要持久化存储录像文件等数据可以通过-v参数挂载卷-v /path/on/host:/usr/local/srs/objs/record6.3 监控与日志收集可以通过以下命令查看实时日志docker logs -f srs也可以将日志导出到文件docker logs srs srs.log对于生产环境建议配置ELK等日志收集系统。