SRS流媒体服务器之HTTP-FLV框架分析

发布时间 2023-04-23 16:09:10作者: 泽良_小涛

SRS流媒体服务器之HTTP-FLV框架分析

链接:https://www.isolves.com/it/cxkf/kj/2021-03-25/37488.html

介绍的代码和现版本代码有出处,但对流程序的理解有相当的价值。简要笔记如下。

整体的框架

RTMP推流端-----》SRS流媒体服务器(建立SOURCE->生成Consumer->指定封装格式endoder=FLV) 《《--------------拉流客户端拉取HTTP-FLV

1.gdb ./objs/srs -c conf/http.flv.live.conf

b SrsLiveStream::SrsLiveStream

bt 可以查看流的来源

2.RTMP推流的时候根据url,创建对应的handler拉流的时候根据url,找到对应处理的handler。即url和handler是一一对应关系。

3.SRS流媒体服务器源码的重要函数和类说明

SrsLiveStream::do_serve_http:处理客户端的数据发送。

SrsHttpConn:表示每个http client或RTMP client都有这个连接。

SrsConsumer:每个SrsHttpConn都对应一个消费者SrsConsumer,对应RTMP或HTTP。关于SrsConsumer前面文章已经讲过,这里相当于中间数据的缓存。

SrsBufferCache:HTTP直播流编码器的缓存

SrsFlvStreamEncoder:将RTMP转成HTTP FLV流

SrsBufferWriter:将流直接写⼊到HTTP响应的数据中。

SrsLiveStream:HTTP直播流,将RTMP转成HTTP-FLV或者其他格式,其实际是handler SrsLiveEntry 直播⼊⼝,⽤来处理HTTP 直播流。

SrsHttpStreamServer:HTTP直播流服务,服务FLV/TS/MP3/AAC流的合成。

SrsHttpResponseWriter: 负责将数据发送给客户端本质调⽤SrsStSocket进⾏发送

SrsHttpServeMux:HTTP请求多路复⽤器,实际就是路由,⾥⾯记录了path以及对应handler。

4. rtmp推流的时候就会产生数据源,对应源码就是source。那http-flv client也是要从source里面拉取数据,也是要绑定一个consumer,这个思想在前面的文章中都要反复讲过。