搭建FLV流媒体服务器,推荐使用Nginx配合rtmp模块或SRS服务器,前者轻量适合点播,后者性能强劲适合直播。 下面从工具选择、环境准备、实操步骤和优化方案展开。
flv流媒体服务器搭建工具对比:Nginx vs SRS
选择哪个工具直接影响搭建效率和运维成本,目前主流方案有两套:Nginx + nginx-rtmp-module 和 SRS(Simple-Rtmp-Server),两者都支持FLV流媒体分发,但定位和配置差异明显。
| 对比项 | Nginx + rtmp模块 | SRS |
|---|---|---|
| 配置难度 | 依赖编译或模块安装,适合熟悉Nginx者 | 提供二进制包,配置文件更直观 |
| 性能 | 单机并发较高,但rtmp模块相对基础 | 内建集群、多进程,适合高并发 |
| 延迟 | 默认配置延迟中等,需调优 | 支持低延迟配置,可达毫秒级 |
| 功能扩展 | 支持RTMP、HLS,FLV需额外配置 | 原生支持RTMP、FLV、HLS、WebRTC等 |
| 适用场景 | 小型点播、内部测试 | 直播平台、大规模CDN分发 |
行业共识认为,若只是搭建一个内部使用的FLV点播服务器,Nginx配合rtmp模块足够;若面向公网直播且需要低延迟和高并发,SRS是更稳妥的选择。
nginx-rtmp模块搭建步骤
- 安装依赖
在Ubuntu或CentOS上执行:apt install -y build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev - 下载Nginx源码并编译
从nginx.org下载稳定版,解压后进入目录,添加rtmp模块:
./configure --add-module=../nginx-rtmp-module
make && make install - 配置rtmp服务
修改nginx.conf,添加rtmp块:rtmp { server { listen 1935; application live { live on; record off; flv on; } } }这里
flv on启用FLV流输出。 - 启动Nginx并验证
nginx启动后,使用ffmpeg推流:
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://your-ip/live/stream
拉流可使用VLC或ffplay:ffplay rtmp://your-ip/live/stream
srs服务器搭建步骤
- 下载SRS
从GitHub获取最新源码:git clone https://github.com/ossrs/srs - 编译安装
cd srs/trunk && ./configure && make
编译完成后,配置文件位于conf/目录。 - 配置FLV流
编辑conf/rtmp.conf,确保以下参数:listen 1935; vhost __defaultVhost__ { hls on; hls_path ./objs/nginx/html; http_stream { flv on; listen 8080; } }http_stream.flv开启HTTP-FLV输出,便于浏览器直接播放。 - 启动服务
./objs/srs -c conf/rtmp.conf
推流:ffmpeg -re -i input.mp4 -c copy -f flv rtmp://localhost/live/stream
拉流支持RTMP和HTTP-FLV:http://localhost:8080/live/stream.flv
flv流媒体服务器搭建本地环境与云服务器方案
选择本地还是云端,取决于你的使用场景和预算。本地搭建适合研发测试和内网分发,云服务器则适合公网服务,两者在硬件和成本上有明显差异。
本地搭建flv流媒体服务器硬件要求
- 处理器:双核以上即可,并发用户少时低功耗设备(如树莓派)也能运行。
- 内存:Nginx方案占用较低,512MB可用;SRS建议1GB以上。
- 存储:根据视频文件大小决定,SSD可提升热加载速度。
- 网络
:内网千兆以太网,外网需考虑上行带宽。
若本地仅用于验证,一台普通PC或虚拟机即可。多数情况下,开发者在本地用Nginx搭建后,再迁移至云服务器。
云服务器搭建flv流媒体服务器价格考量
云服务器成本主要看带宽和流量。FLV流媒体服务器搭建价格因服务商和配置差异较大,以简米云或酷番云为例,轻量应用服务器(2核2G,峰值带宽3Mbps)月费约50-80元,适合小规模测试,若需公网直播,应选择按流量计费,并配置CDN分发以降低带宽压力。业内专家指出,很多初创团队初期使用SRS自建服务器,后期再迁移至商业CDN,这是性价比最高的路径。
flv流媒体服务器搭建常见问题与优化
即使按照步骤配置,也常遇到推流失败、播放卡顿等问题,以下列出高频问题和优化方法。
-
推流后无法拉流
检查防火墙是否开放1935端口(RTMP)和8080端口(HTTP-FLV),本地测试可先用telnet验证端口通断,另外确认Nginx或SRS的worker进程权限。 -
延迟过高
FLV协议的延迟主要受缓存策略影响,Nginx rtmp模块中调整rtmp_auto_push on;和chunk_size 4096;,SRS可设置min_latency on;以及tcp_nodelay on;。近年来流媒体社区普遍采用GOP缓存和TWCC拥塞控制,但基础调优足以做到3-5秒延迟。 -
跨域播放问题
若使用HTTP-FLV在浏览器播放,需配置CORS,Nginx在http块添加:add_header Access-Control-Allow-Origin ; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';SRS默认开启CORS,无需额外设置。
-
FLV格式兼容性
虽然Flash已停用,但FLV封装在直播场景中仍被广泛使用。据统计,大部分现代播放器(如VLC、ffplay、flv.js)均支持FLV流,移动端建议使用HLS或WebRTC,但FLV配合flv.js依然可在浏览器正常工作。
优化建议:缓存与CDN集成
- 缓存策略:在Nginx内配置
proxy_cache或使用SRS的gop_cache,减少重复编码。 - CDN分发:将FLV流推到CDN节点(如简米云CDN的RTMP转HTTP-FLV),可大幅降低源站带宽压力,同时提升全球访问速度。
- 编码参数:推流时使用
-tune zerolatency或-preset ultrafast,并固定关键帧间隔(GOP)为2秒,便于低延迟播放。
Q&A:flv流媒体服务器搭建相关问题
现在FLV格式还有必要使用吗?
FLV封装在RTMP和HTTP-FLV直播流中依然常见,因为其结构简单、头部开销小,且广泛被浏览器端flv.js支持,虽然HLS和WebRTC在移动端更主流,但FLV在桌面端和内部系统仍是大比例选择。大多数流媒体服务器默认都支持FLV输出,只需要在配置中开启相应选项。
搭建FLV服务器需要公网IP吗?
本地测试不需要公网IP,内网即可,若需公网访问,云服务器自带公网IP,或使用内网穿透工具(如frp、ngrok)。但生产环境建议直接使用云服务器,并绑定域名,避免穿透带来的不稳定。
用什么工具测试推流是否成功?
推荐使用FFmpeg推流,ffplay或VLC播流,命令行测试最快:ffmpeg -f lavfi -i testsrc -f flv rtmp://localhost/live/test,然后ffplay rtmp://localhost/live/test,若控制台无报错且能播放,说明搭建成功,同时可观察Nginx或SRS的日志,确认连接和流状态无误。
FLV流媒体服务器搭建的核心在于选对工具并理解协议特性,Nginx+rtmp模块适合入门和轻量场景,SRS适合高并发和低延迟,无论本地测试还是云上部署,掌握上述步骤和优化手段,就能快速投产并稳定运行。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/510039.html



