EasyDarwin开源流媒体服务器(www.easydarwin.org),拉转推是一个很有意义的功能,它可将一个独立的RTSP数据源“拉”到服务器,再通过转发协议转发给多个客户端,或者通过EasyDarwin的本地存储功能进行存储。国内大多摄像机都支持RTSP协议,通过拉转推可将第三方摄像机接入到EasyDarwin服务器。

拉转推需要服务器不仅实现服务端,还要实现客户端。这里我们介绍下拉流功能的实现。

RTSP的客户端拉流流程为:

  1. 发送RTSP命令
  2. 接收RTP媒体流

发送RTSP命令,又有如下几步:

  • OPTIONS 获取Server端支持的REQUEST请求集合
  • DESCRIBE 获取码流的SDP
  • SETUP 根据SDP信息,配置单个媒体流的传输方式
  • PLAY 启动播放
rtsp-client.goRTSPClientStartStop
requestStreamstreamrequestStream
go-sdpSETUPPLAYrequestStreamstreamstream
Content-LengthContent-Length

接收到的RTP数据包,我们在这里仅仅将其回调给上层处理。上层要维护一个队列,并将RTP数据包入队了。当有Client连接时,从队列里面去除RTP包,分发给Client,便实现了拉流转发功能。

资源链接

EasyDarwin官网:www.easydarwin.org
EasyDarwin Github:https://github.com/easydarwin