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发送到客户端。

要搭建一个http-flv流媒体服务器,需要使用特定的软件和配置。HTTP-FLV是一种基于HTTP协议的流媒体传输协议,它可以实时传输FLV格式的音视频数据。以下是搭建http-flv流媒体服务器的步骤: 1. 选择合适的流媒体服务器软件。常见的流媒体服务器软件有Nginx、SRS和HLS等。这些软件都支持http-flv协议。 2. 下载并安装选择的流媒体服务器软件。具体的安装步骤可以参考官方文档。通常,安装过程只需要按照软件提供的指示进行即可。 3. 配置流媒体服务器。每个软件都有不同的配置文件,需要根据软件的要求进行相关配置。主要的配置包括监听端口、服务器地址、视频目录和日志等。 4. 添加FLV视频文件到流媒体服务器。将要传输的FLV视频文件放置到服务器的指定目录中。这样,流媒体服务器就可以提供该视频给客户端实时播放。 5. 启动流媒体服务器。执行流媒体服务器软件的启动命令,启动服务器。命令可能为nginx、./srs或service start等。 6. 验证流媒体服务器的工作状态。在浏览器中输入服务器的IP地址和HTTP-Flv端口号(例如http://192.168.1.100:8080),确认服务器能够正常工作,以及所添加的视频能够通过http-flv协议播放。 搭建一个http-flv流媒体服务器需要一定的技术基础,对于初学者来说可能有一定难度,但按照指引进行操作,可以成功完成搭建工作。通过http-flv流媒体服务器的搭建,您可以将FLV格式的音视频实时传输到支持http-flv协议的客户端,并进行在线播放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值