Ubuntu 20.04下5分钟搞定SRS流媒体服务器:从编译到推流全流程

Ubuntu 20.04下5分钟搞定SRS流媒体服务器:从编译到推流全流程 Ubuntu 20.04极速部署SRS流媒体服务器实战指南在视频直播和实时通信需求爆发的今天搭建一个高性能的流媒体服务器已成为开发者的必备技能。SRSSimple Realtime Server作为一款轻量级、高性能的开源流媒体服务器凭借其出色的兼容性和稳定性正成为越来越多开发者的首选方案。本文将带你用最短的时间在Ubuntu 20.04系统上完成SRS服务器的部署、配置和测试全流程。1. 环境准备与基础配置在开始部署之前我们需要确保系统环境满足基本要求。Ubuntu 20.04 LTS作为长期支持版本提供了稳定的基础运行环境。建议使用至少2核CPU和4GB内存的配置以获得更好的流媒体处理性能。首先更新系统软件包至最新版本sudo apt update sudo apt upgrade -y安装必要的编译工具和依赖库sudo apt install -y build-essential git libssl-dev zlib1g-dev提示如果计划启用SRS的HLS或HTTP-FLV功能建议额外安装libxml2-dev和libxslt-dev库。验证GCC编译器版本建议7.4.0或更高gcc --version2. 源码获取与编译优化SRS项目采用Git进行版本管理我们可以直接从官方仓库获取最新源码。为了提高国内用户的下载速度这里使用Gitee镜像源git clone https://gitee.com/ossrs/srs.git --depth1进入项目主目录cd srs/trunkSRS提供了灵活的编译配置选项以下是最常用的编译参数组合./configure --with-ssl --with-hls --with-http-server --with-http-api注意--with-ssl参数启用HTTPS支持--with-hls启用HLS流媒体协议支持根据实际需求调整。编译过程通常需要3-5分钟可以使用多核加速make -j$(nproc)常见编译问题及解决方案错误类型可能原因解决方法openssl缺失未安装开发库sudo apt install libssl-devzlib错误zlib开发包缺失sudo apt install zlib1g-devmake失败依赖不完整执行make clean后重新configure3. 服务器配置与启动SRS提供了多种配置文件模板位于conf/目录下。对于初次使用者推荐使用srs.conf基础配置cp conf/srs.conf conf/my_srs.conf编辑配置文件以启用基本功能listen 1935; max_connections 1000; http_server { enabled on; listen 8080; dir ./objs/nginx/html; } http_api { enabled on; listen 1985; }启动SRS服务器./objs/srs -c conf/my_srs.conf验证服务器状态curl http://localhost:1985/api/v1/versions预期输出应包含服务器版本信息{ code: 0, server: SRS/4.0.xx }设置系统服务实现开机自启sudo cp ./objs/srs /usr/local/bin/ sudo cp ./etc/init.d/srs /etc/init.d/ sudo update-rc.d srs defaults sudo service srs start4. 推流与播放全流程测试4.1 使用FFmpeg进行基础测试安装FFmpeg工具sudo apt install -y ffmpeg使用内置测试视频推流ffmpeg -re -i ./doc/source.200kbps.768x320.flv -c copy -f flv rtmp://localhost/live/test推流参数详解-re以原始帧率读取输入-i指定输入文件-c copy直接复制流不重新编码-f flv指定输出格式为FLV4.2 多协议播放测试SRS支持多种播放协议可通过不同URL格式访问同一流协议类型URL格式适用场景RTMPrtmp://localhost/live/test低延迟直播HTTP-FLVhttp://localhost:8080/live/test.flvWeb端播放HLShttp://localhost:8080/live/test.m3u8跨平台兼容4.3 OBS Studio专业推流配置对于实际直播场景OBS Studio是更专业的选择下载安装OBS Studiosudo apt install -y obs-studio配置流媒体服务器服务器rtmp://localhost/live流密钥自定义名称如obs_stream视频编码建议分辨率1920x1080或1280x720码率2500-4000kbps根据网络条件调整帧率25或30fps4.4 性能监控与优化通过HTTP API获取服务器状态curl http://localhost:1985/api/v1/summaries关键性能指标解读connections: 当前连接数accept: 接受的连接总数bytes_in/out: 网络吞吐量streams: 活跃流数量对于高并发场景可调整以下参数worker_processes 4; worker_cpu_affinity auto; keepalive_timeout 60s;5. 高级功能与生产环境建议5.1 安全加固措施启用鉴权功能修改配置文件vhost __defaultVhost__ { security { enabled on; allow publish 127.0.0.1; deny publish all; } }HTTPS配置示例http_server { enabled on; listen 443; ssl on; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; }5.2 集群与负载均衡对于大规模部署可配置边缘服务器vhost __defaultVhost__ { cluster { mode remote; origin 127.0.0.1:1935; } }5.3 录制与转码功能启用直播录制vhost __defaultVhost__ { dvr { enabled on; dvr_path ./objs/nginx/html/[app]/[stream]/[timestamp].flv; } }配置实时转码vhost __defaultVhost__ { transcode { enabled on; ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine ff { enabled on; vcodec libx264; vbitrate 500; vfps 25; vwidth 640; vheight 360; acodec libfdk_aac; abitrate 64; output rtmp://localhost/[app]?vhost[vhost]/[stream]_[engine]; } } }5.4 监控与日志分析日志文件默认位于./objs/srs.log可通过以下命令实时查看tail -f ./objs/srs.log配置日志轮转sudo cp ./etc/logrotate.d/srs /etc/logrotate.d/集成Prometheus监控http_api { enabled on; listen 1985; raw_api { enabled on; allow_cors on; } }6. 常见问题速查手册在实际部署过程中可能会遇到以下典型问题Q1推流成功但无法播放检查防火墙设置sudo ufw allow 1935/tcp验证SRS进程状态ps aux | grep srs查看错误日志grep error ./objs/srs.logQ2高并发下服务器负载过高优化编码参数降低码率启用边缘服务器分担负载调整系统限制ulimit -n 65535Q3HLS延迟过大减少切片时长hls_fragment 2s启用低延迟模式hls_ts_floor off使用HTTP长轮询hls_acodec aacQ4OBS推流出现卡顿检查网络带宽iperf3 -c server_ip降低OBS输出分辨率使用硬件编码NVIDIA NVENC/Intel QSV对于更复杂的问题可以通过以下命令收集调试信息./etc/init.d/srs status netstat -tulnp | grep srs strace -p $(pgrep srs) -o srs_strace.log在最近的一个电商直播项目中我们使用上述配置成功支撑了峰值5000并发的直播场景。关键发现是合理调整HLS切片参数可以显著降低延迟同时保持播放流畅性。另一个实用技巧是在边缘节点启用内存缓存减少回源压力。