srs的http-flv拉流源码源码解析

http-flv的主要处理逻辑在srs_app_http_conn.cpp,srs_app_http_stream.cpp,srs_http_stack.cpp文件zhong,http-flv拉流请求处理是从接受http请求开始的,客户端发起的拉流请求在SrsServer::accept_client函数中接受为独立的SrsResponseOnlyHttpConn连接,在连接线程中响应http-flv请求,如下图所示。


srs中的http服务功能集中在SrsHttpServer类中,上图传入的参数http_server为http请求处理的入口。在SrsResponseOnlyHttpConn连接线程中SrsHttpConn::process_request中调用http_mux->serve_http(w, r)函数进入SrsHttpServer类的处理中,在SrsHttpServer::serve_http函数中会区分http请求的类型为http流还是静态http请求,如下图所示,http-flv进入http_stream->mux.serve_http(w, r)函数中。


上图http_stream是SrsHttpStreamServer类对象,是实际实现http-flv处理的类,SrsHttpStreamServer类和SrsHttpServeMux类相互依赖,SrsHttpServeMux是http各种类型请求的总处理类,通过 类成员std::map<std::string, ISrsHttpHandler*> vhosts中的handler对象来处理,这些对象继承自抽象类ISrsHttpHandler,分别实现了不同类型的http请求处理,比如重定向,no-found,http-flv等。

针对http-flv流的处理,SrsHttpStreamServer::http_mount函数中调用mux.handle(mount, entry->stream)将SrsLiveStream类(继承自ISrsHttpHandler)对象传入SrsHttpServeMux中,具体发送音视频流的实现在SrsLiveStream::serve_http函数中,该函数中调用source->create_consumer创建一个rtmp流接收对象,沿用的是rtmp拉流的处理,然后通过SrsConsumer中取流转换成http-flv发送到客户端。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值