概述
srs拉流的步骤前面几步和推流差不多,就不再赘述了。这边直接从playing函数调用开始开始讲起。srs推流的流程
- 在connect和create stream完毕后调用palying用于开始拉流。值得一提的是,在集群模式下,如果源站没有流这边会去判断别的源站是否有流。
- 在play的时候会开启新协程,SrsQueueRecvThread用于接受Message,处理对应的Message。
- 旧协程会从consumer队列中消费推流协程生产的Message,将它发送给拉流端。
开始play流程
在playing函数中,会启动一个新协程专门用来接受Message并且处理对饮的流程。旧协程会执行do_playing用于消费Message队列,往对端发送数据。
srs_error_t SrsRtmpConn::playing(SrsSource* source)
{
if (!info->edge && _srs_config->get_vhost_origin_cluster(req->vhost) && source->inactive())