SRS(Simple Realtime Server),自我开始做音视频行业开始,就有人力推给我的一个开源库,虽然我到现在还是音频领域的入门出徘徊,但也积攒了一些对srs的使用经验。
SRS通过实现RTMP协议来支持流媒体服务。当客户端(如播放器或推流器)通过RTMP协议与SRS服务器建立连接后,SRS会处理客户端发送的流媒体数据,并根据需要进行转发、录制或转码等操作。RTMP在SRS中的主要应用包括: 推流:客户端通过RTMP协议将音视频流推送到SRS服务器。 拉流:客户端通过RTMP协议从SRS服务器拉取音视频流进...
#3 0x000000000047dc7d in SrsRtmpServer::expect_message<SrsConnectAppPacket> (this=0xac1250, pmsg=0xadb670, ppacket=0xadb678) at src/protocol/srs_rtmp_stack.hpp:776 #4 0x000000000046df7b in SrsRtmpServer::connect_app (this=0xac1250, req=0xacab30) at src/protocol/srs_rtmp_stack.cpp:23...
int SrsRtmpConn::do_cycle() { int ret = ERROR_SUCCESS; srs_trace("RTMP client ip=%s", ip.c_str()); rtmp->set_recv_timeout(SRS_CONSTS_RTMP_RECV_TIMEOUT_US); rtmp->set_send_timeout(SRS_CONSTS_RTMP_SEND_TIMEOUT_US); //1、rtmp握手 if ((ret = rtmp->handshake()) != ERROR_...
1、轻量级,代码结构清楚,目前SRS3.0代码8万行左右,但几乎满足直播业务的所有要求。 2、SRS采用State Threads,支持高并发量,高性能。 3、SRS支持rtmp和hls,满足PC和移动直播要求。 4、SRS支持集群部署。小集群Forward,大集群edge。 代码分析可分为两个阶段: ...
SRS(Simple Realtime Streaming Server)是一款开源的流媒体服务器软件,它支持RTMP(Real-Time Messaging Protocol)等多种流媒体协议,适用于直播和点播等场景。以下是关于直播SRS RTMP的相关信息: SRS RTMP直播的基础概念 RTMP定义:RTMP是一种专为实时传输音视频数据而设计的协议,广泛应用于直播和点播服务。
SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181;本文以SRS4.0版本进行分析RTMP推拉流架构,SRS整体架构如下图(官网图片)所示: 有图可知SRS支持多种客户端以不同的媒流体协议进行推流、拉流,内部还包括了不同协议的转换,同时还支持SRS的集群。
首先会根据跟定的mount挂载到handle,handle指SrsLiveStream(HTTP直播流,将RTMP转成HTTP-FLV或者其他格式) 推流的时候根据url创建对应的handler,拉流的时候根据url找到对应处理的handler。 挂载handle代码分析 主代码在SrsHttpStreamServer::http_mount开始。 调用栈: SrsLiveStream::SrsLiveStream (this=0xb15ea0, s=...
if ((err = conn->start()) != srs_success) { return srs_error_wrap(err, "start conn coroutine"); } 1.2. 协议交互 连接建立成功后,下一步就要按照 RTMP 协议规范,完成 handshake、connect 等协议交互,当然还会有其他参数设置。 在SrsRtmpConn 的事件循环中,可以看到 handshake 和 connect 动作。因为...
std::string hls_error_strategy = _srs_config->get_hls_on_error(_req->vhost); if (srs_config_hls_is_on_error_ignore(hls_error_strategy)) { srs_warn("hls process video message failed, ignore and disable hls. ret=%d", ret);