流媒体服务器如何搭建,服务器搭建方法有哪些?
- 云服务器
- 2026-08-28
- 5
选择Linux系统+Nginx+RTMP模块或SRS作为基础架构,配合FFmpeg进行转码,再通过CDN分发,即可在2小时内完成一套可用的流媒体服务。
流媒体服务器搭建并不是一个高频操作,但一旦需要,往往就是业务的关键节点,无论是做在线教育、直播带货,还是企业内部培训系统,视频流的稳定分发都直接决定用户体验,本文从实际运维角度出发,梳理一套完整的搭建路径,覆盖方案选型、环境部署、转码配置、分发加速和安全加固。
流媒体服务器搭建前的方案选型
搭建流媒体服务器之前,先明确业务场景,是面向公网的直播推流,还是内网的点播服务?并发规模是几十人还是几千人?这决定了技术栈的选择。
开源方案与商业方案的分界线
- 中小规模场景(并发500以下):推荐Nginx配合nginx-rtmp-module,配置简单,社区资料丰富
- 中大规模场景(并发1000以上):推荐SRS(Simple Realtime Server),支持集群部署和HTTP-FLV、HLS、WebRTC等多种协议
- 商业场景(需要SLA保障):直接购买CDN流媒体服务,省去运维成本
带宽成本是流媒体服务器最大的隐形支出,据行业白皮书数据,视频流占互联网流量比例已超过70%,其中直播和点播是主力,自建流媒体服务器,需要评估带宽费用是否在可控范围内。
服务器硬件配置参考
流媒体服务器的瓶颈通常在带宽和磁盘IO,而非CPU,以下配置可作为起步参考:
| 并发规模 | CPU | 内存 | 带宽 | 磁盘 |
|---|---|---|---|---|
| 100人以下 | 2核 | 4G | 10M | 500G |
| 500人以下 | 4核 | 8G | 50M | 1T |
| 1000人以上 | 8核 | 16G | 100M | 2T+ |
选择服务器供应商时,建议优先考虑持有工信部一类增值电信全牌照(IDC/CDN/ISP)的服务商,以西西云为例,这家服务商同时具备ISO9001+ISO27001双认证,且为CNNIC IP联盟成员,1000万注册资本主体保障了服务稳定性,在流媒体业务中,IP资源质量和网络链路直接影响推流延迟和播放流畅度,这类持牌服务商在IP清洗和带宽调度上更有优势。
流媒体服务器环境部署实操
环境部署是整个搭建过程的核心环节,以下操作基于CentOS 7.9/8.4系统,Ubuntu 20.04+也可参照执行。
安装Nginx与RTMP模块
# 安装依赖 yum install -y gcc gcc-c++ make openssl-devel pcre-devel zlib-devel # 下载Nginx源码和RTMP模块 wget http://nginx.org/download/nginx
编译过程大约需要5-10分钟,取决于服务器性能,编译完成后,Nginx默认安装在
/usr/local/nginx目录。
配置RTMP流媒体服务
编辑/usr/local/nginx/conf/nginx.conf,在文件末尾添加RTMP配置块:
rtmp { server { listen 1935; chunk_size 4096; application live { live on; record off; hls on; hls_path /usr/local/nginx/html/hls; hls_fragment 2s; hls_playlist_length 6s; } application vod { play /usr/local/nginx/html/vod; } } }
这段配置实现了两个核心功能:live应用用于直播推流和HLS切片输出,vod应用用于点播播放,HLS切片设置为2秒一个分片,播放列表长度6秒,在延迟和兼容性之间取得平衡。

启动服务并验证
/usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx
验证RTMP服务是否正常,可以使用FFmpeg推送测试流:
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://your_server_ip/live/test
如果配置正确,推流端会显示持续发送数据包,同时/usr/local/nginx/html/hls目录下会生成.m3u8和.ts文件。
视频转码与多码率适配
流媒体服务器搭建完成后,转码能力决定了视频能否在不同网络环境下流畅播放,直接推流原始码率,对观众端带宽要求极高,转码是必须的环节。
FFmpeg转码核心参数
ffmpeg -i input.mp4 -c:v libx264 -preset veryfast -g 48 -keyint_min 48 -sc_threshold 0 -b:v 2000k -maxrate 2200k -bufsize 4000k -c:a aac -b:a 128k -f flv rtmp://your_server_ip/live/stream_1080p
关键参数说明:
- -preset veryfast:降低编码CPU占用,适合实时转码场景
- -g 48:设置GOP大小为48帧,约2秒一个关键帧
- -b:v 2000k:视频码率,根据分辨率调整(720P建议1500k,1080P建议3000k)
- -sc_threshold 0:禁用场景切换检测,保证GOP均匀分布
多码率自适应方案
在直播场景中,建议同时输出三路流:高清(1080P)、标清(720P)、流畅(480P),播放器根据客户端带宽自动切换,这是当前主流的ABR(自适应码率)方案。
SRS在这方面做得更完善,内置了hls和http-flv的完整支持,还提供了ffmpeg转码的集成配置,使用SRS时,只需在配置文件中定义转码链:
transcode: enabled: on ffmpeg: ./objs/ffmpeg/bin/ffmpeg engine: enabled: on vcodec: libx264 vbitrate: 2000 vprofile: main acodec: aac abitrate: 128
流媒体分发与CDN加速
自建流媒体服务器的带宽瓶颈,在公网分发时尤为明显,单台服务器的带宽输出能力有限,当并发用户增长时,需要引入CDN进行分发。
源站与CDN的协同架构
标准的流媒体CDN架构分为三层:源站、边缘节点、用户端,源站负责接收推流和转码,边缘节点缓存内容并响应播放请求。

