SRS之SrsServer::cycle()】的更多相关文章

1. SrsServer 相关类定义 1.1 SrsServer 类定义 /** * SRS RTMP server, initialize and listen, * start connection service thread, destroy client. */ class SrsServer : virtual public ISrsReloadHandler , virtual public ISrsSourceHandler , virtual public IConnectio…
1. 综述 首先,推流直播的配置文件如下: # rtmp.conf listen 1935; max_connections 1000; daemon off; srs_log_tank console; vhost __defaultVhost__ { } 搭建的简陋直播步骤如下: 启动 srs:./obj/srs -c ./conf/rtmp.conf; 设置并开启 obs 推流,obs 的视频来源随便,可以直接是视频获取设备或本地文件,此外 obs 的设置如下图: 注:必须填 "流名称&q…
1. 综述 SRS 关于 HLS 的具体配置可见: HLS部署实例 SRS 关于 hls 的配置文件内容如下: listen 1935; max_connections 1000; daemon off; srs_log_tank console; vhost __defaultVhost__ { hls { enabled on; hls_fragment 10; hls_window 60; hls_path ./objs/nginx/html; hls_m3u8_file [app]/[s…
1. SrsRtmpConn::publishing int SrsRtmpConn::publishing(SrsSource* source) { int ret = ERROR_SUCCESS; /* 在配置文件中配置了 refer_publish 配置项才会进行 refer check */ if ((ret = refer->check(req->pageUrl, _srs_config->get_refer_pubish(req->vhost))) != ERROR_S…
本文分析的是 SRS 针对 rtmp 的端口建立的 tcp 线程.具体建立过程: SRS之监听端口的管理:RTMP RTMP 的 TCP 线程中各个类之间 handler 的关系图 1. RTMP之TCP线程:SrsThread::thread_fun void* SrsThread::thread_fun(void* arg) { SrsThread* obj = (SrsThread*)arg; srs_assert(obj); /* 进入线程主循环 */ obj->thread_cycle…
1. 综述 SRS 中使用了 State Threads 协程库,该库对信号的处理是将信号事件转换为 I/O 事件.主要做法是:对关注的信号设置同样地信号处理函数 sig_catcher(),该函数捕获信号,并将信号写入管道,然后由创建的信号线程 signal 不断循环读取该管道,读取到事件并做相应的处理. 2. 信号管理器之创建 信号管理器的定义是在 SrsServer 类下的: /** * SRS RTMP server, initialize and listen, * start con…
1. 监听端口管理的入口函数 监听端口的管理入口在 run_master 函数中,如下: int run_master() { ... if ((ret = _srs_server->listen()) != ERROR_SUCCESS) { return ret; } ... } 在 run_master 函数中,调用了 SrsServer 类的成员函数 listen: int SrsServer::listen() { int ret = ERROR_SUCCESS; if ((ret =…
************************************************************************************************************************************************* 注意:强烈建议使用srs3.0,srs2.0存在的问题(回调,跨域)等问题不需要修改源码,而且可以修改生成mp4视频. 回调: # SRS推流开始,结束 def live_publish(request):…
SrsPublishRecvThread.SrsRecvThread.SrsReusableThread2.SrsThread 之间的关系图 1. recv 线程函数:SrsThread::thread_fun void *SrsThread::thread_fun(void *arg) { SrsThread* obj = (SrsThread*)arg; srs_assert(obj); /* 进入线程循环 */ obj->thread_cycle(); // for valgrind to…
1. SrsRtmpConn::service_cycle 当服务器在 conn 线程的开始调用 connect_app 函数接收并解析客户端发送的 connect 消息后,调用该 service_cycle 函数开始服务客户端的具体请求. /** * when valid and connected to vhost/app, service the client. */ int SrsRtmpConn::service_cycle() { int ret = ERROR_SUCCESS; /…