Skip to content

ossrs/srs-sip

Repository files navigation

SRS-SIP

Usage

Pre-requisites:

  • Go 1.20+ is installed
  • GOPATH/bin is in your PATH

Then run

git clone https://github.com/ossrs/srs-sip
cd srs-sip
./bootstrap.sh
mage

If you are on a Unix-like system, you can also run the following command.

make

Run the program:

./bin/srs-sip -sip-port 5060 -media-addr 127.0.0.1:1985 -api-port 2020 -http-server-port 8888
  • sip-port : the SIP port, this program listen on, for device register with gb28181
  • media-addr : the API address for SRS, typically on port 1985, used to send HTTP requests to "/gb/v1/publish"
  • api-port: The API server port, used to send HTTP requests, for example "/srs-sip/v1/channels"
  • http-server-port: The demo web server.

Access http://localhost:8888 in web browser.

Sequence

  1. 注册流程
sequenceDiagram
    Device ->> SRS-SIP : 1. Register
    SRS-SIP ->> Device : 2. 200 OK
Loading

暂时没有实现鉴权功能,敬请期待。

  1. 播放视频流程 Player、SRS-SIP、SRS Server和GB28181 Device的交互图如下:
sequenceDiagram
    Player ->> SRS-SIP : 1. Play Request(with id)
    SRS-SIP ->>  SRS : 2. Publish Request(with ssrc and id)
    SRS ->> SRS-SIP : 3. Response(with port)
    SRS-SIP ->>  Device : 4. Invite(with port)
    Device ->> SRS-SIP : 5. 200 OK
    SRS-SIP ->> Player : 6. 200 OK(with url)
    Device -->> SRS : Media Stream
    Player ->> SRS : 7. Play
    SRS -->> Player : Media Stream
    Player ->> SRS-SIP : 8. Stop Request
    SRS-SIP ->> SRS : 9. Unpublish Request
    SRS-SIP ->> Device : 10. Bye
Loading
  1. 通过SRS-SIP提供的API接口/srs-sip/v1/invite,Player主动发起播放请求,携带设备的通道ID
  2. SRS-SIP向SRS发起推流请求,携带SSRC和ID,SSRC是设备推流时RTP里的字段
  3. SRS响应推流请求,并返回收流端口。目前SRS仅支持TCP单端口模式,在配置文件stream_caster.listen中配置
  4. SRS-SIP通过GB28181协议向设备发起Invite请求,携带SRS的收流端口及SSRC
  5. 设备响应成功
  6. SRS-SIP响应成功,携带URL,用于播放
  7. Player通过返回的URL进行拉流播放
  8. Player停止播放
  9. SRS-SIP通知SRS停止收流
  10. SRS-SIP通过设备停止推流