SRS流媒体服务器之HTTP-FLV框架分析
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,这个思想在前面的文章中都要反复讲过。