一. 基本配置和功能比较
| 选型维度 | SRS | ZLMedia | EasyDarwin |
|---|---|---|---|
| 功能满足度 | 支持网络设备摄像头接入,支持RTSP,RPMP,GB28181协议接入。并提供了RestFul API提供给外部调用。 | 支持网络设备摄像头接入,支持RTSP,RPMP,GB28181协议接入。提供了RestFul API提供给外部调用。 | 支持RTSP,RTMP协议接入。提供了可配置的前端界面,但没有API接口文档。 |
| 社区活跃度 | 最佳,github上issue未解决/总数比例(281/1800),star数14.1K,有相应的群可以讨论技术问题。 | 佳,github上issue未解决/总数比例(23/850),star数4k。 | 一般,github上issue未解决/总数比例(89/200) |
| 版本维护 | 佳,一直在按照开源计划持续更新 | 佳,一直在按照开源计划持续更新 | 差,两年没有进行更新 |
| 文档 | github wiki形式提供,根据版本进行文档迭代,文档较全 | github wiki形式提供,文档较全 | 文档基本上只有Readme |
| 授权 | 开源 | 开源 | 开源 |
| 学习成本 | 基于C++进行开发,之前项目中已进入应用,在使用方面可以迅速上手。 | 基于C++进行开发,需要对照文档进行功能使用。 | 基于Golang进行开发,需要对照文档进行功能使用。 |
| 集群支持 | 支持集群 | 支持集群 | 不支持集群 |
| 商业维护机构 | BAT等在职开发人员开源,无商业维护机构 | 流媒体服务爱好者开源,无商业维护机构 | 项目开源,有商业维护机构提供技术支持 |
| 成功案例 | 大疆无人机,其他中小型公司 | 百度,其他中小型公司 | 暂未找到 |
| 部署难度 | 可docker部署,docker内置各种库,并可直接使用。不使用docker时,需要进行编译和上层库依赖的编译,比较繁琐;文档齐全,部署比较简单。 | 无法进行docker部署,需要进行编译和上层库依赖的编译,比较繁琐;文档齐全,部署难度适中。 | 无法进行docker部署,无需编译,下载releases包解压即可用。 |
二. 环境准备
三个开源流媒体服务器,两流网络摄像头OBS推流(两个rtsp流,一个rtmp流),视频流信息如下:

网络摄像头
流地址:
枪机: rtsp://admin:sd123456@192.168.35.67:554/h265/ch33/main/av_stream
球机: rtsp://admin:sd123456@192.168.35.3:554/h265/ch33/main/av_stream
三. 功能满足度
经过初步调研,基本具体的功能满足度结果如下:
| 功能满足度 | SRS | ZLMedia | EasyDarwin |
|---|---|---|---|
| OpenAPI | 提供了SRS服务器状态查询和基本的配置文件修改(API概述) | 提供了ZLMedia服务器状态查询和音视频流操作的API(功能较全 API概述) | 在界面中存在API文档 |
| 接入视频网络设备方式 | 可通过FFmpeg推流去接摄像头(命令行方式),也可通过ingest方式接入(在配置文件中配置好数据流和输出流)。ingest接入方式比较理想但是存在无法增量添加设备的问题。 | 可通过FFmpeg推流去接摄像头(命令行方式),也可通过API接口调用的方式去接入(填入输入流和输出流)方式接入。HTTP接口接入设备功能便捷。 | 通过界面配置接入,接入设备便捷。但是只可以将RTSP转为RTSP流(只能通过IE浏览器配合插件使用),不符合业务需求,淘汰。 |
| 视频流稳定性 | (1)通过命令行推流方式,比较稳定,但是要显式维持一个线程。 (2)通过ingest方式接入设备需要预先配置好设备。启动服务器后即可通过播放器拉流。 |
(1)通过命令行推流方式,比较稳定,但是要显式维持一个线程。 (2)httpAPI方式便捷,但是服务器本身对于该功能优化不到位,经常出现花屏的情况,非常影响观看体验。(经过检查发现转码时添加了很多多余的参数,推测将其删除之后应该就可以了) |
视频很稳定(得益于协议没有转换) |
| 浏览器支持 | 支持rtsp,rtmp,http-flv,hls,rtp,webrtc等格式拉流。考虑到flash的废弃,不能使用rtmp直接播放,所以使用了http server进行了hls分发,功能正常。 | 支持rtsp,rtmp,http-flv,hls,rtp等格式拉流。服务器已自动转换流为hls,rtmp,flv等格式,功能正常。 | 只可转换为rtsp流,需要配合插件在IE上播放。 |
四. 视频流展示
SRS:
摄像头数据流:


基本还原了网络摄像头的原画面效果
本地使用OBS推流:

功能正常
ZLMedia
摄像头数据流:

画面完全模糊,看不到东西
本地采用OBS推流:

功能正常
五. 针对具体功能的拓展:
SRS 手动重写配置文件,并调用reload方法实现摄像头快速接入。
采用nginxParser工具解析conf文件,并按照配置写入新的采集流,覆盖写入文件,并reload服务器。 结果: 新的摄像头可以实现无缝接入
六. 选型结果
综上所述,选用SRS作为视频网关的流媒体服务器。