SRS 6封版:GB支持外部SIP服务

2024-07-30 20:17:19 浏览数 (2)

今天,随着最后一个功能合入,SRS 6.0正式封版了。这个功能是SRS 6.0最后一个大功能:GB28181支持外部SIP服务。

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服务器仅实现了简单的RegisterInvite指令,而要实现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。

代码语言:javascript复制
./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集群能力等。

欢迎一起贡献。

0 人点赞