经过大量测试,网页显示视频流的实时性从高到低依次为:WebRTC > WS-FLV > FLV > HLS。播放器打开RTSP/RTMP视频流的实时性则由具体的播放器控制,例如缓存大小、缓存时间以及是否音视频同步等。
由于FLV拉流在同源地址下最多支持6路同时播放,因此,若希望实时性高且网页播放支持多路,WS-FLV是理想选择;而HLS的实时性最差。
此外,mediamtx推出的HLS/WebRTC流可以直接将地址复制到浏览器打开,无需依赖额外的JS播放器。
在Windows系统上,554端口可能被系统服务占用,建议将其修改为其他端口,例如5541。
同时支持RTSP/RTMP推拉流,拉流还支持HLS/WebRTC两种方式,其最近的V1.0版本还新增了SRT方式支持。它推出的HLS/WebRTC流可以直接嵌入iframe网页播放(通过查阅代码可知,流媒体服务器内部会返回一段支持HLS/WebRTC播放的网页代码),没有任何外部依赖。如果希望直接在网页中无依赖播放,强烈推荐使用mediamtx。
推荐指数:★★★★★
开源地址: https://github.com/bluenviron/mediamtx

图1:MediaMtx V1.0.0监控后台,支持RTP、HTTP、HLS等多种协议
LiveQing
仅支持RTMP推流,但支持RTMP/HLS/FLV/WS-FLV/WebRTC等多种格式拉流。它提供了一个网页后台管理界面,使用非常方便。其缺点是仅有一个月试用期,过期后需前往官网重新下载,过期验证机制被写死在程序中。如果你需要一个网页管理后台,可以推荐这个方案。
推荐指数:★★★★
官方地址: https://www.liveqing.com/

图2:LiveQing播放监控视频流(示例:幼儿园门口)

图3:LiveQing的视频播放界面,带有控制按钮

图4:LiveQing后台的直播流与推流地址配置界面
EasyDarwin
仅支持RTSP推拉流,默认端口为5541,不支持其他格式拉流。如果仅用于监控摄像头场景,它非常方便,且提供了一个网页管理后台,无过期限制可长期使用。其缺点是功能单一,只能在其后台查看视频流,或使用播放器播放。
推荐指数:★★
官网地址: https://www.easydarwin.org/
nginx-rtmp
仅支持RTMP推拉流,默认端口1935,不支持其他格式拉流,功能极其单一,不推荐使用。如果你对 Nginx 的流媒体扩展模块感兴趣,可以了解其他更全面的方案。
同时支持RTSP/RTMP推拉流,并且支持H.265的推拉流(要求推流端使用支持H.265的ffmpeg,拉流播放端也需支持H.265的播放器)。它支持多种格式拉流,拥有庞大的用户群体。
推荐指数:★★★★★
开源地址: https://github.com/ZLMediaKit/ZLMediaKit/

图5:ZLMediaKit运行时的监控视频界面与日志信息
srs
支持RTMP推流(早期版本支持RTSP推流,但后续版本中已移除)。它支持部分格式拉流,但不支持WS-FLV拉流,同样拥有众多使用者。
推荐指数:★★★★
开源地址: https://github.com/ossrs/srs

图6:srs服务器界面,左侧为访问日志,右侧为视频监控
同时支持RTSP/RTMP推拉流,也支持H.265推拉流。它由国内一位音视频服务器领域的大神编写,目前没有官网和主页。其最大优点是CPU占用率极低,经过了特殊优化(以部分内存为代价)。在同等推流环境下,25路视频仅占用约0.3%的CPU,而ZLMediaKit和srs则在3%左右,但后两者的内存占用极低。对CPU占用敏感的用户建议选择ABLMediaServer。
推荐指数:★★★★

图7:ABLMediaServer运行时控制台日志,显示端口绑定与网络连接状态
其他资源
- 国内开源地址: https://gitee.com/feiyangqingyun
- 国际开源地址: https://github.com/feiyangqingyun
选择合适的流媒体服务器是构建稳定视频服务的关键,不同的协议支持、性能表现和功能特性决定了其适用场景。希望这份对比能帮助你做出更明智的技术选型。如果你对 流媒体协议 或服务器部署有更多疑问,欢迎在 云栈社区 与更多开发者交流探讨。