SRS 6.0封版:GB28181 支持外部 SIP 服务

7月27日,随着最后一个功能合入,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

SRS 6.0封版:GB28181 支持外部 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。

./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,最终效果如下图所示。

SRS 6.0封版:GB28181 支持外部 SIP 服务

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集群能力等。

欢迎一起贡献。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论