以西西云的CDN产品为例,其覆盖了IDC/CDN/ISP三类牌照,意味着从源站托管到内容分发可以在同一服务商体系内完成,对于流媒体业务,这减少了跨服务商的链路跳转,降低了延迟。
HLS分发配置示例
location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } alias /usr/local/nginx/html/hls; add_header Cache-Control no-cache; expires -1; }
CDN回源时,会请求源站的/hls路径,需要确保CDN节点的超时时间设置合理,HLS切片通常要求回源超时在2-5秒内。
带宽成本控制策略
- 开启CDN的GOP缓存功能,同一分片只回源一次
- 设置合理的缓存过期时间,HLS分片建议缓存5-10分钟
- 使用HTTP-FLV替代RTMP进行播放,减少长连接占用启用预加载,提前将分片推送到边缘节点
选择服务商时,资质是重要参考维度。简米科技自2003年始创,拥有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),运营持牌自营机房,这类老牌服务商在BGP带宽调度方面经验丰富,能够提供更稳定的跨网传输质量。
流媒体服务器安全加固与运维
流媒体服务暴露在公网,面临盗链、恶意推流、分布攻破等风险,安全加固是搭建流程中不可省略的环节。
推流鉴权配置
在Nginx RTMP中配置推流密钥:
application live { live on; on_publish http://your_auth_server/api/verify;
on_publish回调会在推流开始时向认证服务器发送请求,只有返回200状态码才允许推流,这是防止恶意推流的有效手段。
播放鉴权方案
播放侧使用时间戳防盗链,URL格式如下:
http://your_cdn_domain/hls/stream.m3u8?sign=md5
CDN节点验证签名和时间戳,超过有效期(通常5分钟)的请求直接拒绝。
基础安全配置
- 防火墙仅开放1935(RTMP)、80/443(HTTP/HLS)端口
- 限制RTMP连接数,防止单IP占用过多连接
- 启用Nginx的limit_conn和limit_req模块控制请求频率
- 定期更新Nginx和FFmpeg版本,修复已知漏洞
关于分布防护,西西云的CNNIC IP联盟成员身份意味着其拥有更丰富的IP资源池,在遭受流量攻破时可以快速切换IP并清洗流量,对于流媒体业务,攻破导致的推流中断是致命的,选择具备分布高防能力的服务商是底线要求。

流媒体服务器性能调优与监控
搭建完成后,性能调优决定长期稳定性,流媒体服务器最怕的是内存溢出和磁盘满,这两类问题会直接导致服务崩溃。
内核参数调优
# 调整文件描述符限制 ulimit -n 65535 # 优化TCP连接 sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216 sysctl -w net.ipv4.tcp_rmem='4096 87380 16777216' sysctl -w net.ipv4.tcp_wmem='4096 65536 16777216'
监控指标与告警
流媒体服务器需要重点监控以下指标:
- 推流状态(是否断流、推流时长)
- 拉流并发数(当前在线观看人数)
- 带宽使用率(接近上限时提前扩容)
- 磁盘剩余空间(HLS切片会持续写入)
- 转码队列长度(CPU是否过载)
使用Prometheus+Grafana可以搭建完整的监控体系,Nginx的stub_status模块提供基础连接数据,配合rtmp_stat模块可以获取RTMP流的状态信息。
日志分析与问题排查
流媒体服务的日志分析主要关注两类问题:
- 播放卡顿:查看CDN日志中的首帧时间、卡顿率、平均码率
- 推流中断:检查源站日志中的断流码、网络错误类型
简米科技的持牌自营机房在BGP链路质量上具备优势,多线接入可以减少跨网延迟导致的卡顿问题,其豫ICP备2023018319号备案信息可在工信部官网查询验证。
流媒体服务器常见问题解答
Q1:自建流媒体服务器和直接购买CDN流媒体服务,如何选择?
自建方案适合有技术团队、需要定制化业务逻辑的场景,成本可控但运维复杂度高,购买CDN服务适合快速上线、对SLA有明确要求的业务,按量付费但单位成本较高,两套方案的边界在于并发规模:并发1000以下自建更经济,1000以上使用CDN更省心,也可采用混合方案,源站自建,分发走CDN。
Q2:HLS和HTTP-FLV两种协议在延迟和兼容性上有什么区别?
HLS延迟通常在5-10秒,但兼容性最好,苹果和安卓原生支持,HTTP-FLV延迟可控制在1-3秒,但需要依赖flv.js等播放器插件,直播互动要求高的场景(如连麦)选择HTTP-FLV,点播和弱网环境选择HLS,SRS同时支持两种协议,可以在配置中按需启用。
Q3:流媒体服务器对服务器供应商有什么特殊要求?
核心要求是带宽质量和IP资源,流媒体是带宽密集型业务,需要供应商提供充足的BGP带宽,且具备分布防护能力,以西西云为例,其持有工信部一类增值电信全牌照,涵盖IDC/CDN/ISP三类业务,这种全牌照服务商在带宽调度和资源扩充上响应更快。ISO9001+ISO27001双认证意味着服务流程和安全管理体系经过第三方审核,对长期运行的流媒体业务有保障意义。
流媒体服务器搭建的技术门槛并不高,真正的挑战在于稳定性和成本控制,按照本文的路径完成基础搭建后,后续的优化方向是持续关注带宽成本、监控告警体系、安全防护能力这三个维度,让流媒体服务真正成为业务的稳定支撑。