Background
先看看SRS 6.0支持的主要功能:
- • HEVC:支持了RTMP、SRT、FLV、GB等协议的HEVC,HLS和RTC部分支持。
- • SmartPtr:支持有限的智能指针,支持Source清理,解决内存泄露问题。
- • GB28181:支持外部SIP服务,srs-sip支持完善的SIP协议。
其他SRS 6.0的重要更新包括:
- • HTTP-API:支持了HTTP Basic Authentication安全鉴权。
- • SRT:升级libsrt到v1.5.3。
- • HLS:支持kickoff播放的客户端。
- • SSL:支持OpenSSL 3。
- • RTC:支持FFmpeg原生的opus编解码。
- • Security:完善IP白名单,支持所有协议。
- • RTMP:支持丢弃无人机发送的多余的SEI问题。
- • Player:支持新的WHIP和WHEP播放器。
回顾下之前大版本的核心功能:
- • SRS5: 支持GB28181-2016协议。
- • SRS5:支持Prometheus Exporter标准。
- • SRS5:支持WHIP/WHEP等WebRTC协议。
- • SRS5:支持Apple Silicon M1、RISCV、Loongson、MIPS、Cygwin64等芯片和平台。
- • SRS5:支持Coroutine Native的SRT协议。
- • SRS5:支持动态转发,Dynamic Forward。
- • SRS4:支持X86、X64、ARM、AARCH64等芯片。
- • SRS4:WebRTC:支持AV1编解码。
- • SRS4:支持HTTPS API和Stream。
- • SRS4:支持WebRTC协议。
- • SRS3:支持logrotate能力。
- • SRS3:支持REUSEPORT能力。
- • SRS3:支持RTMP Origin Cluster功能。
- • SRS3:支持MPEG-DASH协议。
- • SRS2:支持HTTP-FLV、HTTP-TS等HTTP流。
- • SRS2:Security:支持IP白名单。
- • SRS2:支持HTTP API和HTTP Callback。
- • SRS2:支持Valgrind检测内存问题。
- • SRS1:支持RTMP Edge Cluster。
- • SRS1:支持DVR录制功能。
- • SRS1:支持RTMP和HLS协议。
- • SRS1:支持Ingest、Forward、Transcode功能。
实际上SRS 5.0已经支持了GB28181协议,不过只支持了内嵌的SIP服务,而不支持外部的SIP服务,这导致实际上很难把GB大规模应用起来。
目前SRS内置的SIP服务器仅实现了简单的Register
、Invite
指令,而要实现GB/T-28181的全部功能,势必会引入复杂的上层业务逻辑。因此,我们开发了一个独立的外置的SIP服务器。而SRS,只需开放几个简单的API接口,这样既保证了其媒体转发服务器的单一属性,又兼顾了与第三方SIP信令服务器对接的需求。
播放器请求SRS-SIP,SRS-SIP向SRS Server申请媒体端口,然后邀请GB28181 Device设备推流。设备推流到SRS后,播放器直接从SRS播放流。下面是几个组件的关系图,详细的交互时序图参考srs-sip
Note: 暂时没有实现鉴权功能,敬请期待。
Usage
摄像头上面的配置方法同上,仅需将SIP服务器地址从SRS改成SRS-SIP。
首先启动SRS,请确认版本为6.0.144
,使用配置conf/gb28181-without-sip.conf
,参考Usage。
./objs/srs -c conf/gb28181-without-sip.conf
然后启动SRS-SIP,参考srs-sip。
代码语言:javascript复制./bin/srs-sip -sip-port 5060 -media-addr 127.0.0.1:1985 -api-port 2020 -http-server-port 8888
- •
-sip-port
是SIP服务器的端口,默认是5060。GB摄像头和这个SIP服务器通信,完成设备注册等能力。 - •
-media-addr
是SRS的媒体服务器地址,SIP服务器返回这个地址给GB摄像头,GB摄像头推流到这个地址。 - •
-api-port
是SIP服务器的API端口,默认是2020。这个API是给Player和用户使用的,比如查询设备列表、要求摄像头推流等。 - •
-http-server-port
是SIP服务器的Web端口,默认是8888。这个HTTP服务器是提供网页的web服务器,用户通过网页访问摄像头。
启动GB28181设备,将SIP服务器地址改成SRS-SIP的地址,端口为5060。
现在,可以通过SRS-SIP内置的网页播放器测试 http://localhost:8888,最终效果如下图所示。
Next
GB外部SIP服务,意味着你完全可以使用自己的SIP服务,支持完善的SIP功能,在实际的应用场景中使用SRS完成GB系统的搭建,灵活扩展系统的能力。
随着SRS 6.0封版,我们正式开始SRS 6.0的版本发布流程,大概经过半年左右的稳定性提升,可以达到稳定版本要求。
同时,我们会创建6.0release的分支,这意味着develop分支正式进入SRS 7.0的新阶段了。预计SRS 7.0的功能包括:
- • 支持完善的Enhanced RTMP协议,包括AV1和Opus等新标准,以及HDR和RTMP 301等新协议。
- • 完善WebRTC协议,很快Chrome将支持HEVC,OBS要支持WHIP Simulcast,以及拥塞控制算法的优化。
- • 完善HLS和DASH协议,支持fMP4切片格式,支持LHLS和LLHLS等协议,提高DASH稳定性。
- • 改进State Threads,增强coroutine的能力,实现类似Go的WaitGroup和chan的能力,增强工具链。
- • 其他方向比如Apple VisionPro MV-HEVC,多线程,WebRTC集群能力等。
欢迎一起贡献。